Home › Forum › Programmazione IEC 61131 (LogicLab) › Posizionamento asse con acquisizione quota da encoder
- Questo topic ha 2 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 4 anni fa da Sergio Bertana.
-
AutorePost
-
Luglio 12, 2014 alle 8:08 am #35594Sergio BertanaAmministratore 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).
Marzo 16, 2020 alle 9:15 am #53861TizianoPartecipanteSarebbe possibile realizzare lo stesso progetto con loop chiuso?
Marzo 16, 2020 alle 9:18 am #53953Sergio BertanaAmministratore del forumCerto è 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.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.