Jump to content
PLC Forum


Dubbi Su Gestione Encoder...


step-80
 Share

Recommended Posts

Salve a tutti,come dicevo nella presentazione mi sono da poco affacciato al mondo dell automazione,ma me ne sono subito appassionato.

Ho letto i tutorial presenti nella sezione didattica e sono veramente ben fatti,ma ci sono delle cose che ancora non riesco a capire.Spero che qualcuno armato di pazienza possa aiutare una capra come me :smile:

Poniamo il caso che io debba effettuare un "posizionamento"(si lo so che è un reato chiamarlo tale)con uno zelio(dico zelio perchè sono abituato a lavorare con lui,è un esempio prendetelo con le pinze).

Bene,ho il mio motore,comandato dal suo teleruttore a sua volta comandato da un uscita dello zelio.

In asse al motore ho un encoder incrementale,diciamo 100 ppr....(è un esempio eh..).Collego il canale A all ingresso "contatore veloce"(1 khz) e nel programma setto il suddetto contatore con un preset diciamo di 1000.Bene,dato un comando di start il motore comincia a girare e al raggiungimento del valore impostato si dovrebbe fermare....ma sicuramente non si fermerà esattamente al millesimo impulso,ma un po piu in là a causa dell inerzia,giusto?Questo perchè ovviamente lo zelio non ha alcun modo per capire che si sta avvicinando al setpoint e quindi non ha alcun modo di rallentare per fermarsi esattamente al valore impostato..questo sarebbe il massimo che potrebbe fare limitando l uso ad applicazioni mooolto semplici.Tralasciando le scappatoie che mi permetterebbero di aggirare il problema(non è lo zelio il mio problema),non mi è ben chiaro il modo in cui un plc,una scheda assi o altro riescano invece a prevedere la fermata.Da quanto ho letto potrebbe essere possibile fissando degli "interrupts",cioè far eseguire al controllo una serie di verifiche sulla quota raggiunta istantaneamente dall encoder e confrontarla continuamente col valore di setpoint...è giusto?Se dal controllo risulta per esempio che nell istante 'x' mancano 100 impulsi al setpoint,si fa partire un comando per la funzione di rallentamento...può essere?Scusate,è solo un esempio per capire come ragionano i controlli...In questi casi si utilizza sempre anche il controllo PID per fare in modo che la posizione non si scosti dal valore settato?grazie a chiunque mi voglia rispondere :worthy:

Link to comment
Share on other sites


Sergio Menegon

Premesso che questo proprio non è il mio campo, ma nella speranza di fornirti almeno uno spunto iniziale posso dirti che, per quanto ne so io, in questi sistemi il motore non è controllato da un teleruttore, bensì da un inverter, il quale riceve al plc un segnale analogico (ad es. 0-10v), che corrisponderà alla frequenza di pilotaggio del motore ed al senso di marcia (es: 0V = antiorario vel max, gradualmente rallentando fino a 5V=fermo, poi gradualmene aumentando verso il senso orario fino a 10V = orario vel max).

Il controllo dovrebbe essere fatto ad anello chiuso, cioè, in termini estremamente semplicistici, la tensione di uscita (e quindi la velocità con cui il motore va avanti o indietro) è funzione della differenza tra posizione reale letta dall'encoder e posizione finale voluta. Se sei distante il motore verrà pilotato per andare incontro al punto desiderato velocemente, a mano a mano che si avvicina diminuisce la differenza tra posizione desiderata e posizione letta, il pilotaggio tende a fermare il motore, quando la posizione viene "sorpassata" per inerzia il controllo tenderà a invertire il senso di marcia e riportare il motore verso la posizione voluta. Dai valori dei guadagni, in relazione alle caratteristiche meccaniche ed elettriche del sistema, dipende il comportamento "oscillatorio": il sistema può oscillare poco intorno alla posizione voluta, oppure essere più o meno reattivo, oppure (se mal prgettato) oscillare sempre più ampiamente fino a giunge ai limiti meccanici, talvolta spaccando tutto. La formalizzazione di tutto ciò non è banale. Nella certezza di aver detto un sacco di baggianate ti saluto :-)

Link to comment
Share on other sites

Grazie innanzitutto dell interessamento.

Ti confesso che questa cosa del pilotaggio in base alla distanza non l avevo mai sentita. Ero convinto che fosse l operatore a dover stabilire quale velocità adottare,quando e come accelerare,quando e dove decelerare e fermarsi. Se ho ben capito quindi,una scheda assi o un inverter con controllo vettoriale e posizione hanno bisogno della quota finale di arrivo,ed in base a quella eseguendo un confronto tra lei e la posizione attuale genera la tensione necessaria a raggiungere la quota necessaria. E cosi allora?

Se volessi generare questo segnale analogico con un s7 1200diciamo,mi dovrei creare il programma da zero o esiste qualche libreria a tale scopo?grazie

Matteo

Link to comment
Share on other sites

  • 2 weeks later...

Per fare una cosa fatta bene bisognerebbe usare tutte le parti per il motion control inverter appositi e motori sincroni brushless o stepper poi con il plc ci sono le funzioni di PLCopen che fanno tutto loro gli danno il valore di posizione e l'inverter lo fa raggiungere al motore calcolando l'accelerazione il movimento continuo e la decelerazione fermandosi al punto esatto.

Poi per corregere, l'ingresso analogico dell'inverter è (almeno quelli della Schneider)+-10Vdc quindi da -10 a 0 si va in senso antiorario e da 0 a +10Vdc si va in senso orario

Link to comment
Share on other sites

Sergio Menegon

Grazie della precisazione sul range dell'ingresso analogico. Come valori ho riportato, come esempio, quelli che ho incontrato ultimamente su dei piccoli inverter mitsubishi. Non so, peraltro, se fosse solo una configurazione tra altre possibili...come premesso non è proprio il mio campo.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...