Vai al contenuto
PLC Forum


Ottimizzare al meglio pid temperatura s71200


drake82

Messaggi consigliati

Buongiorno a tutti. Sto lavorando su una macchina dove la funzione principale è mantenere la temperatura constante e per questo ho usato il pid temp del s71200. Dopo aver fatto l'ottimizzazione fine, durata circa 7 ore ho notato che quando cambio il set point impostato la temperatura sala fino a 1,5°C(SP 44°C- PV 45,6 °C) in più del mio set point per poi scendere.

Siccome per scendere di 1°C ci mette piu di 1 ora vorrei fare in modo di non superare troppo il set point.

Ora i valori calcolati dall'ottimizzazione fine sono questi.

P=1,88493

I=2,601367

D=3,19345E-1

Coefficiente ritardo derivata = 0,1

Ponderazione P=1,0

Ponderazione D=0,0

Tempo campionamento algoritmo = 4,19999

Volendo ridurre al minimo questo aumento di temperatura cosa mi consigliate ???

Io vorrei provare diminuire il valore P di poco ma se avete consigli sono tutto orecchie.

 

Grazie a tutti

 

Link al commento
Condividi su altri siti


A me pare che il tempo integrale sia completamente sbagliato.
Come si fa ad avere un tempo integrale di 2,6 secondi su un processo così lento?
Io vedrei meglio un integrale dell'ordine almeno di alcuni di minuti, non di un paio di secondi.

E la derivata a zero.

Link al commento
Condividi su altri siti

Batta sono i valori calcolati con l'ottimizzazione fine del tia portal. Non so se è normale ma l'ottimizzazione fine è durata circa 7 ore e mi ha dato questi valori. Stavo pensando di rifarla ma purtroppo non so se posso rifarla visto che il cliente ha fretta. Cosa consigli ??

Link al commento
Condividi su altri siti

1 ora fa, batta scrisse:

A me pare che il tempo integrale sia completamente sbagliato.

 

Concordo pienamente con Batta.

 

Io comincerei con togliere di mezzo il derivativo.

3 ore fa, drake82 scrisse:

Tempo campionamento algoritmo = 4,19999

 

Cosa sono? secondi? millisecondi?

Poi non capisco perchè fare tempi con valori così astrusi. Un processo che impiega oltre 60'per ridurre la temperatura di 1°C, un tempo di campionamento di 10" è anche troppo veloce.

 

La sovra temperatura è dovuta sicuramente al derivativo e, probabilmente, ad un guadagno proporzionale troppo elevato.

In un processo così lento l'uso di un derivativo il più delle volte è deleterio. Semmai un certo anticipo di reazione può dare qualche beneficio, ma solo in casi estremi.

Poi procederei con una ottimizzazione in manuale.

Lascerei solo il guadagno proporzionale partendo da un valore di un valore di 1.2, crescendo con passi molto piccoli se l'errore risulta essere troppo grande. 

Bisogna fare in modo che l'errore sia positivo ovvero che il valore della variabile sia sempre inferiore al valore di consegna o set point.

 

Solo quando si è ottimizzato, senza sovra elongazioni il proporzionale, si può introdurre la correzione integrale con tempi molto lunghi.

Link al commento
Condividi su altri siti

Buongiorno Livio, i tempi che vedi sono frutto del calcolo automatico del TIA Portal.

I 4,19999 sono secondi, e sempre calcolati da lui.

 

Quindi elimino la derivata mettendola a 0.

Abbasso il proporzionale a 1.2 e cerco di ottimizzarlo il più possibile

Inserisco l'integrale. Seconde voi da che tempo posso partire??

 

Un'altra cosa, secondo voi perché l'ottimizzazione fine ha dato questi valori se sono completamente sbagliati??? 

Link al commento
Condividi su altri siti

Quote

Batta sono i valori calcolati con l'ottimizzazione fine del tia portal.

Ma hai fatto solo l'ottimizzazione fine o, prima, hai fatto quella che, mi pare, Siemens chiama "ottimizzazione iniziale"?
L'ottimizzazione fine va fatto solo dopo l'altra ottimizzazione.

In ogni caso, le ottimizzazioni automatiche non mi hanno mai ispirato una grande fiducia.
A mio avviso, vanno bene per trovare dei parametri che più o meno si adattano quando proprio non sai da dove partire.
Per ottimizzare il PID poi sarebbe molto utile poter visualizzare un trend con set point, valore di processo e uscita del PID.

 

Comunque, come dice Livio, comincia impostando un tempo di campionamento fisso (10 secondi è già un campionamento veloce, per il tuo caso).

Attenzione che campionamento di 10 secondi non significa solo passare questo parametro alla funzione PID (che, tra l'altro non è più indispensabile perché la funzione rileva questo tempo), ma significa richiamare il PID ogni 10 secondi.

Poi, come suggerito da Livio, la regola dice di partire solo col proporzionale.
Vista la lentezza del tuo processo, potresti azzardare inserendo già anche il tempo integrale, ma di 30 minuti, non di 2 secondi.
 

Link al commento
Condividi su altri siti

8 minuti fa, batta scrisse:

In ogni caso, le ottimizzazioni automatiche non mi hanno mai ispirato una grande fiducia.

 

Funzionano bene quando è possibile un'esatta modellizzazione del processo.

Ad esempio gli autotuning degli azionamenti funzionano quasi sempre ottimamente, proprio perchè il motore oramai è modellizzato in modo quasi perfetto.

 

Io diffido anche dei regolatori di libreria (specie quelli siemens) perchè sono progettati sull'applicazione media

Link al commento
Condividi su altri siti

Quote

Io diffido anche dei regolatori di libreria (specie quelli siemens)

Sì, lo so. Questa tua diffidenza è ben nota, ma ti posso garantire che funzionano molto bene. Basta saperli usare.
Anche un PID perfetto, studiato e sviluppato appositamente per una determinata applicazione, se usato in modo non corretto porta a risultati sbagliati.

Link al commento
Condividi su altri siti

Batta l'ottimizzazione iniziale non sono riuscito a farla perché ho il set point troppo vicino alla variabile di processo. Il prodotto da riscaldare si trovava già a 35°C e io dovevo portarlo a 41°C.

Se richiamo il PID ogni 10 secondi credo che posso creare qualche problema e spiego il motivo. (ma sicuramente sbaglio)

Per riscaldare l'olio ho usato un contattore statico. Se imposto 10s come tempo di campionamento significa che come minimo il contattore deve essere a ON per 10s, e penso che questo possa creare qualche problema.

 

Perdonami la banalità, se non sbaglio il tempo integrale ha come unità di misura i secondi. Quindi inserisco 1800??

 

 

Link al commento
Condividi su altri siti

5 minuti fa, drake82 scrisse:

Per riscaldare l'olio ho usato un contattore statico. Se imposto 10s come tempo di campionamento significa che come minimo il contattore deve essere a ON per 10s, e penso che questo possa creare qualche problema

 

 

Assolutamente NO!

 

Il tempo di on e di off lo stabilirà il regolatore lavorando in "burst" secondo entità dell'errore.

In 10" di quanto aumenta la temperatura dell'olio? Questo è un  dei parametri da tenere conto per impostare il tempo equivalente al 100% di burst.

 

Il tempo di campionamento deve essere indipendente dal tempo di regolazione.

 

Da quello che scrivi deduco una brutta cosa: che il tuo regolatore sta lavorando come se non esistesse, come un semplice termostato on-off.

Sinceramente spero di sbagliarmi, ma se così fosse......sarebbe da rivedere tutto.

Sempre da quello che scrivi traspare uan scarsa dimestichezza con i problemi di regolazione, se è così sarebbe meglio che prima tu ti documentassi, perchè certi problemi, anche apparentemente facili, non si risolvono improvvisando i fidando degli strumenti messi a disposizione delle librerie.

 

13 minuti fa, batta scrisse:

Anche un PID perfetto, studiato e sviluppato appositamente per una determinata applicazione, se usato in modo non corretto porta a risultati sbagliati.

 

Non voglio riprendere una diatriba che ci vede da sempre sui lati opposti della barricata.

Qualsiasi strumento se mal usato darà sempre pessimi risultati. Questo è incontestabile.

E' anche parimenti incontestabile che se usato correttamente uno strumento specialistico darà sicuramente risultati migliori di uno strumento generico.

Link al commento
Condividi su altri siti

Ma fammi capire una cosa: dici che per scendere di 1°C ci mette un'ora. E per salire di 1°C con teleruttore sempre chiuso?

Link al commento
Condividi su altri siti

Livio se imposto il tempo di richiamo del pid ogni 10 secondi lui è  a on per 10 secondi, almeno leggendo il manuale siemens ho capito questo(più tardi posto il manuale, ora non ho modo di farlo ) Sicuramente non sono un esperto di regolazione e questo si è capito, ecco perché ho chiesto aiuto.  

 Per salire di 1°C ci ha messo intorno ai 30-35minuti

Link al commento
Condividi su altri siti

9 minuti fa, drake82 scrisse:

 Per salire di 1°C ci ha messo intorno ai 30-35minuti

 

Quindi anche se lo SSR chiude per 10" non succede nulla!

 

Un regolatore PI(D) che pilota uno SSR ha 2 modi di lavorare:

  1. regola la fase di innesco in modo da controllare la potenza elettrica di riscaldamento
  2. lavora sul "burst" o pacchetto. In altri termini si fissa un tempo equivalente al 100%, ad esempio 100". Il regolatore poi terrà chiuso l'attuatore per un tempo equivalente alla percentuale voluta. Questo tempo deve essere indipendente dal tempo di campionamento.

Immagina di avere un'uscita analogica 0 - 10V che funga da riferimento per l'attuatore. Il regolatore darà in uscita un livello analogico, l'attuatore modulerà il tempo di on in funzione del livello analogico. Sino a qualche anno fa venivano costruiti degli attuatori specifici per riscaldamento che lavoravano proprio in questo modo. Ricevevano un segnale 0 - 10v  come riferimento e poi aprivano e chiudevano  in funzione del riferimento.

 

L'uscita del PID dovrebbe essere un numero equivalente al riferimento.

 

Io non conosco come lavora questo regolatore, ma conoscendo la filosofia del costruttore mi aspetto qualsiasi porcata ( qui Batta dissentirà :smile:).

Però anche se anche lavorasse in on - off come un termostato (ma a che serve allora un PID?) 10" come quanto minimo di accensione / spegnimento, con l'inerzia termica che dichiari, è un tempo trascurabile, quasi un infinitesimo; equivalente a circa 5 millesimi di grado di incremento di temperatura.

Link al commento
Condividi su altri siti

Se può essere utile il pid ha calcolato anche il tempo minimo di on e tempo minimo di OFF che equivale a 4.0 secondi on e 0.2 secondi OFF . Secondo voi perché il pid mi ha calcolato questi parametri ??? Ho sbagliato io a fare qualche procedura ?? 

Link al commento
Condividi su altri siti

Trovo strano che siano differenti e che abbiano quei valori.

Teoricamente dovrebbero essere uguali ed equivalere al quanto minimo di modulazione PWM.

Lavorando a 50 Hz in trifase il tempo minimo teorico è pari a 6.6 ms, mentre in monofase è di 20 ms, ipotizzando di poter innescare lo SSR su tutti gli zeri del periodo.

 

Quando lavoro, ad esempio, in monofase tengo un tempo minimo di "on" 20 ms (1 %) e 2000 ms (100%) come massimo, proporzionalmente  tempi simili per il trifase.

Link al commento
Condividi su altri siti

Quote

Per salire di 1°C ci ha messo intorno ai 30-35minuti

Quindi, 10 secondi sono nulla.

 

Quote

Se può essere utile il pid ha calcolato anche il tempo minimo di on e tempo minimo di OFF che equivale a 4.0 secondi on e 0.2 secondi OFF . Secondo voi perché il pid mi ha calcolato questi parametri ??? Ho sbagliato io a fare qualche procedura ?? 

 

Sinceramente non lo so. Bisognerebbe provare a fare, prima dell'ottimizzazione fine, l'ottimizzazione iniziale.
Mi pare poi di capire che tu non hai richiamato il PID ad intervalli regolari, pari al tempo di campionamento impostato, ma in OB1 (o in un blocco richiamato in OB1).
In questo caso la funzione PID, durante l'ottimizzazione, calcola un tempo di campionamento che sarà un multiplo del tempo di ciclo rilevato (mi pare faccia la media di 10 cicli).
Si può fare anche così ma, come afferma la stessa Siemens, la qualità della regolazione sarà più scadente.

 

Se richiami la funzione PID ad ogni ciclo, la funzione in realtà ricalcolerà l'algoritmo solo allo scadere del tempo di campionamento. Nel caso di uscita PWM però, il tempo minimo di ON e di OFF possono essere più piccoli del tempo di campionamento.
Meglio però richiamare il PID ad intervalli regolari. Se imposti un tempo di campionamento a 10 secondi, richiama il PID ogni 10 secondi. Ideale, come concetto, sarebbe richiamarlo in un OB a tempo. Su un tempo di 10 secondi però un errore di pochi millisecondi non causa problemi di jitter, quindi vedi tu cosa preferisci.
Ovviamente, se la funzione viene richiamata ogni 10 secondi, mentre non viene richiamata non può aggiornare lo stato dell'uscita PWM. Ecco che, in questo caso, il tempo più breve di ON e di OFF non potranno essere inferiori al tempo di richiamo del PID.
Attenzione a non fraintendere. Il teleruttore potrà comunque rimanere sempre OFF o sempre ON. Solo, quando inizierà a modulare, potrà fare accensioni o spegnimenti di minimo 10 secondi.
Però, se in 35 minuti sale di un grado, 10 secondi non ti causeranno nessun problema.

Se assolutamente vuoi avere impulsi più brevi, puoi sempre utilizzare, al posto dell'uscita PWM del PID, l'uscita "Output" in real, e passare questo valore ad una tua funzione che converte da 0 a 100% in impulsi di durata variabile. Non ne vedo però la necessità.

Link al commento
Condividi su altri siti

18 minuti fa, batta scrisse:

Nel caso di uscita PWM però, il tempo minimo di ON e di OFF possono essere più piccoli del tempo di campionamento.

 

In altre parole mi dici che se io imposto 10" di tempo di campionamento del regolatore, anche il tempo minimo di PWM sarà pari a 10"?

 

Se è così i miei preconcetti si rafforzano.

Link al commento
Condividi su altri siti

Se la funzione la richiami ogni 10 secondi, come può modificare lo stato dell'uscita mentre non viene elaborata?
Come spiegato, se questo non soddisfa le proprie esigenze, ci sono due possibilità: richiamare il PID ad ogni ciclo (accettando una riduzione della qualità della regolazione), oppure anziché utilizzare direttamente l'uscita PWM del PID si utilizza l'uscita in Real 0..100% e si usa questo valore per creare gli impulsi PWM in un'altra funzione, richiamata con frequenza più elevata. Ecco che ti puoi generare anche impulsi dell'ordine dei millisecondi.

Personalmente è questa la soluzione che preferisco, ma la differenza, dal lato pratico, è ben poca, se non nulla.
Se faccio un campionamento a 10 secondi significa che sto gestendo, come in questo caso, un processo molto lento, ed impulsi PWM dell'ordine dei millisecondi non avrebbero quindi molto senso.
Se ho bisogno di impulsi PWM di breve durata significa che sto gestendo un processo veloce, e quindi anche il tempo di campionamento del PID dovrà essere veloce.

Link al commento
Condividi su altri siti

Buongiorno, il pid viene richiamato in un OB a tempo. Il tempo di campionamento lo ha calcolato lui mentre faceva l'ottimizzazione fine. Purtroppo l'ottimizzazione iniziale non la posso fare per vie della poca differenza tra set point e variabile di processo. 

Comunque proverò ad abbassare il valore P, aumentare la I ed eliminare la D. 

Link al commento
Condividi su altri siti

Quote

Buongiorno, il pid viene richiamato in un OB a tempo

Ma con che tempo?

Fai così: se 10 secondi ti sembrano troppi, fai il campionamento ogni 5 secondi.
Questo vuol dire che imposti nei parametri del PID in tempo di campionamento a 5 secondi, e che richiami la funzione PID ogni 5 secondi.

Lascia perdere l'ottimizzazione.
Metti la derivata a zero, il proporzionale a 1,5 e l'integrale a 30 minuti, e vedi cosa succede.
Immagino tu abbia un pannello operatore. Se non c'è già, crea un trend dove registri set point, temperatura reale e uscita del PID 0..100% (ti basta una registrazione ogni 30 secondi). Sul trend visualizza almeno due ore.

Link al commento
Condividi su altri siti

56 minuti fa, batta scrisse:

Se la funzione la richiami ogni 10 secondi, come può modificare lo stato dell'uscita mentre non viene elaborata?

 

Di fatti non lo modifica.

Se ad esempio l'ultima uscita prevedeva un Ton = 200 ms (10% di un periodo pari a 2") per 10" questo rapporto non varierà, solo dopo che il regolatore avrà aggiornato il riferimento il duty cycle potrà variare.

 

E' una cosa normale.

Pensa a quando, ad esempio, regoli una posizione con un tempo di campionamento di 10 ms, avendo un azionamento chopper con anello di velocità avente banda passante >= 1 kHz. Potresti benissimo variare la velocità ad ogni millisecondo, invece la mantieni costante per 10 ms.

 

1 ora fa, batta scrisse:

oppure anziché utilizzare direttamente l'uscita PWM del PID si utilizza l'uscita in Real 0..100% e si usa questo valore per creare gli impulsi PWM in un'altra funzione, richiamata con frequenza più elevata. Ecco che ti puoi generare anche impulsi dell'ordine dei millisecondi.

 

Questo è più corretto.

 

1 ora fa, batta scrisse:

Personalmente è questa la soluzione che preferisco, ma la differenza, dal lato pratico, è ben poca, se non nulla.
Se faccio un campionamento a 10 secondi significa che sto gestendo, come in questo caso, un processo molto lento, ed impulsi PWM dell'ordine dei millisecondi non avrebbero quindi molto senso.
Se ho bisogno di impulsi PWM di breve durata significa che sto gestendo un processo veloce, e quindi anche il tempo di campionamento del PID dovrà essere veloce.

 

Non sempre è vero.

 

17 minuti fa, batta scrisse:

Metti la derivata a zero, il proporzionale a 1,5 e l'integrale a 30 minuti, e vedi cosa succede.

 

Concordo.

Però vista la poca esperienza di drake82, forse sarebbe meglio partire senza integrale e proporzionale più basso.

Impiegherà più tempo ad ottimizzare, ma si renderà conto molto meglio di come vanno le cose.

Link al commento
Condividi su altri siti

Quote

Di fatti non lo modifica.

Se ad esempio l'ultima uscita prevedeva un Ton = 200 ms (10% di un periodo pari a 2") per 10" questo rapporto non varierà, solo dopo che il regolatore avrà aggiornato il riferimento il duty cycle potrà variare.

Sì, certo. Ma, se si desidera utilizzare l'uscita PWM messa a disposizione direttamente dalla funzione PID, questo implica non solo che non varierà la percentuale di uscita, ma anche che non sarà possibile aggiornare lo stato dell'uscita digitale PWM, se la funzione PID non è elaborata.
È compito del programmatore stabilire se questo limite può o meno causare problemi, ed eventualmente crearsi una banalissima funzione per generare gli impulsi PWM come meglio crede.

Link al commento
Condividi su altri siti

OB viene richiamato ogni secondo. Sicuramente è piccolo ma leggendo il manuale ho notato che questo tempo serve per calcolare il valore di on e off del Pwm. Il tempo di campionamento pid, tempo on tempo on sono stati calcolati in automatico dall'ottimizzazione fine. Comunque proverò come avete consigliato. Abbasso il P, imposto la I a 1300secondi e azzero la D e seguirò il trend delle misure.

 

Sicuramente leggerò il manuale scritto da Livio, avete qualche altro consiglio da darmi ???

Grazie 

Link al commento
Condividi su altri siti

3 ore fa, drake82 scrisse:

avete qualche altro consiglio da darmi ???

 

Non posso che ripetere quanto scritto da Batta e che io condivido nella sostanza e nel principio:

6 ore fa, batta scrisse:

Fai così: se 10 secondi ti sembrano troppi, fai il campionamento ogni 5 secondi.
Questo vuol dire che imposti nei parametri del PID in tempo di campionamento a 5 secondi, e che richiami la funzione PID ogni 5 secondi.

Lascia perdere l'ottimizzazione.
Metti la derivata a zero, il proporzionale a 1,5 e l'integrale a 30 minuti, e vedi cosa succede.

 

Link al commento
Condividi su altri siti

Ripensandoci un po', secondo me si potrebbe aumentare il proporzionale. È vero che l'ottimizzazione ha calcolato un proporzionale di circa 1,8, ma è anche vero che ha calcolato un integrale di 2,6 secondi. Anche con proporzionale basso, con questo integrale, in relazione ai tempi di relazione del tuo processo, secondo me il PID lavorava quasi come un ON/OFF. Ora, se al PID passi il set point e variabile di processo in gradi, con un proporzionale di 1,5 (lasciamo fuori, almeno per ora, l'integrale), per partire con l'uscita del PID al 100% dovresti avere un errore di oltre 60 gradi. Invece tu partirai, se non ho capito male, con un errore dell'ordine dei 15-20 gradi. Ecco che, con proporzionale 1,5 e integrale 30 minuti, il PID impiegherebbe un sacco di tempo solo per portare l'uscita al 100%.
Probabilmente potrebbe andare bene un proporzionale tra 10 e 20 (con 20, integrale a parte, il pid comincerebbe a ridurre l'uscita quando mancano 5 gradi al set point), e integrale sempre di circa 30 minuti. Ricorda che integrale più lungo significa azione integrale più lenta.

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