Jump to content
PLC Forum


Sign in to follow this  
fabferrari

PID Siemens

Recommended Posts

fabferrari

Buongiorno a tutti voi del Forum

vorrei porvi un quesito relativo alla configurazione del PLC Siemens S7 400 e in particolare del Pid “SFB 41/FB 41 "CONT C"

premetto che mi occupo di automazione, conosco i sistemi di controllo ma non conosco il PLC Siemens.

Nel progetto in cui sto lavorando, per i controlli delle variabili il softwerista ha utilizzato il modulo pid sopra citato.

 

Ho notato che per tutti i loop dove variabile e setpoint hanno il range da 0 a 100 il PID risponde perfettamente, per testarlo metto la variabile a 50% il setpoint a 50%, metto a zero la derivativa e la dead band, tolgo l'integrale impostando un valore alto essendo l' integrale del siemens espressa in minuti.

Normalmente impostando il guadagno a 1 con le impostazioni sopra, quando la variabile aumenta es. del 10 % se siamo in azione diretta, l'uscita aumenta dello stesso valore, con guadagno 2 l' uscita aumenta del doppio.

Con il controllore Siemens, se la variabile e il setpoint sono in percentuale funziona correttamente, se la variabile ha ad esempio range da 0 a 20, la risposta del regolatore non è la stessa.

Aumentando o diminuendo la variabile di una percentuale, l' uscita non produce il valore atteso.

 

I controllori con guadagno 1, inibendo l' integrale e la derivativa rispondono come segue:

 

Delta uscita = Delta variabile * guadagno

 

Come dicevo i controllori con range 0 100% agiscono secondo la formula sopra gli altri no.

 

Comunque anche quelli che hanno una variabile diversa da 100 regolano perfettamente l' unica osservazione è che per esempio con un regolatore con range 0 20 il guadagno impostato è 5 volte maggiore di un regolatore diverso da questo.

Vi ringrazio molto e saluto cordialmente

Share this post


Link to post
Share on other sites

batta

Nei blocchi PID FB41/SFB41 puoi passare la variabile di processo come valore direttamente da un ingresso analogico (ed effettuare la scalatura all'interno della funzione PID), o come valore già normalizzato. Non vorrei che ci fosse qualcosa di sbagliato o nel modo di passare i parametri, o nelle scalature.
Senza vedere il programma però, è un po' difficile capire cosa non va.

Share this post


Link to post
Share on other sites
fabferrari

razie per la preziosa risposta, certamente è come dici tu.

Allego uno dei moduli facendo lo screen shot di uno dei regolatori, il valore che entra in PV_IN è il valore della variabile anche il SP_INT è il valore in bar che imposto nel regolatore.

Il softwarista mi dice che non c'è altro software relativo a questo pid.

Un altro specialista mi ha detto che il modulo FB 41 è protetto da password e non può essere aperto.

Allego un' immagine dell' FB 41 catturato online e il manuale.

Ancora grazie

pic719.jpg

Pid_Cont_page-0003.jpg

Pid_Cont_page-0004.jpg

Pid_Cont_page-0005.jpg

Pid_Cont_page-0006.jpg

Share this post


Link to post
Share on other sites
batta

C'è qualcosa che non torna. LMN_FAC è sempre 1.0?

Dovrei provare con il simulatore, ma ora non ho tempo.
Forse nei prossimi giorni.

Share this post


Link to post
Share on other sites
batta

Dunque, ho provato col simulatore, e non riscontro assolutamente diversità nel calcolo del valore in uscita cambiando i limiti dell'uscita stessa.

Abilitando solo il proporzionale, il valore dell'uscita è esattamente:

LMN = SP - PV * GAIN

 

Non poteva essere diversamente.

Sicuro, quando dici di cambiare il range dell'uscita, di agire sulle variabili corrette? Le variabili sono LMN_HLM (limite massimo) e LMN_LLM (limite minimo).
 

Consiglio: per disabilitare l'integrale, non serve mettere un tempo di integrale lungo, basta mettere FALSE il parametro in ingresso I_SEL.

Share this post


Link to post
Share on other sites
fabferrari

 

Grande Batta!

Col tuo grande aiuto penso di aver capito!

Il range della PV in questione è -10 + 20 Bar mentre LMN_HLM LMN_LLM sono 100 e zero!

Ora non posso provare perchè la macchila è in funzione ma sono sicuro che il problema è qui, hanno due scale differenti!!!!

Grande Batta! Grande Batta! Da due anni ho questo problema!!!!!

Share this post


Link to post
Share on other sites
batta

Mi dispiace, ma non credo che sia lì il problema.

L'impostazione dei limiti dell'uscita 0..100% è quella più classica. Se serve per pilotare una valvola, significa regolare l'apertura della valvola tra 0 e 100 %.
Non ha assolutamente nulla a che vedere con i limiti della variabile di processo.

Il valore in uscita sarà sempre dato dalla somma delle tre componenti P, I e D, salvo venire tagliato per non superare i limiti impostati se la somma delle componenti dovesse dare un risultato fuori da questi limiti. Nel caso del superamento dei limiti poi, viene anche bloccato l'integrale, per impedire che continui a crescere.
Se usi solo la componente P, devi assolutamente avere (entro i limiti impostati):

LMN = (SP - PV) * GAIN

(nel precedente post ho commesso un errore molto grave: mancano le parentesi).
 

Share this post


Link to post
Share on other sites
fabferrari

probabilmente ho cantato vittoria troppo presto ma sento che siamo molto vicini alla soluzione!

Nel sistema ho molti regolatori pid, quelli che hanno il range 0-100 come i livelli funzionano perfettamente il problema è in quelli che hanno variabile e setpoint diversi da 100.

più ci si allontana da 100 e più si nota la differenza.

Io sono convinto che da qualche parte devo impostargli il valore massimo e minimo della variabile e del setpoint che il Plc prende come 0 e 100%. E sono convinto che siano proprio quei parametri che hai suggerito.

Ricordo anche che non c'è un vero problema solo una questione di parametri inusuali, per un controllore con range 0-20 per avere un guadagno di 1 devo impostare il guadagno a 5, quindi chi ha un po di dimestichezza con la regolazione, rileva che qualcosa non va, alcuni regolatori funzionano con gain di 10 nentre il gain reale è 2 anche se poi lavorano correttamente.

Quindi ricapitolando:

le impostazioni pid sono corrette (per i range 0 100) i pid lavorano bene.

Bisogna solo impostare i range delle variabili, ritengo che sia necessario scalare la variabile in ingresso da 0 a 100

Grazie ancora

 

Share this post


Link to post
Share on other sites
batta
Quote

Io sono convinto che da qualche parte devo impostargli il valore massimo e minimo della variabile e del setpoint che il Plc prende come 0 e 100%. E sono convinto che siano proprio quei parametri che hai suggerito.

Ricordo anche che non c'è un vero problema solo una questione di parametri inusuali, per un controllore con range 0-20 per avere un guadagno di 1 devo impostare il guadagno a 5

Io credo che tu stia facendo un bel po' di confusione.

Non c'entrano assolutamente nulla i limiti del set point e della variabile di processo con il valore di uscita.

Come già detto, con il solo proporzionale abilitato, l'uscita sarà

LMN = ER * GAIN

Dove ER (errore) è semplicemente SP - PV

Un esempio con i numeri?

SP = 50

PV = 48

GAIN = 2

LMN = 4

Non può essere diversamente, indipendentemente dal fatto che il limite massimo in uscita sia 100 o sia 20. I limiti servono solo per mantenere l'uscita all'interno, appunto, dei limiti, ma non altera i calcoli.

E, come ti ho già detto, ho personalmente verificato che funziona così.

Poi, vorrei sapere cosa pilotano i PID. Perché c'è la necessità di variare i limiti in uscita? Ci sono PID in cascata?

Share this post


Link to post
Share on other sites
fabferrari

Concordo con quello che scrivi, si ci sono cascate e come tutti gli altri controllori funzionano correttamente.

Come ti avevo già scritto, tutti i controllori che hanno in ingresso 0-100 rispondono alla formula che hai citato, gli altri no, ma aumentando il guadagno funzionano comunque bene.

Ora torno in Italia, nel frattempo mi riposo e provo a studiarci sopra.

Grazie ancora e ciao

Share this post


Link to post
Share on other sites
batta

Ma cosa intendi con "ingresso 0-100"? Non ci sono impostazioni sulla variabile di processo. I limiti ci sono sul valore in uscita.
Facciamo così: pubblica l'intero DB di istanza di un PID con i valori attuali.

 

Share this post


Link to post
Share on other sites
fabferrari

Con altri plc, il valore in ingresso al pid va da 0 a 32767 sia per la variabile che per il setpoint.

Nel PID FB41/SFB41 come si vede dall'allegato nel momento in cui ho fatto la foto il setpoint è 7.8 e la variabile è 7.84.

Il range del trasmettitore è da 0 a 20.

dove vedo nel PID FB41/SFB4 che 20 corrisponde al 100% della variabile in ingresso?

Probabilmente il livello che funziona perfettamente, ha un range da 0 a 100, lo stesso range probabilmente impostato nel FB41/SFB4.

Con le variabili diverse da 100, come quella nell' immagine che ho inviato, la risposta è diversa.

Con i vecchi PLC vedevo il valore da 0 a 32767, con questo vedo 7.8 ma non so dove venga impostato il valore massimo che è 20.

Grazie uomo di grande pazienza.

pic719.jpg

Share this post


Link to post
Share on other sites
batta
Quote

dove vedo nel PID FB41/SFB4 che 20 corrisponde al 100% della variabile in ingresso?

Come ti ho già detto, non lo vedi da nessuna parte. 20 è 20 e basta, non è una percentuale di qualcosa. Se sono gradi, sono 20 gradi; se sono bar, sono 20 bar; se sono metri, sono 20 metri. Puoi passare anche 1 milione come variabile di processo, e questo non ha nessuna influenza su come viene calcolato il proporzionale.

Diverso sarebbe se tu mettessi TRUE il parametro PVPER_ON. In questo caso dovresti passare alla funzione, come variabile di processo, direttamente il valore di un ingresso analogico (che, in Siemens, va da ±27648 o 0..27648), collegato su PV_PER. Poi, con i parametri PV_FAC e PV_OFF dai istruzioni alla funzione di come convertire l'ingresso analogico nel tuo valore ingegneristico. Ma non è questo il tuo caso. Essendo PVPER_ON = FALSE, passi la variabile di processo già in unità ingegneristiche in formato REAL, su PV_IN.

Poi, per controllare cosa sta facendo la funzione, anziché guardare online il box PID, apri direttamente il DB di istanza della funzione (nel tuo esempio, DB705), in modo da vedere anche le variabili interne. Per esempio, puoi controllare:

SP_INT = Set Point (è il parametro in ingresso dove passi il set point)

PV =  Valore di processo (con PVPER_ON = FALSE deve corrispondere a PV_IN, altrimenti viene calcolato da PV_PER, PV_FAC, PV_OFF)

ER = Errore (SP_INT - PV)

LMN_P = componente proporzionale (ER * GAIN)

LMN_I = componente integrale

LMN_D = componente derivativa

LMN = Valore uscita del PID (è la somma LMN_P + LMN_I + LMN_D, salvo essere limitata nel range compreso tra LMN_HLM e LMN_LLM)

 

Quindi, per l'ennesima volta, torno a ripetere: con il solo proporzionale abilitato, se hai SP = 20, PV = 18, GAIN = 1, devi assolutamente avere LMN = 2.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...