Vai al contenuto
PLC Forum


Posizionatore Manuale-automatico Variatore Tensione


roberto8303

Messaggi consigliati

Ho appena finito di fare il posizionatore, ma ho un problemino sul valore del set point, l ho impostato a 1500, ho messo i confronti per sommare o sottrarre 16 al virtual clock, ho impostato il limite massimo per fermare il virtual clock cioe >= e <= del set point.

vado a provare e il virtual clock se positivo quando somma il differenziale diventa 1504 se negativo per differenza del differenziale mi diventa 1488 :blink:

perche non si ferma a 1500 come ho messo il limite?? forse o è troppo grande il differenziale o troppo grande il tempo 100ms??

Link al commento
Condividi su altri siti


  • Risposte 53
  • Created
  • Ultima risposta

Top Posters In This Topic

  • roberto8303

    32

  • Livio Orsini

    18

  • busanela

    2

  • ASMO

    2

pensandoci bene forse sto chiedendo troppo al povero regolatore...400volt in 10secondi sono sempre 40volt/secondo...devo aumentare il tempo mi sa...

Link al commento
Condividi su altri siti

finito il posizionatore, ho messo il differenziale a 10.

Dovessi scegliere io, avendo la sicurezza dell'impossibilità di rotazione dell'albero a PLC spento, adotterei la soluzione di encoder incrementale e memorizzazione della posizione in area di memoria ritentiva.

Il ciclo di homing lo eseguirei solo su richiesta specifica, in caso di dubbi sull'affidabilità della misura o dopo altri eventi che possono compromettere la taratura

e quello che sto cercando di fare, il problema è che memorizzo la word come ritentiva, ma quando tolgo corrente e poi ritorna, hc0 viene azzerato e mi azzera anche la word, io non capisco perche non è possibile mettere hc0 nella area di memoria ritentiva! come posso fare a memorizzare hc0 dopo che ritorna la corrente?

Link al commento
Condividi su altri siti

e quello che sto cercando di fare, il problema è che memorizzo la word come ritentiva, ma quando tolgo corrente e poi ritorna, hc0 viene azzerato e mi azzera anche la word, io non capisco perche non è possibile mettere hc0 nella area di memoria ritentiva

ok , ho risolto anche questo :lol: ma ancora un altro piccolissimo problema...se spengo il plc con encoder fermo e con I0.0 o I0.1 illuminati con i led, alla riaccensione, il valore di hc0 mi segna -1 o +1 cioe se prima era a 100 alla riaccensione mi segna o 99 o 101. se invece prima di spegnere i led degli ingressi I0.0 I0.1 sono spenti alla riaccensione il valore hco rimane uguale cioe 100.

Adesso veramente non so come fare... :(

Link al commento
Condividi su altri siti

Questo è un problema di non facile soluzione, a meno di togliere alimentazione prima all'encoder e poi al PLC. Alla riaccensione HCx verrà azzerato via SW, quindi eventuali impulsi spuri dovuti al transitorio di accensione dell'encoder saranno cancellati

Link al commento
Condividi su altri siti

meno di togliere alimentazione prima all'encoder e poi al PLC

altro problema non tanto semplice da risolvere.

Comunque non mi piace alimentare l encoder ''sempre'' con la batteria, a meno che non trovo un piccolissimo gruppo di continuita che mi alimenta un alimentatore 220-24vdc ma anche se la macchina restera ferma per un lungo periodo addio memoria,lunico pro è che se la corrente va via mentre si sta manovrando,il gruppo di continuita alimentando sempre l encoder per quella pochissima inerzia non perdo conteggio.

ma tutto sommato a questo punto, credo che cerchero un altra soluzione. <_<

Link al commento
Condividi su altri siti

Scusa, non complicare affari semplici.

Di soluzioni semplici per anticipare l'apertura dell'alimentazione dell'encoder ce ne sono tante, basta pensarci un po'. Te ne suggerirei almeno una se conoscessi come hai fatto le alimentazioni.

Poi c'è la soluzione brillante. Mantenere l'alimnetazione a PLC per alcuni ms prima di spegnere il tutto. Durante questa fase memorizzi il valore di HSCx in area ritentiva (quella in ram tamponata). Se temi di perdere i dati per una pausa di alimentazione molto lunga, fai copia dei dati nella EEPROM (da inserire nell'apposito slot). Alla rialimentazione ricopi i dati in RAM

Link al commento
Condividi su altri siti

Scusa, non complicare affari semplici

hai ragione, è che sono un po sconfortato non conoscendo queste soluzioni che mi dici.

Mantenere l'alimnetazione a PLC per alcuni ms prima di spegnere il tutto. Durante questa fase memorizzi il valore di HSCx in area ritentiva (quella in ram tamponata). Se temi di perdere i dati per una pausa di alimentazione molto lunga, fai copia dei dati nella EEPROM (da inserire nell'apposito slot). Alla rialimentazione ricopi i dati in RAM

ad esempio questa si che è una soluzione ad hoc :thumb_yello: , ma non l ho mai fatto non so da dove cominciare se non me lo dici tu :(

credo per rimanere alimentato il plc pochi ms ci vorrebbe una scheda elettronica con condensatore...in modo da sfruttare la scarica del condensatore...ma sto solo pensando, non so realizzarla! ah comunque l encoder lo alimento direttamente dal plc, poi ho una unita espansiva da 16 ingressi e 16 uscite ed il convertitore D/A 0-10v alimentati con un alimentatore embedded +24v.

L alimentazione della macchina avviene con magnetotermico nel quadro a parete che la sera viene staccato, poi sulla macchina ho il banco a leggio, cè il sezionatore bloccaporta, e una terna di fusibili. il plc è subito alimentato a sezionatore attaccato e resta attacato sempre. la sera viene staccato solo il magnetotermico nel quadretto.

Link al commento
Condividi su altri siti

il plc è subito alimentato a sezionatore attaccato e resta attacato sempre.

Per prima cosa alimenta l'encoder sotta la medesima linea del PLC.

Poi metti un ingresso del PLC per leggere un contatto NO di un relè che è alimentato dal quadretto. Quando disalimenti il quadretto il PLC memorizza in EEPROM il valore di HSCx.

Quando rialimenti il quadretto il PLC, se è alimentato, copia il valore di EEPROM nella RAM. L'unico problema è che, se ricordo bene, la EEPROM è garantita per 200.000 cicli di scrittura. Potresti distribuire la memorizzazione su più word usandole in alternanza.

Questo però ti serve solo se la macchina sta disalimentata per lunghi periodi. Per pochi giorni la RAM tamponata è più che sufficiente. Quindi potresti fare normalmente il salvataggio in RAM e, su richiesta da pulsante, il salvataggio in EEPROM.

Poi se l'operatore non esegue la copia in EEPROM mantenedo spenta la macchina per un mese, alla riaccensione dovrà fare il il ciclo di zero. non è poi un gran inconveniente.

Link al commento
Condividi su altri siti

la EEPROM è garantita per 200.000 cicli di scrittura

considerando max 3 accensioni al giorno 200,000 / 3 / 365= durerebbe 182 anni?? è piu che sufficiente :lol:

pensandoci bene,comunque l altra soluzione,che è propio quella di cui parlammo all inizio dei post, cioe ad ogni accensione cioe la mattina alle 8 e poi alle 14, la macchina non appena alimentata va a fare il ciclo di homing, cioe si porta automaticamente con un riferimento lento,sul micro di 0.

Puo essere una cosa positiva in termini di sicurezza partire all accensione del sistema da 0 volt pensandoci bene, tanto per le successive prove se non viene tolta tensione il regolatore resta sempre allo stesso punto.

Solo che, pensavo se fare l homing appena alla macchina si da tensione, o su richiesta con un comando?per me sarebbe piu comodo in automatico, cioe come prima operazione la macchina si porta a 0...

A questo punto sono indeciso, secondo te in termini di efficacia e funzionalita quale soluzione mi consigli??

Link al commento
Condividi su altri siti

Io avrei, da subito, previsto l'homing sul power on. Visto il tipo di macchina fare homing significa portare la tensione in uscita 0, che è sempre un a bella cosa; anzi sarebbe meglio farla allo spegnimento, ma qui si dovrebbe tornare a parlare di un comando di spegnimento che non stacca subito tensione, ma riporta a 0 il tutto e poi comanda l'apertura del sezionatore. Potresti farlo tramite PLC :)

Link al commento
Condividi su altri siti

Si ma vedi, l idea di memorizzare la posizione è nata con il pensiero di spegnere la macchina dopo aver effettuato una prova, in cui il tempo che passerebbe tra una prova e l altra va da circa 1 ora a 3 ore, quindi inizialmente pensai che era inutile tenere il banco alimentato e quindi staccavo il sezionatore.

Facendo questo giustamente con encoder incrementale bisognava tenere in memoria la posizione fisica del albero, ma analizzando tutte le operazioni che mi dici di fare, valutando le cose forse non conviene. Non conviene perche, alla fine, se resto la macchina accesa i consumi sono quelli del plc, quelli del monitor, della colonna luminosa,del alimentatore, del trasformatore da 150VA e basta. Quindi non cambia quasi niente tenerla in standby :)anche per la sicurezza, ho installato un selettore a chiave,con il quale attraverso il plc inibisco qualsiasi comando di manovra. L unico incoveniente è se va via la corrente improvvisamente piu di una volta, ma è successo propio raramente, in futuro non so cosa succedera :)

Mi stai ripetendo ancora una volta il fatto di compiere un azione un attimo prima di staccare la corrente e quindi a questo punto anche se in ritardo, ti spiego come avviene l operazione altrimenti ti faccio perdere tempo e non sarebbe per niente corretto.

Il quadro generale dove cè il magnetotermico differenziale a monte di tutte i quadri sparsi in officina, è posto vicino alla porta di uscita, a fine giornata, l operatore non si preoccupa di staccare tutte le apparecchiature, ma uscendo tira giu il magnetotermicodifferenziale e si stacca tutto.

bisognerebbe quindi dare un comando di OFF al banco prova, il quale con il plc porta a 0 il rotore e poi sganciarebbe il sezionatore o magnetotermico che sia, ma questa operazione andrebbe fatta sul banco prova e non piu sul quadro generale che comunque a fine giornata deve essere staccato per una questione di sicurezza.

L unica per me che mi sta sempre piu convincendo è l homing alla accensione della macchina...

anzi sarebbe meglio farla allo spegnimento, ma qui si dovrebbe tornare a parlare di un comando di spegnimento che non stacca subito tensione

perche dici che sarebbe meglio farla allo spegnimento? quali vantaggi ci sarebbero?

Link al commento
Condividi su altri siti

Che partirebbe sempre dalla posizione di 0.

Su questo sono daccordo, ma io ci ho visto anche uno svantaggio usare l homing con comando sia all accensione che allo spegnimento, ti spiego:

mettiamo il caso dell homing prima dello spegnimento macchina, durante la giornata il banco è in standby cosa succederebbe se improvvisamente va via per un attimo la corrente e nessuno in officina se ne accorge? la macchina non ha ricevuto il comando di fare l homing, si trova es a 300volt ma perde il riferimento di hc0, quindi se poi si va a provare senza accorgersi che la macchina ha peso il riferimento ad impostazione di un nuovo set point la macchina andra oltre il dovuto... :(

Quindi o bisogna mettere una visualizzazione sul hmi di hc0 in modo che l operatore prima di scrivere il set point confrona hc0 con la tensione reale misurata sul voltmetro, cosa che non vorrei fare perche mi fido poco degli operatori... :) oppure fare l homing con il bit Sm0.1 cioe appena la macchina è alimentata fa solo l homing e inibisco tutte le altre operazioni,solo l emergenza puo bloccare l homing. Secondo me questa è la soluzione migliore che ne pensi?

Con l homing sul bit Sm0.1 anche se va via la tensione e poi ritorna la macchina svolge in automatico come prima operazione l homing.

Link al commento
Condividi su altri siti

oppure fare l homing con il bit Sm0.1 cioe appena la macchina è alimentata fa solo l homing e inibisco tutte le altre operazioni,solo l emergenza puo bloccare l homing.

:thumb_yello:

Link al commento
Condividi su altri siti

  • 2 weeks later...

Livio maydayyy!!! :lol:

ho appena fatto le prove al mio regolatore, ho un piccolissimo problema :( ti spiego dall inizio:

ho fatto la sub homing con il micro di 0, che poi altra ''fregatura corrisponde a 10volt'' comunque non fa nulla, ho usato il merker del primo ciclo sm0.1 per entrare nella sub homing dove con un confronto del hco caricato in una vd a ritenzione mando indietro l albero con due velocita diverse, cioe non appena mi avvicino a circa 100impulsi dal micro rallento per avvicinarmi al micro lentamente. e fin qui tutto ok!

per il posizionatore ho messo, interrupt chiamto ogni 100ms, differenziale=10, guadagno=9 impulsi massimi 1400=400volt cioe tutto il posizionamento sono 1400impulsi. l encoder ho utilizzato uno uguale a quello dell antenna da 3600imp/giro solo che ho fatto il conteggio x4 quindi 14400 la rivoluzione completa.

Andando a provare, succede che il motore pilota anche se sto a 0 e voglio andare a 300volt quindi 1050imp il riferimento è di tensione in aqw0 è bassissimo!! il motore gira lentissimo anche nella parte centrale dove l errore è piu grande! Quindi vado a vedere sui segmenti cosa succede anche se devo staccare l hmi solita scocciatura, osservo che il differenziale arriva subito al valore del set point infatti ho imposto il limite al virtual clock >=set point fermo la somma o la differenza di 10 dal virtual clock. quindi se ci sono es 540 punti del virtual clock penso che siano comunque pochi! se aumento il guadagno e lo metto a piu di 10 il sistema non si posiziona mai :( perche se l errore vale anche 2 moltiplicato il guadano 10 esce fuori dal confronto sistema posizionato dove ho messo -10 +10 e quindi passa continuamente da forward e reverse.

Forse l encoder non è abbastanza risolutivo?? cè qualche soluzione per posizionare piu velocemente? il riferimento all inverter non supera i 7 hz anche se sono a 0 e voglio arrivare a 300volt :(

Link al commento
Condividi su altri siti

Scusa ma non ricordo coma hai fatto il posizionamento. Hai usato il mio algoritmo? Quello dove fai crescere la posizione virtuale costantemente e dai come riferimento al differenza tra posizione virtuale e quella ideale?

Link al commento
Condividi su altri siti

Si ho usato lo stesso della famosa antenna, quindi l errore vien fuori dalla differenza tra valore virtuale di posizione - valore di hc0 trasferito in una VW di appoggio. quando hco raggiunge il contatore virtuale l errore si azzera e si ferma.

Stavo pensando di provarlo con interrupt invece che a 100ms a 10ms ma il calcolo per sapere alla massima velocita quanti impulsi devo avere per posizionare in X tempo mi viene fuori 10 punti ogni 0.1secondi che sono 100ms non 10 :(

Link al commento
Condividi su altri siti

Scusa ma ho bisogni di informazioni.

Se il motore girasse alla massima velcità quanti impulsi avresti ogni 100ms?

Se il motore girasse sempre alla massima velocità in quanto tempo faresti il posizionamento partendo da 0 sino al massimo?

Link al commento
Condividi su altri siti

Se il motore girasse alla massima velcità quanti impulsi avresti ogni 100ms?

questo non l ho misurato precisamente, ma so che alla massima velocita ho 1400impulsi in circa 12 secondi quindi 1400/10=140 imp/sec che ogni 100ms= 14 impulsi circa è comunque una misura approsimativa...se serve propio precisa la devo rilevare.

Se il motore girasse sempre alla massima velocità in quanto tempo faresti il posizionamento partendo da 0 sino al massimo?

9-10 secondi circa.

Link al commento
Condividi su altri siti

Dunque se tu usi 14 impulsi come differenziale di posizione teorica stai dando il massimo riferimento.

Il confronto per considerare sistema posizionato devi farlo sull'errore reale. Cioè se ahi +/- 2 impulsi di errore come soglia, quando la differenza tra posizione reale e posizione virtule è <= 2 consideri missione raggiunta. Non devi moltiplicare per il guadagno.

Per avere 10v di uscita dovrai dare 32.000 di codice al D/A, quindi il tuo guadagno deve essere molto elevato se vuoi raggiungere velocemente questa velocità, però potrebbe procurarti guai con errori piccoli.

Potresti usare 2 o 3 guadagni diversi in funzione dell'errore.

Metti più soglie; ad esempio fai <=+/- 2 impulsi ==> posizione raggiunta, fino a 10 impulsi ==> g=10, fino a 30 impulsi ==> g=35, foltre 30 ==> g=100

Link al commento
Condividi su altri siti

Il confronto per considerare sistema posizionato devi farlo sull'errore reale. Cioè se ahi +/- 2 impulsi di errore come soglia, quando la differenza tra posizione reale e posizione virtule è <= 2 consideri missione raggiunta. Non devi moltiplicare per il guadagno

si l ho fatto cosi il confronto, dopo trasferisco l errore in una altra VWxx per moltiplicarla per il guadagno. qualcosa non mi torna, infatti i confronti per sistema posizionato sono letti direttamente nella differenza cioe l errore senza essere moltiplicato per il guadagno. Poi la cosa strana è che anche se il contatore virtuale arriva al set point quindi 500, se l encoder è a 0 e moltiplico l errore per 8 =guadagno dovrei avere un riferimento di 500*8=4000 ma non sono riuscito a vederlo perche il tempo che stacco il pannello hmi e collego il pc gia è posizionato anche se va sempre lento , la rampa la fa la vedo, ma è lentissima, devo osservare meglio cosa succede, se l interrupt va bene ogni 100ms avro sbagliato qualche riga di programma sicuramente.

Grazie come sempre per la disponibilita Livio, ti terro aggiornato in ogni caso appena ho qualche oretta libera per rifare le prove :(

Link al commento
Condividi su altri siti

Eccomi!! trovato l errore! anzi erano 2 uno era propio quello che mi hai detto, sono andato a guardarlo apposto, l errore dove avveniva il confronto sistema posizionato era l errore*guadagno e non solo l errore,ho dimenticato di scrivere un passaggio :rolleyes: , poi il guadagno da 9 l ho portato a 20 e il sistema arriva da 0-400volt con la rampa il cui punto massimo arriva a 41hz, ma voglio aumentarlo ancora un po...poi vorrei togliere un ''difetto'' cioe quando faccio la rampa in discesa e l inverter arriva a 10hz è un po lento per poi arrivare a 1hz che ho messo come soglia minima...come posso modificare questo? cioe vorrei ''innervosire'' solo la parte iniziale e la parte finale della curva? se si puo fare...

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora

×
×
  • Crea nuovo/a...