Vai al contenuto
PLC Forum


Implementare Un Profilo Di Velocità In Una Piccola Turbina Francis (id


Messaggi consigliati

Inserito:

Buongiorno

Premesso che non sono affatto un esperto di regolazione/controllo anche se ne conosco i principi (PID, Feed forward, ecc.. purtroppo molto teoricamente e poco praticamente :( )

volevo sottoporre a tutti gli utenti del forum (esperti e non) il problema che mi accingo ad affrontare.

Stiamo realizzando una piccola centrale idroelettrica con turbina francis ad asse orizzontale.

Il gruppo di generazione è da 350kVA e dovrà essere esercito solo in parallelo alla rete di distribuzione (no funzionamento in isola).

Il mio problema è che il cliente vorrebbe realizzare il controllo sulla velocità della turbina, nella fase di avviamento, secondo un profilo di velocità noto, fino al raggiungimento e alla stabilizzazione di un certo valore di velocità (750 gg/min) necessari per la realizzazione del parallelo con la rete.

Spostando la discussione però, su un livello più generale, vorrei sapere quali sono i passi per far seguire alla macchina una qualsiasi funzione velocità/tempo.

il controllo sulla velocità della macchina avviene attraverso una valvola proporzionale (+o- 10 vcc) che controlla un pistone idraulico collegato alla corona del distributore.

La lettura del valore di velocità corrente viene effettuata attraverso una ruota fonica a 40 denti dotata di due proximity il cui segnale è elaborato dalle schede ad ingressi veloci del plc.

Il PLC di controllo è un Siemens serie 300.

Non sono un esperto di programmazione dei PLC; e per questo spesso mi limito alla programmazione in ladder, che mi sembra la più intuitiva, e all'utilizzo di facilities fornite dai vari editor; tuttavia, se ritenete sia utile sono dispostissimo ad implementare parti di programma in AWL o SFC previo opportuno approfondimento :)

Grazie a tutti quanti parteciperanno alla discussione.


Livio Orsini
Inserita: (modificato)
..il controllo sulla velocità della macchina avviene attraverso una valvola proporzionale (+o- 10 vcc) che controlla un pistone idraulico collegato alla corona del distributore.

1.o metodo, semplice.

Ammesso che con 10V di riferimento alla valvola si raggiunga la massima velcità possibile che, al solo scopo di esemplificazione, sia 1000 rpm; 750 rpm si raggiungeranno con un riferimento di circa 7,5V (corrispondenti a 24000 counts dell'uscita analogica siemens), ammesso che ci sia una corrispondenza lineare riferimento alla valvola<----->velocità turbina.

Stabilito il tempo in cui si vuol raggiungere questa velocità, 60" ad esempio, si riava il dv/dt 60000 ms / 24000 ==> 1 counts ogni 2,5 ms o, meglio 4 counts ogni 10ms. Si genera un timer da 10ms ed ogni scadenza di timer si incrementa l'uscita di 4 conts.

la precisione è legata alla linearità del comando

2.o metodo, più complicato e preciso.

In partenza si geenra il feed forward come nel metodo 1, in aggiunta si misura la velcità reale ad intervalli maggiori, con riferimento all'esempio precedente si può ipotizzare una base tempi di misura pari a 100 ms.

In base alla misura si andrà a correggere in più o in meno il riferimento.

Rimane il problema della sincronizzazzione effettiva con la rete ENEL, sincrinizzazione che dovrà avvenire in isofase. Per ottenere sfasamento 0 non è sufficiente la sola sincronizzazione di frequenza ma è necessario, almeno per il tempo di aggancio, che ci sia anche un controllo di fase. Questo controllo credo sia meglio che venga effettuato con un dispositivo specialistico.

Modificato: da Livio Orsini
Inserita:

Grazie per la tempestiva risposta.

Cerco di fare chiarezza perché mi rendo conto che in poche righe probabilmente ho mal descritto il problema.

Anche se lo scopo finale è quello di realizzare una rampa di velocità del tipo "iperbole equilatera" passante per l'origine e con asintoto orizzontale in corrispondenza della velocità nominale (o poco meno); quello che mi si chiede, o meglio quello a cui vorrei arrivare, è di poter seguire una qualsiasi curva velocità/tempo che rientri nei "limiti fisici" della macchina.

Questo protrio per approfondire il principio del controllo della velocità di rotazione "a prescindere".

Riguardo alla realizzazione del parallelo vero e proprio, come dici tu Livio, esiste un dispositivo dedicato al quale la macchina viene "consegnata" nel momento in cui la velocità prossima alla nominale viene mantenuta stabilmente.

A proposito della valvola proporzionale che controlla la posizione del Pistone del distributore, cerco di fare chiarezza.

La relazione fatta da Livio per ipotesi, è corretta solo se la si associa alla posizione del "pistone" del distributore. Cioè, in prima approssimazione si può dire che, con il distributore aperto al 1% la macchina fa 350gg/min; con il 2% ottengo 530gg/min; con il 3% ottengo 720 gg/min ecc.

Per il controllo della proporzionale, invece, si ha che con 0 volt il pistone resta fermo (posizione di equilibrio) con valori positivi di tensione tende ad "aprire" (tanto più veloce è questa tendenza quanto maggiore è il valore di tensione applicato; cioè con 10vcc il distributore apre il più velocemente possibile), viceversa con valori negativi di tensione.

L'azione del controllore determina quindi sia la direzione del comando (valori positivi di tensione - Apre; valori negativi di tensione - Chiude) sia l'intensità (+10Vcc apre molto velocemente; +0,5 Vcc apre molto lentamente).

Anch'io ho pensato di definire la posizione del distributore in prima battuta secondo una curva velocità/posizione del distributore (in una condizione media del livello d'invaso) ricavata per punti e per interpolazione, e successivamente correggere a partire dalla posizione raggiunta; tuttavia non mi è chiaro qual è il modo migliore (se cce n'è uno solo) per procedere

Spero di aver contribuito a chiarire il problema e non il contrario :blink:

Livio Orsini
Inserita:

1 La valvola non ha la reazione di posizione integrata, quindi devi fare un anello esterno, con un trasduttore sul pistone.

2 La rampa del mio esempio precedente è di tipo lineare senza raccordi. Se vuoi altri tipi di rampe il principio rimane identico, cambia ovviamente la funzione dv/dt. La puoi ottenere variando il dt, agendo sul timer, oppure sul differenziale di tensione di riferimento che è il modo più corretto. Fissato il dt, se vuoi un funzione, ad esempio, iperbolica devi variare il dv con legge iperbolica, of course :)

Inserita:

Grazie Livio per la tua preziosa disponibilità.

L'anello esterno già esiste; il pistone è dotato di un trasduttore di posizione con segnale in corrente 4:20 mA che il PLC acquisisce.

Quello che non mi è chiaro dal tuo post precedente, è come possa tradurre il comando verso la valvola proporzionale con una funzione dv/dt.

Infatti l'azione sulla proporzionale oltre a determinare (ma solo "di riflesso") la posizione del pistone determina (questo direttamente) il modo, più o meno "rapido" con cui questo è chiamato a muoversi (maggiore tensione = maggiore qualtità d'olio = maggiore velocità di movimento del pistone).

Quest'aspetto come entra nella regolazione della velocità?

Chiedo scusa se le argomentazioni possono risultare banali ai più ma è la prima volta che affronto un problema simile.

Livio Orsini
Inserita: (modificato)
L'anello esterno già esiste; il pistone è dotato di un trasduttore di posizione con segnale in corrente 4:20 mA che il PLC acquisisce.

Bhe non si capisce da quello se scrivi se l'anello di posizione del pistone è chiuso o no. Se esiste un anello chiuso, tu darai un riferimento di posione al pistone e, attraverso la valvola proprozionale, lo manterrai in posizione.

Se esiste questo regolatore, puoi assumere che il riferimento di posizione del pistone corrisponda al riferimento di velocità del generatore, anche se è un riferimento di velocità ad anello aperto (di velocità del generatore).

A questo punto il differenziale di riferimento nel differenziale di tempo è rappresentato dal differenziale di posizione (del pistone) nel differenziale del tempo.

Modificato: da Livio Orsini
Inserita:

probabilmente faccio confusione su cosa si intende anello chiuso sulla posizione del distributore.

Quello che intendo io è che la parte in feedforward del controllo posso farla sulla posizione del pistone, la quale è letta da un trasduttore e "ricontrollata" dal controllore; in questo senso l'anello di posizione del distributore lo intendo chiuso.

Ho capito che alla fin fine la curva dV/dT si può tradurre con un dP/dT (dove con P intendo la posizione del distributore).

Forse devo implementare due enelli di controllo?

Per capire però qual è il mio problema cerco di spiegarmi con un esempio.

Supponiamo di voler raggiungere con la macchina la velocità di 540 gg/min; so che con il distributore aperto al2% la macchina raggiungerebbe circa 530 gg/min

pertanto partendo da velocità =0 e distributore chiuso, potrei decidere di dare un valore positivo alla proporzionale per esempio 1vcc e controllare che la velocità non superi il set point e il distributore raggiunga il 2% di grado di apertura; a questo punto mi fermo.

La velocità sarà prossima a quella voluta (se il ffwd è implementato correttamente) e resta da correggere l'ultima parte dell'errore ( ma come?).

Quello che non mi è chiaro è:

Non ho sfruttato le potenzialità della proporzionale (partendo da 10 vcc il distributore avrebbe iniziato a muoversi più rapidamente e la posizione forse l'avrei raggiunta prima).

come devo "muovermi" per far percorrere alla macchina una certa funzione Velocità di rotazione/tempo, cambiando cioè continuamente il punto di set point?.

Livio Orsini
Inserita: (modificato)
Non ho sfruttato le potenzialità della proporzionale (partendo da 10 vcc il distributore avrebbe iniziato a muoversi più rapidamente e la posizione forse l'avrei raggiunta prima).

Questo deve farlo l'anello di posizione del pistone!

Ti faccio un paragone elettrico. Immagina di avere un azionameto in cc: motore, trasduttore di velocità, convertitore-alimentatatore. Il convertitore ha almeno due anelli di regolazione tra di loro in cascata. L'anello più interno regola la corrente, quello più esterno regola la velocità. Se tu applichi un gradino di riferimento di velocità, l'anello di corrente regolerà la corrente per il massimo disponibile in modo da consentire la massima accelerazione. Se tu applichi un riferimetno di velocià graduale, l'anello di corrente regolerà la stessa in modo tale da avere la coppia sufficiente, e necessaria, affinchè l'azionamento segua il riferimento di velocità impostato.

Nel caso della tua valvola, se vuoi sfruttare al massimo le potenzialità del sistema, devi reazionare la valvola stessa con la velocità del pistone (anello interno); chiudi poi l'anello di posizione del pistone. L'uscita dell'anello di posizione del pistone sarà il riferimento dell'anello di velocità dello stesso.

Ikl tutto descritto in modo semplificato.

Modificato: da Livio Orsini
Inserita: (modificato)

Dunque se ho ben capito ci sono 2 anelli di regolazione

Uno più interno in cui il parametro d'ingresso è la posizione voluta per il pistone a comando del distributore.

calcolo l'errore di posizione; in funzione dell'errore, implemento il controllo sulla proporzionale (penso che si possa modellizzare bene con una spezzata che contempli valori di guadagno maggiori intorno allo zero dove la proporzionale è meno sensibile) la quale a questo punto avrà un'azione tanto più forte quanto maggiore sarà l'errore di posizione.

Uno più esterno che in base al valore di velocità voluto (può essere anche una curva nel tempo) determinerà in uscita la posizione voluta del pistone a comando del distributore. questo valore a sua volta sarà suddiviso in un contributo derivante dal Feedforward (posseggo una curva che in prima approssimazione mi da la relazione tra velocità e posizione del distributore) sommato a un contributo di correzione che è prodotto a partire dallo scostamento rispetto alla velocità voluta.

Per quest'ultimo aspetto, pensate debba implementare un PID o la componente derivativa può essere evitata?.

Spero di aver compreso bene il fenomeno; se si, quali potrebbero essere altri parametri (limiti di saturazione, offset, ecc..) che aiuterebbero a realizzare un controllo ottimale?; se no, aiutatemi per favore a correggere gli errori :)

Modificato: da massiTT
Livio Orsini
Inserita:
Per quest'ultimo aspetto, pensate debba implementare un PID o la componente derivativa può essere evitata?.

A sensazione, perchè non ho un'esperienza specifica su questo tipo apparecchiatura (turbine idrauliche) non userei il derivativo. In genere per controlli di questo tipo si preferisce, al limite, un anticipo sulla reazione invece che il derivativo sull'errore.

Inserita: (modificato)

Anticipo sulla reazione ....cioè dovrei andare a valutare come varia la grandezza controllata e non come varia l'errore giusto?

il questo caso cioè la valutazione dovrei farla sulla variazione della velocità di rotazione dell'asse turbina e dunque sull'accelerazione.

Dato che ho quasi sempre programmato in ladder e utilizzato le routine che di volta in volta l'editor mi mette a disposizione, pensate che S7 di siemens, che devo usare in questo caso, abbia qualcosa del genere? ....immagino di no vero?!

Ritenete che in questo caso debba per forza procedere in AWL? ...in genere non sono restio ad apprendere nuovi linguaggi, tuttavia non vorrei mettere troppa carne al fuoco e trovarmi poi a gestire sia i problemi sulla regolazione, sia il debug di sintassi e semantica delle routine che andrei a scrivere.

Riguardo agli altri aspetti legati al regolatore, credete sia il caso di introdurre anche dei controlli sul controllore :lol: ?

Intendo dei limiti sulla saturazione, bande morte, ecc.. se si, quando e come dovrei farlo!? Ovviamente non pretendo che qualcuno scriva il software per me, ma solo che mi vengano date delle indicazioni per evitare errori grossolani dettati dalla scarsa esperienza.

C'è qualche altro suggerimento che la vostra esperienza suggerisce a un novellino come me :blink: ?

Inoltre; avete qualche suggerimento a proposito di testi che siano orientati alla programmazione in AWL magari con alcuni esempi per progredire rapidamente?

GRAZIE in anticipo! siete veramente preziosi

Modificato: da massiTT
Inserita:
Anticipo sulla reazione ....cioè dovrei andare a valutare come varia la grandezza controllata e non come varia l'errore giusto?

Esatto!

Io, per prima cosa, valuterei se è il caso di usare un PLC.

Poi, in ogni caso, escluderei la programmazione in ladder.

Però, ripeto, non ho esperienza specifica sul controllo di turbine idrauliche.

Adelino Rossi
Inserita:

Prima di fare esperimenti sulla regolazione di velocità sarà bene che sia installato e funzionante il sistema o meccanico o elettronico di sovravelocità e blocco della macchina.

Sono dispositivi indipendenti dalla regolazione per evitare l'andata in fuga del gruppo.

Il rischio che si apra in eccesso la valvola del distributore è concreto, il costruttore assieme alla curva di avviamento da anche la sovravelocità ammessa.

Inserita: (modificato)

:o Grazie Livio! mi hai risposto quasi in tempo reale

Il PLC è già in campo!

in realtà non si occupa solo della regolazione di velocità, che in questo caso, su gruppi così piccoli e non regolanti, non è un aspetto critico; serve per gestire anche tutta la parte di automazione del gruppo in senso più ampio; apre e chiude la rotativa si occupa della centralina oleodinamica, della diagnostica, ecc..

Con l'occasione, cioè un impianto non particolarmente critico, per l'aspetto "regolazione di velocità", sto tentando di approfondire l'argomento.

Tentando a questo punto di abbandonare il Ladder (almeno in parte :rolleyes: ) hai qualche testo da suggerire per accelerare l'apprendimento delle tecniche di programmazione in AWL?

Riguardo agli "accessori" di cui dotare il controllore?

Grazie veramente!

Per quanto riguarda il centrifugo meccanico e le sicurezze intrinseche a livello meccanico, indubbiamente saranno installate e collaudate prima di ogni prova sulla regolazione della velocità.

Abbiamo già messo in servizio gruppi simili, ma senza un vero e proprio regolatore di velocità dedicato; è per questo che sto cercando di approfondire proprio l'aspetto di controllo della velocità del gruppo :)

Modificato: da massiTT
Inserita:
hai qualche testo da suggerire per accelerare l'apprendimento delle tecniche di programmazione in AWL?

nella sezione S7 c'è una discussione recentissima proprio sull'argmento

Inserita:

OK :thumb_yello: vado a vedere ....

se vi viene in mente qualcos'altro ....sono una "spugna" pronta ad assorbire ogni suggerimento :superlol:

Vi terrò aggiornati su quelle che possono essere le evoluzioni future

  • 2 months later...
Inserita:

Come promesso a suo tempo ...fornisco aggiornamenti in merito alla discussione aperta qualche tempo fa.

La messa in servizio dell'impianto si è conclusa la scorsa settimana.

Il regolatore di velocità, a valle dei vostri preziosi consigli si comporta egregiamente; o meglio si comporta molto meglio rispetto a quelli che erano i requisiti di funzionamento richiesti.

Credo comunque che si possa indubbiamente fare meglio.

Il gruppo come avevo accennato a suo tempo non deve lavorare in isola pertanto, una volta agganciato alla rete non ci si deve preoccupare di controllarlo in velocità.

Riguardo invece all'esecuzione del controllo di velocità per la fase di avviamento, l'errore si mantiene sempre al di sotto del 4 per mille rispetto alla velocità nominale (requisito richiesto: errore sempre inferiore all'1%).

Il profilo di velocità che viene implementato è una rampa composta da due curve una parte rettilinea e una parabolica in modo da fare avvicinare il gruppo alla velocità di rotazione nominale in modo graduale (tipo rampa ad s per intenderci).

I parametri impostabili dall'operatore per la parametrizzazione della rampa sono 2: la durata della rampa in secondi e la percentuale della parte parabolica rispetto alla parte rettilinea (0.01 = tutta rettilinea; 0.99 = tutta parabolica).

Questa curva, in funzione del tempo, introduce il Set Point di velocità che il controllore dovrà far seguire alla macchina.

Il controllore implementa una parte di FFWD (ricavata interpolando una curva Velocità/apertura che mi sono costruito in precedenza) e una parte PID per la correzione dell'errore rimanente.

Ho provato poi a sovrapporre a questa tipologia di curva anche alcune altre curve per stressare il controllo (tipo a gradino o sinusoidi) e devo dire che il regolatore risponde sempre con un errore contenuto (minore dell'1% richiesto) almeno fino a quando si resta distanti dai tempi di risposta degli attuatori.

A fronte di questi risultati già molto buoni credo si possa migliorare ancora e anche di molto per due motivi:

1 - la parte PID della regolazione non è stata creata ad hoc ma si è utilizzata una routine messa a disposizione dall'editor

2 - la parametrizzazione del PID è stata fatta da me e non avendo molta esperienza a riguardo è sicuramente perfettibile

Comunque resta la soddisfazione di aver applicato nella pratica con successo, quanto è stato oggetto della discussione

Grazie.

Inserita:

Quando si ha la possibilità di leggere la fine della storia con soluzione e risultati fa smepre piacere.

Questo è lo spirito del forum: lo scambio delle esperienze e delle conoscenze.

massiTT se continui nei tuoi perfezionamenti tienici al corrente; ovviamente se vuoi continuare a discutere per apportare migliorie al sistema trovi tutte le porte spalancate :)

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...