alberto rosso Inserito: 11 dicembre 2006 Segnala Inserito: 11 dicembre 2006 Intanto saluti a tutti.Vado subito a esporre il problema che mi assilla e che non sono riuscito a risolvere. Forse con un briciolo di impegno potrei arrivarci, ma ho il fuoco al c**o come dicono i francesi e una mano sarebbe un toccasana.Avevamo già affrontato il problema della realizzazione del sistema di conteggio e attivazione del sistema con un discreto successo nonostante i contatori veloci e le interrupt non siano il mio forte, ma adesso mi hanno segnalato che c'è un piccolo problema .Per rinfrescare la memoria:Io ho una macchina confezionatrice che lavora con una tavola rotante a 4 stazioni mossa da intermittore a camma. Un motore principale che gira in continuo aziona l'intermittore e contemporaneamente, con delle trasmissioni meccaniche, aziona dei movimenti accessori in fase con il ciclo macchina. Un albero secondario sincrono con la trasmissione principale aziona un encoder incrementale 360 impulsi/giro con impulso di zero.Questo è collegato a una CPU S7 224XM su HSC0.1° dato: la fase macchina è basata su un angolo giro per cui la "quota" macchina si azzera ogni impulso di reset.2° dato: il sistema a camma elettronica viene principalmente usato per comandare due cilindri pneumatici accessori e uno spruzzo di hot-melt con intervalli variabili in funzione del formato.Quando la macchina è in marcia a ogni scansione di programma copio il valore di HSC0 in una variabile e la uso per confrontare i valori di setpoint (le dinamiche del sistema non richiedono precisione strettissima per cui una incertezza di +/- 2° è tollerabile).Fino a qui tutto bene, e viste le tolleranze permesse dal sistema non mi sono accorto di una leggera anomalia.Il contatore conta da 0 a 360 prima di resettarsi e tornare a 0, per cui la cosa strana è che se io devo indicare la posizione meccanica della macchina, 360 coincide con 0. Mi aspettavo pertanto, come accade sui programmatori di camme OMRON, di vedere sul display del TP il progresso del conteggio da 0 a 359 e poi il reset nuovamente a 0.La cosa è dovuta soltanto a un ritardo tra l'intervento della tacca di reset e la 360a tacca dell'encoder, per cui ai fini del conteggio non ho problemi, o sono io che ho configurato male il contatore?Premetto che visto che lo zero è fisso con la macchina e che la macchina è "meccanicamente rigida" il conteggio riprende sempre in fase con la macchina e date le tolleranze in pratica non è un problema, ma eticamente mi disturba non essere sicuro della correttezza del sistema e soprattutto mi fa incavolare non capire la situazione.Grazie a chi vorrà illuminarmi.Saluti
Livio Orsini Inserita: 12 dicembre 2006 Segnala Inserita: 12 dicembre 2006 Se ci fosse un ritardo di un impulso (grado) nell'azzeramento si avrebbe un accumulo progressivo e, dopo qualche giro, la sfasatura sarebbe più che evidente. Non essendoci sfasatara è evidente che è solo un problema di rappresentazione. In effetti il contatore conta, giustamente, 360 gradi; al 360 esimo arriva l'impulso di zero ed il valore accumulato scende a zero, ma l'encoder non ha ancora inviato un nuovo impulso. Anche geometricamente la rappresentazione è corretta: Nell'angolo giro zero e 360 gradi coincidono.
Ecup Inserita: 12 dicembre 2006 Segnala Inserita: 12 dicembre 2006 Non sono sicuro di aver capito appieno la situazione (né hardware, né di come hai realizzato il sw), comunque se conti da 0 a 360, estremi compresi (cioè se per te esiste sia uno stato con 0 impulsi, che uno con 360), di impulsi ne conti 361...
Livio Orsini Inserita: 12 dicembre 2006 Segnala Inserita: 12 dicembre 2006 estremi compresi (cioè se per te esiste sia uno stato con 0 impulsi, che uno con 360), di impulsi ne conti 361...No no è così! Quando il contatore ha contato il 360esimo impulso viene azzerato, quindo il suo valore passa a 0 prima che giunga il 361esimo impulso!Quando sarà conteggiato il 361esimo il valore del contatore passa da 0 a 1. Così deve essere in teoria un conteggio con modulo 360; così è anche l'equivalente geometrico di un angolo giro dove 360o e 0o coincidono.
alberto rosso Inserita: 12 dicembre 2006 Autore Segnala Inserita: 12 dicembre 2006 Per Livio:Se ci fosse un ritardo di un impulso (grado) nell'azzeramento si avrebbe un accumulo progressivo e, dopo qualche giro, la sfasatura sarebbe più che evidente. Non essendoci sfasatura è evidente che è solo un problema di rappresentazione. In effetti il contatore conta, giustamente, 360 gradi; al 360 esimo arriva l'impulso di zero ed il valore accumulato scende a zero, ma l'encoder non ha ancora inviato un nuovo impulso.Anche geometricamente la rappresentazione è corretta: Nell'angolo giro zero e 360 gradi coincidono.Dopo aver scritto il post ho riflettuto un po' a bocce ferme e sono giunto alla possibile conclusione che sia principalmente un problema di visualizzazione. Probabilmente, ma ci vorrebbe una conoscenza approfondita su come sono strutturati i contatori veloci, il valore 360 rimane tale fino a che l'impulso di reset non va a zero, altrimenti se il contatore andasse a zero sul fronte positivo dell'impulso di reset io la situazione HSC0=360 non dovrei mai vederla se non per una frazione di secondo in quanto si riconosce che HSC0=360 coincide con HSC0=0.A questo punto per non incasinare la situazione lo tengo così e basta.Per Ecup:Non sono sicuro di aver capito appieno la situazione (né hardware, né di come hai realizzato il sw), comunque se conti da 0 a 360, estremi compresi (cioè se per te esiste sia uno stato con 0 impulsi, che uno con 360), di impulsi ne conti 361...Hardware: encoder incrementale con zero montato sull'ingresso veloce e assegnato a HSC0 modo 10 sulla CPU.Software: a ogni scansione del programma copio il valore attuale di HSC0 in una variabile e faccio dei confronti con dei setpoint e nel caso attivo e disattivo delle uscite.Pensandoci, come dice Livio, io conto 360 impulsi, anche perché non ho sfasamenti evidenti della macchina: a 30 g/1' contando un impulso in più dopo 6 minuti avrei uno sfasamento di mezzo giro, mentre invece la macchina rimane in fase e non da problemi.Probabilmente è un falso problema dovuto a come interpreta il contatore l'impulso di zero dell'encoder.Basta che il contatore legga l'impulso 360° e dopo azzeri il contatore, magari sul fronte negativo dell'impulso di zero, che io ho questa visualizzazione successiva di 360 e 0 ma mi trovo ancora nello spazio tra 0 e 0,99999999999999°.Magari ho detto fesserie, ma mi sembrano fesserie plausibili.Grazie comunque per le pronte risposte e se vi viene in mente come far sparire quel fastidiosissimo 360 fatemelo sapere.Saluti a tutti.
Ecup Inserita: 12 dicembre 2006 Segnala Inserita: 12 dicembre 2006 Probabilmente non mi è ancora ben chiaro (sono cocciuto ), ma IMHO lo stato di 360 impulsi contati non dovrebbe esistere, perché se ne hai già contati 360 devi già resettare il contatore, e quindi essere a zero. Oppure è lo zero che non deve esistere: come dici tu il 360 equivale allo stato tra 0 e 0,9999999, ma a questo punto dopo il 360 deve esserci l'1 e lo zero non deve esistere,: in questo caso non deve dar fastidio la visualizzazione di 360 (che equivale a zero).IMHO se vedi sia 360 che 0, c'è qualcosa che non torna, magari è dolo un "difetto di visualizzazione", ma comunque se visualizzi da 0, 1, 2, ...360, in totale visualizzi 361 stati
walter.r Inserita: 12 dicembre 2006 Segnala Inserita: 12 dicembre 2006 ...ma comunque se visualizzi da 0, 1, 2, ...360, in totale visualizzi 361 statiSe la matematica non è un'opinione.......Ragazzi, premetto che non conosco il contatore dell S7-200, quindi magari dico stupidaggini, ma non è che conta *4, cioè i 4 fronti fra un impulso e l'altro ??Se così fosse, può essere che una volta arrivato a 360, "aspetti" uno cambio di stato dell'altro canale per azzerare il valore.Della serie: "conto 360, quindi aspetto 2 fronti prima di azzerare...."Quindi, come dice Livio , il suo valore passa a 0 prima che giunga il 361esimo impulso!Visto che i tedeschi spesso si divertono a complicare questo genere di cose.....
Hellis Inserita: 12 dicembre 2006 Segnala Inserita: 12 dicembre 2006 (modificato) A mio modestissimo parere Ecup ha centrato il problema:dopo 360° passi a 1° non a 0°, perchè 360 coincide con 0°Non conosco la programmazione del plc etc etc, ma giusto per fare una prova se si provasse a non azzerare il valore conteggiato e dopo alcuni giri lo dividesse per 360, dopo aver fatto eventualmente una tacca di controllo? oppure provare con 1 giro + 1 porzione e, dopo il giro completo provare a detrarre dal valore visualizzato 360... Modificato: 12 dicembre 2006 da Hellis
Livio Orsini Inserita: 12 dicembre 2006 Segnala Inserita: 12 dicembre 2006 (modificato) Non conosco la programmazione del plc etc etc, ma giusto per fare una prova se si provasse a non azzerare il valore conteggiato e dopo alcuni giri lo dividesse per 360, dopo aver fatto eventualmente una tacca di controllo?Ha gia risposto alberto rosso: se ci fosse un conteggio di 361 impulsi invece che 360 dopo pochi minuti avrebbe uno sfasamento di 1/2 giro; e mezzo giro di sfasamento lo vede anche uno distratto Il fatto che l'azzeramento del contatore non avviene sul fronte dell'impulso contato, ma sul fronte generato dall'apposita marca di zero. Quindi dipende da come è fisicamente posizionata la marca di zero rispetto al fronte di conteggio.Poi bisognerebbe conoscere la frequenza di conteggio e la freqaunza di aggiornamento del visualizzatore.Se l'encodere compisse una rivoluzione completa in un minuto la frequenza è pari a 6 Hz, quindi la marca di zero potrebbe avere un ritardo di circa 100ms; in un caso come questo sarebbe evidente un conteggio come quello descritto. Solo che la macchina viaggia a 30rpm, corrispondenti ad una frequnza di 180Hz....da cui il ritardo di azzeramento è <4ms, quindi non dovrebbe essere visibile la concidenza 360=0. Forse alberto rosso non lo ha detto ma, probabilmente, il visualizzatore a volte visualizza 0, altre 360, in funzione del momento in cui è stato campionato il contatore. Modificato: 12 dicembre 2006 da Livio Orsini
Ecup Inserita: 13 dicembre 2006 Segnala Inserita: 13 dicembre 2006 >se ci fosse un conteggio di 361 impulsi invece che 360 dopo pochi minuti avrebbe uno sfasamento di 1/2 >giro; e mezzo giro di sfasamento lo vede anche uno distratto Non se l'impulso di azzeramento resetta ad ogni giro... io posso anche commettere mezzo giro di errore ad ogni giro, ma se poi passando per lo zero resetto l'errore, questo non si accumula...>Il fatto che l'azzeramento del contatore non avviene sul fronte dell'impulso contato, ma sul fronte generato >dall'apposita marca di zero. Quindi dipende da come è fisicamente posizionata la marca di zero rispetto al >fronte di conteggio.Verissimo... il punto è proprio questo... ma se anche fosse solo un problema di visualizzazione, IMHO non è comunque corretto visualizzare 361 stati (ovvero 0 e 360 compresi); se il "problema" (se così vogliamo chiamarlo) sia da risolvere per vie hardware o software non lo so (non ho mai avuto a che fare con encoder e contatori veloci), ma se fossi un cliente che fa le pulci (e ce ne sono) solleverei la questioneciao
Rwhite Inserita: 13 dicembre 2006 Segnala Inserita: 13 dicembre 2006 Ciao a tutti, uso regolarmente gli encoder incrementali con PLC serie 200, e secondo me il tutto dipende dalla posizione dello zero rispetto alla tacca di conteggio, ricordiamo che la faqse A e B sono sfasate per permettere il riconoscimento della direzione di conteggio, per cui sicuramente la tacca di zero non coincide con il fronte di una delle fasi (forse con nessuna delle due), per cui secondo la direzione di conteggio possiamo avere un momento diverso di azzeramento, fermo restando che avviene sempre a 360 impulsi, sia che si parta da 0 o da uno (0-359 o 1-360). Invertendo il senso di conteggio hardware e software si dovrebbe risolvere il problema.Ciao rwhite
Livio Orsini Inserita: 13 dicembre 2006 Segnala Inserita: 13 dicembre 2006 (modificato) Non se l'impulso di azzeramento resetta ad ogni giro... io posso anche commettere mezzo giro di errore ad ogni giro, ma se poi passando per lo zero resetto l'errore, questo non si accumula...Non in questo caso. Se leggi bene il post iniziale si tratta di una camma simulata elettronicamente, quindi lo sfasamento si vede, eccome se si vede. (Ecup, perchè non usi il tasto quote per effettuare le citazioni? Sarebbe tutto più leggibile)....ma se anche fosse solo un problema di visualizzazione, IMHO non è comunque corretto visualizzare 361 stati ....Questo è vero, bisognerebbe scegliere cosa visualizzare: zero o trcentosessanta! Ma questo è facilmente risolvibile via software...Invertendo il senso di conteggio hardware e software si dovrebbe risolvere il problema. rwhite credo che il problema continuerebbe ad esistere solo sarebbe invertito. Modificato: 13 dicembre 2006 da Livio Orsini
alberto rosso Inserita: 13 dicembre 2006 Autore Segnala Inserita: 13 dicembre 2006 Livio Orsini scrisse:Se l'encoder com**e una rivoluzione completa in un minuto la frequenza è pari a 6 Hz, quindi la marca di zero potrebbe avere un ritardo di circa 100ms; in un caso come questo sarebbe evidente un conteggio come quello descritto. Solo che la macchina viaggia a 30rpm, corrispondenti ad una frequenza di 180Hz....da cui il ritardo di azzeramento è <4ms, quindi non dovrebbe essere visibile la coincidenza 360=0. Forse Alberto rosso non lo ha detto ma, probabilmente, il visualizzatore a volte visualizza 0, altre 360, in funzione del momento in cui è stato campionato il contatore.Diciamo che il cliente se n'è accorto muovendo la macchina manualmente a piccoli spostamenti durante una messa a punto. Personalmente, ammetto, non ci avevo fatto caso al momento della messa in servizio del plc per cui dovrebbe essere un "problema" hardware dell'encoder e della sua diavolo di tacca di zero.Finisce che, visto che il conteggio pare giusto, aggiungerò una linea di programma in corrispondenza della copia del contatore in memoria che, quando la lettura del contatore arriva a 360, copia il valore 0 invece che il valore del contatore.Saluti a tutti, grazie dell'interessamento e, se non c'è più occasione, buone feste.
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