Vai al contenuto
PLC Forum


regolazione PID con risposta "lontana" nel tempo


Akira

Messaggi consigliati

Salve a tutti.

In un controllo di processo devo eseguire una regolazione la cui risposta è "lontana" nel tempo.

Per spiegarmi meglio vi descriverò il processo usando un esempio più semplice.

Immaginiamo che devo regolare la temperatura dell'acqua della doccia in cui:

  • conosco il flusso in tempo reale dell'acqua calda
  • conosco il flusso in tempo reale dell'acqua fredda
  • non posso regolare il flusso dell'acqua calda ma posso regolare il flusso dell'acqua fredda
  • conosco la temperatura letta da una sonda in uscita alla doccia
  • la distanza tra la regolazione e la misura non è trascurabile (si immagini la distanza ottenuta sommando la lunghezza del tubo dall'uscita del miscelatore fino al corpo umano che riceve l'acqua per farsi la doccia)

L'obiettivo è regolare la temperatura in modo che raggiunga un valore di set-point.

Attualmente è in essere una regolazione PI (PID in cui la componente D è assente). Il processo regola ma per effetto della non trascurabile distanza tende ad oscillare in continuazione ed in caso di deviazione del flusso dell'acqua calda tende ad allontanarsi di molto dal set impostato ed impiega diverso tempo prima di ritornare ad un valore prossimo al set dopo di chè inizia nuovamente a pendolare.

Ripetuti tentativi alla ricerca dei parametri P ed I con vari metodi conosciuti sono stati vani. Migliorato di certo ma non preciso come ci si aspetterebbe.

Tra i vari metodi individuati ho scoperto il metodo del Predittore di Smith... ma non riesco ad implementarlo nel PLC, un Siemens S7-416 su cui gira il blocco FB41 standard della libreria Siemens per la gestione del PID in questione.

Suggerimenti? C'è qualcuno che ha implementato il Predittore di Smith in simili circostante o un controllo di ottimizzato per applicazioni di questo tipo?

Grazie.

Link al commento
Condividi su altri siti


Il primo suggerimento che mi sento di darti è: metti da parte i blocchi standard siemens, sono fatti per impieghi generali, quindi quando li applichi ad un caso molto particolare come il tuo, mostrano tutti i loro limiti.

 

Questo è un caso in cui la parte derivativa non può essere dimenticata, anche se bisogna usare la derivata come anticipo di reazione e non come derivata dell'errore.

 

Effettuare un regolatore basato su modello, osservatore e predittore può dare anche risultati migliori, però bisognerebbe conoscere esattamente tutte le variabili ed il loro peso nel processo. Dalal tua descrizione si capisce solo il senso generale del problema.

 

Farsi un blocco PID ed implementarlo su PLC 300-400 è ababstanza semplice, io ho sempre e solo usato (quando lavoravo con PLC) i miei regolatori.

Link al commento
Condividi su altri siti

Quote

Il primo suggerimento che mi sento di darti è: metti da parte i blocchi standard siemens, sono fatti per impieghi generali, quindi quando li applichi ad un caso molto particolare come il tuo, mostrano tutti i loro limiti.

Io non condivido questa affermazione.
Prima di tutto perché un PID è un algoritmo, una formula matematica. Ci possono essere modi diversi di calcolare integrale e derivata, ma il risultato fondamentalmente non cambia.
Posso essere d'accordo con Livio se si parla di PID per posizionamenti, dove serve una risposta molto veloce, e dove può essere utile avere una funzione più leggera (anche se, con le prestazioni delle attuali CPU, questo non è più così importante).
Per regolazioni di temperatura (ma non solo) i PID Siemens funzionano benissimo, ed hanno tutto quello che serve.

 

Purtroppo, in un caso come il tuo, con notevole ritardo del feedback, dovrai scendere a compromessi, indipendentemente dal PID, Siemens o non Siemens, che utilizzerai.
Le oscillazioni (supponendo che non ci siano variazioni nella fornitura di acqua calda e fredda) possono essere causate da un guadagno troppo alto, da un tempo integrale troppo breve, o da entrambi.
Se vuoi una regolazione stabile, ti dovrai accontentare di un PID lento, che raggiunge il SP in modo graduale, e che risponde lentamente anche ad eventuali variazioni di portata e/o di temperatura dell'acqua di alimentazione.

Anche la derivata (generalmente non utilizzata per regolazioni di temperatura), come dice Livio, può aiutare ad anticipare la reazione. Da usare comunque con moderazione.

 

In alternativa, potresti provare ad utilizzare  FB58 al posto di FB41, che ha anche le funzioni per l'ottimizzazione in automatico dei parametri del PID.
Sinceramente, non credo riesca a fare meglio di quello che si può fare manualmente con un po' di pazienza.

 

La soluzione ottimale però la potresti ottenere aggiungendo due sonde di temperatura.
Conosci già la portata istantanea dell'acqua calda e dell'acqua fredda. Se aggiungi anche la temperatura dell'acqua calda e dell'acqua fredda, diventa molto semplice miscelarle in modo da ottenere, quasi istantaneamente, la temperatura desiderata. Il PID, in questo caso, potrebbe servire solo per effettuare piccole correzioni. Ecco che potresti ottenere un sistema che raggiunge velocemente il SP, che si adatta velocemente ad eventuali variazioni di portata e/o di temperatura, ed anche stabile.

Link al commento
Condividi su altri siti

Ciao a tutti, per par condicio, do ragione sia a batta che a Livio. Batta ha ragione sul principio matematico, ma altrettanto Livio può aver ragione quando per raggiungere il risultato devo "modificare" la grandezza dei componenti per adattarli al pensiero Siemens (non parlo dei Sipart DR22 che erano l'antitesi del controllo PID, anche se funzionanti a tutti gli effetti, ma l'ho notato su blocchi PID integrati negli inverter).

 

Nello specifico della discussione, la regolazione è una heat/cold, semplice, integrata nella maggior parte dei regolatori di media fascia, senza arrivare al predittore di Smith (da quanto che non lo sentivo !!! Tipo, manuale AC Station Ascon !!!).

 

Una regolazione di questo tipo prevede una sola variabile di controllo (temperatura) e una uscita (che poi può essere splittata su di una analogica, due digitali ecc..ecc..). Di base un regolatore ha abilitato tutte e tre le funzioni, con i classici 5%, 5:3 min e 1 min di derivata.

 

Da qua si apre il mondo, perché il regolatore (nel tuo caso ovviamente software) andrà poi adattato al processo, cercando di capire un po' i tempi di reazione. 

L'esempio della doccia non l'ho molto capito, abbinandolo ad una 416, ma penso che sia stato un ovvia similitudine per non entrare troppo nello specifico (cosa che invece a volte chiarisce meglio il problema).

 

Ulteriore particolare è il discorso della portata, perché se la citi, probabilmente ti verrà richiesta in qualche parte del tuo processo e dovrà essere integrata con la temperatura (in prima battuta direi anche no, perché pensando ad un dosaggio, viene richiesta la portata ad una certa temperatura e se non hai vincoli, queste possono viaggiare in maniera indipendente). 

 

Non vorrei continuare in discorsi inutili, ma stiamo appunto parlando di un dosaggio per una miscelazione in un batch ?

 

Buona giornata

 

 

 

Link al commento
Condividi su altri siti

Quote

Prima di tutto perché Prima di tutto perché un PID è un algoritmo, una formula matematica. Ci possono essere modi diversi di calcolare integrale e derivata, ma il risultato fondamentalmente non cambia. . Ci possono essere modi diversi di calcolare integrale e derivata, ma il risultato fondamentalmente non cambia.

 

Che tu non sia daccordo mi sembra logico, visto che credi in siemens quasi in modo fideistico:), ma queste sono opinioni personali,

 

Quello che non è corretto è la tua affermazione che cito.

Non è vero che " Prima di tutto perché un PID è un algoritmo, una formula matematica." Non è solo una formula matematica, anzi non è una formula matematica univoca.

Se tu leggessi qualche testo un po' specialistico sui sistemi controllo, ti renderesti conto che di di così detti regolatori PID ne essitono quasi infinite varianti di architettura, che non sono solo modi differenti di calcolare le componenti, ed il risultato finale, purtroppo per te, cambia e anche di molto.

 

Si può passare dall'impossibilità di mantenere un valore costante ad un regolatore che mantiene perfettamente costante la variabile controllata.

Ti faccio l'esempio più semplice e banale.

La componente derivativa la si calcola sempre eseguendo la derivata di una variabile.

Ma se la variabile è l'errore si ha un risultato di transitorio, mentre se è la reazione si ha un altro risultato. Quale è il migliore? Dipende dal tipo di processo da controllare. Se vuoi che il processo sia insensibile ai transitori delle variazioni di riferimento il metodo migliore è usare al derivata sulla reazione. A regime il comportamento è identico.

Come vedi non si tratta di metodo di calcolo ma di strategia del regolatore.

E questo è l'esempio più semplice e banale; potrei mostrarti regolatori PID estremamente molto più complessi dove le 3 componenti interagiscono in modi molto differenti dalla semplice somma che si ha in un regolatore base-

 

E qui torniamo al punto iniziale dei regolatori di libreria.

DI norma i regolatori di libreria sono fatti per "essere buoni per tutte le stagioni" come certi abiti.  Quando vai a lavorare in condizioni particolari cominciano a mostrare segni di insufficienza.

Poi, dal mio punto di vista che so che non condividi, i regolotori di libreria siemens sono anche inutilmente complicati. Ma qui si ritorna alle opinioni personali.
 

Quote

 

Sinceramente, non credo riesca a fare meglio di quello che si può fare manualmente con un po' di pazienza

 

 

Io invece sono convinto esattamente del contrario.

Studiando un regolatore PID con architettura specifica per quel problema, si otterrebbero risultati decisamente migliori e con tempi di ottimizzazione molto più rapidi.

Link al commento
Condividi su altri siti

Adelino Rossi

se ho capito bene, si tratta di un classico sistema di attemperamento di un fluido. metodo che consiste nell'iniettare in modo diretto acqua fredda o comunque a temperatura inferiore nel fluido da raffreddare, (acqua calda o vapore e mantenere a temperatura costante.

nell'industria è normalmente utilizzato per attemperare acqua calda o vapore.

se il fluido di raffreddamento non è compatibile si utilizzano dei scambiatori di calore ma il principio è lo stesso.

si regola con un normale pid opportunamente impostato in base al tempo di reazione del sistema.

La risposta è lontana o vicina in funzione della capacità di scambio termico e della distanza della sonda di misura rispetto all'attemperatore.

Un metodo è quello di inserire la temperatura di regolazione immediatamente a valle dell'attemperatore e una seconda misura all'ingresso dell'utilizzatore.

la misura vicina serve a velocizzare il pid e a mantenere stabile la regolazione, la misura all'utilizzo serve per avere una indicazione delle perdite e a settare il regolatore in modo che le compensi.

 

Quote
  • non posso regolare il flusso dell'acqua calda ma posso regolare il flusso dell'acqua fredda

 

è evidente, in quanto il flusso dell'acqua calda lo regola la richiesta dell'utilizzo, mentre l'acqua fredda la regola il regolatore.

 

Quote
  • conosco il flusso in tempo reale dell'acqua calda
  • conosco il flusso in tempo reale dell'acqua fredda

in applicazioni di questo tipo sono misure puramente indicative.

se anzichè fare esempi banali che possono creare difficoltà di interpretazione si descrive subito la reale applicazione si fa prima.

 

Attemperamento.jpg.7afc70901914fb20c07374ec959eff28.jpg

 

 

Link al commento
Condividi su altri siti

Quote

DI norma i regolatori di libreria sono fatti per "essere buoni per tutte le stagioni" come certi abiti.  Quando vai a lavorare in condizioni particolari cominciano a mostrare segni di insufficienza.

Qui stiamo parlando di un controllo di temperatura, non della traiettoria di un vettore per mandare in orbita un satellite.
I PID Siemens seguono l'algoritmo più classico, come fanno, più o meno, i PID di altri costruttori, o i PID dei termoregolatori.
Le differenze si riducono quasi esclusivamente ad un diverso modo di impostare i parametri.
Se il PID "classico" non è sufficiente, non credo sia così semplice ottenere risultati migliori costruendosi la funzione PID.

Io resto sempre dell'idea che, in questo specifico caso, la soluzione migliore sia di aggiungere due sonde di temperatura, una per l'acqua calda, una per l'acqua fredda.
Le portate istantanee già ci sono, quindi la miscelazione diventa una banale formula matematica, ed il PID serve solo per correggere piccoli errori e per compensare le perdite dal punto di regolazione al punto di utilizzo. È sicuramente molto più semplice e molto più efficace dell'implementazione di un PID particolare che, per quanto sofisticato, farebbe sempre fatica a risolvere il problema dell'elevato ritardo del feedback.
Oppure, come suggerito da Adelino, si aggiunge una sonda vicina al regolatore. In questo caso, risolto il problema del ritardo, torniamo a poter utilizzare tranquillamente il PID di libreria che, per questo tipo di regolazioni, funziona benissimo.

Link al commento
Condividi su altri siti

Quote

I PID Siemens seguono l'algoritmo più classico, come fanno, più o meno, i PID di altri costruttori

 

Appunto, è quello che ho scritto sin dal primo messaggio, solo che questo è un problema che si risolve meglio con un regolatore con architettura differente dalla classica.

Poi ognuno ha la sua filosofia.

Scrivere il codice di PID che si presti facilmente alle varianti di architettura, per chi lo sa fare, porta via pochissimo tempo; a me richiese il solo tempo necessario per dattilografare il codice (anche se sono un pessimo dattilografo meno di un'ora di lavoro).

Tempo necessario solo una tantum e che si recupera abbondantemente nella messa in marcia dell'impianto.

 

Quote

risolto il problema del ritardo, torniamo a poter utilizzare tranquillamente il PID di libreria che, per questo tipo di regolazioni, funziona benissimo.

 

Non credo sia sufficiente però, come ho scritto da subito, bisognerebbe conoscere esattamente tutte le variabili ed il loro peso nel processo. Dalla descrizione si capisce solo il senso generale del problema.

Attendiamo che l'autore della discussione, se vuole, dia queste indicazioni, visto che sino ad oggi ha inserito la discussione e poi non si è più fatto vivo.

Link al commento
Condividi su altri siti

Quote

Scrivere il codice di PID che si presti facilmente alle varianti di architettura, per chi lo sa fare, porta via pochissimo tempo; a me richiese il solo tempo necessario per dattilografare il codice (anche se sono un pessimo dattilografo meno di un'ora di lavoro).

Il problema non è scrivere la funzione PID, ma capire quale tipo di funzione potrebbe risolvere il problema.
Cambiare il modo di calcolare la derivata potrà migliorare un po' le prestazioni (da valutare caso per caso). Legare o meno il calcolo dell'integrale al proporzionale potrà rendere più o meno facile la ricerca dei parametri corretti. Ma non è che ci si possa inventare molto per risolvere il problema del ritardo.
Un PID, per quanto studiato ad hoc, potrà al massimo migliorare un po' le cose rispetto al PID di libreria, ma nulla più.

Si dovrebbe implementare un controllo di tipo predittivo ma, per poterlo fare, servono altre informazioni, servono altri dati dal campo.

 

Link al commento
Condividi su altri siti

Quote

Un PID, per quanto studiato ad hoc, potrà al massimo migliorare un po' le cose rispetto al PID di libreria, ma nulla più.

 

No, può fare molto di più, soprattutto nella facilità di ottimizzare i parametri e nella precisione di regolazione e velocità di risposta.

 

Comunque, allo stato attuale delle cose non posso che ripetere quello che ho scritto nel primo messaggio: "bisognerebbe conoscere esattamente tutte le variabili ed il loro peso nel processo." Se Akira vorrà dare altri particolari si potrà proseguire nella ricerca della miglior soluzione, altrimenti è solo una discussione accademica.

Link al commento
Condividi su altri siti

Ragazzi, grazie a tutti per il supporto.

Concordo con Livio sul suo discorso dei blocchi Siemens, magari non sempre sposano le esigenze dell'utilizzazione.

Comunque, non posso descrivervi il vero processo produttivo ma il processo descritto sopra ne descrive il reale principio.

Non è quindi la semplice regolazione della temperatura dell'acqua anche se ripeto il principio è quello.

Non è possibile aggiungervi ulteriori dispositivi per eseguire misure intermedie perchè questi dispositivi costerebbero una cifra spropositata e richiederebbero una sostanziale modifica impiantistica.

Sono approdato al Predittore di Smith dopo una lunga ricerca nella letteratura della regolazione, il problema è che mi è difficile implementarlo fattivamente. Ovviamente è accettata qualsiasi altra proposta di regolazione.

Link al commento
Condividi su altri siti

Quote

Ovviamente è accettata qualsiasi altra proposta di regolazione.

 

Purtroppo se non puoi, o non vuoi, scendere in particolari è molto difficile, anzi impossibile, darti suggerimenti mirati; con queste informazioni si può stare solo sulle genenerali.

Implementare un predittore di smith su di un PLC non è sicuramente semplice, soprattutto il PLC non è lo strumento più adatto proprio perchè è previsto principalmente per risolvere equazioni booleane.

Ai tempi avevo realizzato una scheda tecnologica basta sulla coppia 188-187 (processore  a16 bits e coprocessore matematico) proprio per affrontare simili esigenze, ma è passata più di un'era geologica (dal punto di vista informatico).

 

Forse potrebbe bastare un'ottima gestione del feedforward affiancato ad un PID con architettura studiata oppositamente per quel regolatore.

Link al commento
Condividi su altri siti

SandroCalligaro

Vedo due problemi piuttosto seri, e non dal punto di vista implementativo, ma teorico, che penso impediscano di ottenere grossi miglioramenti.

 

Come ha già accennato da batta, se si disponesse delle misure di temperatura per acqua calda e fredda, si potrebbe pensare di utilizzare il modello del sistema per anticipare un'azione, o anche solo realizzare un predittore come quello di Smith.

Non conoscendo le temperature non si ha in pratica il modello dell'azione di controllo. Si potrebbe anche immaginare di stimare qualcosa (a regime), ma a quel punto ci sarà una forte dipendenza da variazioni "veloci" delle temperature di ingresso.

 

Il principale problema, comunque, è che, anche conoscendo il modello del sistema ed implementando un predittore di Smith, la risposta del sistema sarebbe (nella migliore delle ipotesi) ritardata dello stesso tempo di ritardo presente nella catena, rispetto al regolatore ideale preso a riferimento per il predittore.

Col predittore di Smith non si compensa il ritardo (in sostanza non si torna indietro nel tempo :)), ma se ne semplifica il progetto per ottenere la stabilità.

A complicare le cose si aggiunge il fatto che, credo, il ritardo non sarà costante, perché dipenderà dalla velocità del fluido e quindi (fissata una sezione) dalla portata.

 

In ogni caso, qualunque azione "predittiva", compreso il feedforward (anche nel caso si sapesse in anticipo quando varierà il riferimento), potrebbe migliorare (sempre a patto di conoscere bene il modello) la risposta alle variazioni del riferimento, ma certamente non quelle ai disturbi, che invece mi sembra di capire che siano problematiche.

 

Alcune cose che ho detto sono più che ovvie, ma forse era utile che qualcuno le mettesse nero su bianco.;)

 

 

 

Link al commento
Condividi su altri siti

Quote

Alcune cose che ho detto sono più che ovvie, ma forse era utile che qualcuno le mettesse nero su bianco

 

Sicuramente, ma sino  a che l'autore non vorrà o ptrà descrivere nel dettaglio l'impianto a mio giudizio ogni ipotesi può essere giusta o sbagliata.

Link al commento
Condividi su altri siti

  • 5 years later...
Il 26/4/2017 alle 07:58 , Livio Orsini ha scritto:

usare la derivata come anticipo di reazione

Ciao Livio,

ho lo stesso problema. Puoi spiegare meglio a cosa ti riferisci quando dici fare la derivata della reazione?

Grazie.

Link al commento
Condividi su altri siti

  1. Gli accodamenti, specialmente per discussioni inattive da anni, sono vietati (punto "S" del regolamento).
  2. Se vuoi apri una nuova discussione.
  3. Nella sezione "Archivio" del menù "Servizi", ultimo pulsante a dx della barra dei menù, puoi scaricare il mio tutorial sui controlli e regolazioni. Li trovi anche alcune indicazioni, su come realizzare PID un po' particolari ed anche esempi pratici.
Link al commento
Condividi su altri siti

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...