glaio Inserito: 29 ottobre 2007 Segnala Inserito: 29 ottobre 2007 Ciao a tutti.Devo gestire una tavola girevole indexata a 360° con step di 1°, comandata da un motore idraulico azionato da elettrovalvole (rot. oraria, rot. antioraria, rapido/lento). Il sistema di conteggio è un encoder incrementale, collegato ad una CPU 226 e gestito tramite HSC0 in modo 10 (canali A e B in quadratura, 4x con zero).La quota di posizionamento viene passata in BCD da una macchina a CN tramite gli ingressi al PLC.Problema: come ottenere il posizionamento per la via piu' breve??Cioè se sono a 270° e devo andare a 20°, non voglio ottenere una rotazione di 250° (270-20), ma di 110°.Attualmente ho sviluppato tutto il posizionamento, ma senza gestire la via più breve (che ovviamente il cliente richiede per risparmiare tempo di lavorazione!).Qualche idea sul modo di ragionare matematicamente con il PLC? Avete qualche routine simile di esempio?Grazie in anticipo.
Livio Orsini Inserita: 29 ottobre 2007 Segnala Inserita: 29 ottobre 2007 Dovresti far sempre la comparazione tra i due valori. Nel caso che tu porti ad esempio avresti.A = 270 - 20 = 250B = (360 - 270) + 20 = 110poi compare A con B se A > B comandi il posizionamento a ritroso, altrimenti quello diretto.S7-200 effettua direttamente le comparazioni tra due valori.
glaio Inserita: 29 ottobre 2007 Autore Segnala Inserita: 29 ottobre 2007 Grazie per la dritta.Scrivendo su carta qualche esempio il confronto deve avvenire anche per valore negativo di A ossiase A>B oppure se A=negativo allora ruoto in orario.se A<B allora ruoto in antiorario.es. A=180-181= -1B=(360-180)+181=361A=359-1=358B=(360-359)+1=2in entrambi i casi devo ruotare dalla stessa parte.
glaio Inserita: 29 ottobre 2007 Autore Segnala Inserita: 29 ottobre 2007 ....uhmmm altra domanda:come fare per caricare nel giusto istante nel valore attuale (CV) di HC0 il valore zero quando raggiunge 360°, tenendo presente che l'interrupt CV=PV (valore attuale=valore preimpostato) è già in uso per stabilire la quota raggiunta e quindi lo stop rotazione tavola?
Rwhite Inserita: 30 ottobre 2007 Segnala Inserita: 30 ottobre 2007 Ciao a tutti, il tuo encoder e' collegato con rapporto 1:1 rispetto la tavola?, allora puoi usare lo zero dell'encoderrwhite
Livio Orsini Inserita: 30 ottobre 2007 Segnala Inserita: 30 ottobre 2007 (modificato) Io solitamente non mi preoccupo molto. Mi limito al leggere il contatore a tempi fissi e quando supera un certo valore, 360 nel tuo caso, carico la differenza tra il valore del contatore ed il valore limite. Così evito amche problemi di trabocco.Oppure, come scrive Rwhite, sfrutti la tacca di zero dell'encoder, tacca che ti serve anche per fare lo zero tavola. Modificato: 30 ottobre 2007 da Livio Orsini
JumpMan Inserita: 30 ottobre 2007 Segnala Inserita: 30 ottobre 2007 Dovrai preoccuparti anche di gestire il passaggio per lo 0 della camma di rallentamento.Esempio:Hai un rallentamento di 20°, sei a 300° e devi andare a 10° ; il movimento parte in senso orario e rallenta quando arrivi a 350° .
glaio Inserita: 31 ottobre 2007 Autore Segnala Inserita: 31 ottobre 2007 (modificato) Dunque, oggi ci ho lavorato sopra tutto il giorno e devo dire che sono a buon punto (a parte i problemi meccanici ed idraulici della tavola che mi hanno fatto perdere almeno 3 ore... ). Per quanto riguarda l'azzeramento della quota arrivando a quota 360°, ho risolto con il reset da parte della tacca di zero dell'encoder in serie con un micro di selezione dell'impulso di zero.Anche la gestione del rallentamento in prossimità della quota programmata funziona.Rimane un problema: quando ruoto in senso antiorario il valore della quota passando per lo zero deve diventare 360 per poi decrescere. Non riesco a caricare il valore. Ho creato una routine di interrupt (evento=28) sul reset del contatore caricando il valore voluto, ma questo non avviene. Eppure ho controllato mille volte le tre istruzioni (16#C0 in SMB37, 7200 in SMD38 e poi avvio di HSC0). Il valore decresce fino a zero e poi passa in negativo non caricando il valore 7200 (1°=20 impulsi).Qualche idea sul dove sbaglio?X Livio: mi puoi spiegare un pò più approfonditamente quanto hai scritto nel tuo ultimo intervento sul come caricare il valore a tempo? Puoi allegare due righe di codice?Buon Ponte (per chi lo fa... ... io no ) Modificato: 31 ottobre 2007 da glaio
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora