Vai al contenuto

Posizionamento asse con acquisizione quota da encoder

Home Forum Programmazione IEC 61131 (LogicLab) Posizionamento asse con acquisizione quota da encoder

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #35594
    Sergio Bertana
    Amministratore del forum

    Ho aperto questo topic per soddisfare le richieste che ricevo da alcuni clienti in merito a suggerimenti su come affrontare applicazioni di posizionamento assi. Inizio con il dire che nel topic tratterò la gestione del posizionamento di un asse in loop aperto acquisendone la quota da un encoder incrementale connesso ad un modulo espansione I/O uscite relè. Il programma che ho realizzato (Eccone la stampa), gestisce un asse circolare, viene acquisito l’encoder incrementale collegato al motore prima del motoriduttore (Rapporto 10/1, 10 giri motore 1 giro tavola). Il cuore del programma è l’acquisizione della quota dall’encoder incrementale in impulsi ed il calcolo della quota tavola in gradi. Riporto la sequenza del codice ST che esegue queste operazioni.  EAcq(); (* Encoder acquisition *)  EOfs:=TO_INT(EAcq.EQuote-QteBf); (* Encoder offset (Pulses) *)  EQuote:=EQuote+TO_DINT(EOfs); (* Encoder quote (Pulses) *)  QteBf:=EAcq.EQuote; (* Quote buffer *)  AQuote:=(TO_REAL(EQuote)/2000.0)*360.0; (* Axle quote (Degree) *)A seguire una semplice macchina a stati (Gestita con lo statement CASE) che posiziona ciclicamente l’asse su una quota in avanti ed una quota indietro. Siccome è un posizionamento a loop aperto viene gestita una quota di anticipo arresto AAdvStop per recuperare lo spostamento del motore dovuto alla sua inerzia sull’arresto (Download progetto sorgente).

    #53861
    Tiziano
    Partecipante

    Sarebbe possibile realizzare lo stesso progetto con loop chiuso?

    #53953
    Sergio Bertana
    Amministratore del forum

    Certo è fattibile ma bisogna scriversi tutto l’algoritmo di controllo, non abbiamo FB specifici per chiudere il loop di posizionamento su assi.

    Quando occorre gestire assi in loop di spazio c’è sempre un motore con il suo driver, ed oggi tutti i moderni drivers sia per motori stepping  che per motori brushless hanno già al  loro interno tutta la gestione del loop di posizionamento. Quindi molto meglio dialogare con il driver in RS485 o CAN e lasciare il compito della regolazione al driver.

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Devi essere connesso per rispondere a questo topic.