Vai al contenuto
PLC Forum


Regolazione temperatura cisterna pid o no?


Spand

Messaggi consigliati

Salve,

Sono un programmatore di macchine e non di impianti, ma mi è stato chiesto di gestire un impianto di refrigerazione con un plc, credo che la questione sia abbastaza semplice ma non vorrei sottovalutarla troppo.

Ho una cisterna con mosto che deve essere mantenuto ad una temperatura stabile durante la fermentazione, il cliente decide il set point di temperatura con il range +/-, devo mantenere la temperatura stabile aprendo e chiudendo (digitale 0-1) una valvola che fa circolare il liquido refrigerante intorno, all'interno ho una sola sonda di temperatura. Dalla vostra esperienza come faccio a capire se è meglio inserire un pid o se basta una gestioe ON/OFF rispetto al range inpostato?

Link al commento
Condividi su altri siti


In questo caso è meglio il PI o PID perchè hai una inerzia termica molto elevata che dipende dal volume di mosto, quindi una risposta del sistema molto sfasata rispetto all'azione.

Link al commento
Condividi su altri siti

Quelli che ho visto io sinora lavorano con semplici termostati elettronici 32X74 in modalità cool(refrigerazione) con controllo on/off della E.V. del refrigerante.

Link al commento
Condividi su altri siti

Tutto dipende dalla precisione necessaria al processo.

In linea di principio un sistema simile si regola meglio se si usa un modello in modo da avere un predittore.

Però se il sistema tollera tranqullamente una certa percentuale di oscillazione va benissimo anche un on-off come suggerisce Blackice.

Link al commento
Condividi su altri siti

Grazie a tutti per la risposta, partiro con ON/OFF ma vorrei tenermi pronto con il pid se nececcario, mi è stato chiesto di realizzare l'automazione con un PLC schenider mod. TM221ME16T, sapete dirmi se ci sono limitazioni al numero di PID che posso inserire? non sò bene come sia la programmazione di questo PLC, dove posso trovare maggiori info e qualche esempio per realizare l'anello?

Link al commento
Condividi su altri siti

Se non ne hai mai realizzati è meglio che usi quelli di libreria che oramai tutti i PLC hanno.

Comunque se vai allasezione didattica, il link è nella mia firma, sottosezione elettrotecnica, trovi il mio tutorial sulle regolazioni. E' scritto con un approccio eminentemente pratico e trovi alcuni esempi di PID scritti in pseudo "C".

Link al commento
Condividi su altri siti

se guardi gli FB di regolazione pid nel TIA portal o Step 7 troverai dei blocchetti che funzionano anche bene. Li uso spesso senza troppi problemi .

Altrimenti uso un PI scritto da me in SCL con uscita analogica e duty cycle ingegnerizzato .

Il K proporzionale dovrebbe essere negativo se fai dei raffreddamenti 

Link al commento
Condividi su altri siti

questo l'ho scritto io , c'e' anche l'uscita PWM , è un regolatore P.I.

Livio , se inizi a rompere le palline perchè l'ho scritto in inglese lo tolgo e per colpa tua molti utenti non potranno usufruire di questo mio lavoro ;)

 

FUNCTION_BLOCK FB80           // Digital regulator P.I.D. Written by Walter P.  05/06/2009

VAR_INPUT
Set_Point:REAL ;               // Set point value 
Feedback:REAL ;                // Feedback value process 
Kp:REAL;                       // K Proportional gain 
Ki:REAL;                       // K Integral gain 
Max_Analog:REAL;               // Maximum value for analog output 
Max_Time_Cycle:REAL;           // Maximum time cycle for PWM digital output (milliseconds)
Scan_Time:REAL;                // Scanning time of the plc 
Time_Sample:REAL;              // Time sample in OB35
Enable:BOOL;                   // Enable PWM digital P.I.D.
Reset:BOOL;                    // Reset regulator 

END_VAR

LABEL
salto;
end_label    
    
VAR_IN_OUT

END_VAR

VAR_OUTPUT
Out_Analog_Reg:REAL ;           // Output analog regulation 
Duty_Cycle_Perc:REAL;           // Duty cycle On percentage
Wave_On_PWM:BOOL;               // Output high wave On of digital PWM 
Wave_Off_PWM:BOOL;              // Output low wave On of digital PWM 


END_VAR

VAR_TEMP
  
END_VAR

VAR
    
Error:REAL ;                   // Error for each scan 
I_Ist:REAL;                    // Istant
I:REAL ;                       // Integral memory 
P:REAL;                        // Proportional component 
Accu_Timer:REAL;               // Timer Accumulator for the duty cycle PWM 
Thr_Wave_On:REAL;              // Threshold for the wave ON
Thr_Wave_Off:REAL;              // Threshold for the wave OFF
Wave_On:BOOL;                  // Wave On  
Wave_Off:BOOL;                 // Wave Off  
  
END_VAR
 
 
 
             BEGIN  
             
              Error:=Set_Point - Feedback ;
              
              P:=Error * Kp * 1000.0 ;
              
              I_Ist:=Error * Ki;
              
              I:=I + I_Ist ;
              
              IF I <= 0.0 THEN  I:=0.0; END_IF;
              
              IF I >= Max_Analog*0.8 THEN I:=Max_Analog*0.8; END_IF ;
              
              IF Enable=true THEN 
                  Out_Analog_Reg:=P + I ;
              END_IF;
              
              IF Reset THEN 
                 
                 P:=0.0;
                 I:=0.0;
                 I_Ist:=0.0;
                 Out_Analog_Reg:=0.0;
                 Wave_On:=false;
                 Wave_Off:=false;
                 Accu_Timer:=0.0;

                 
              END_IF;             
                  
              IF Out_Analog_Reg >= Max_Analog THEN  Out_Analog_Reg:=Max_Analog;END_IF;    IF Out_Analog_Reg <= 0.0 THEN  Out_Analog_Reg:=0.0; END_IF;
              
              
              
              // STATE OF ENDED MACHINE TO GENERATE THE WAVE SQUARED ON AND OFF OF THE PWM 

 
               Thr_Wave_On:= (Max_Time_Cycle / Max_Analog) *  Out_Analog_Reg;   
               
               Thr_Wave_Off:=Max_Analog - Thr_Wave_On;
                    
              
              IF  Accu_Timer=0.0 AND Enable THEN 
              
                 Wave_On:=true;
                 Wave_Off:=false;
              
              END_IF;
            
              
              IF Wave_On=true THEN 
                
                        Accu_Timer:=Accu_Timer +  Time_Sample;
                        Duty_Cycle_Perc:=(Thr_Wave_On / Max_Time_Cycle) * 100.0;
                        
                        IF Accu_Timer >= Thr_Wave_On THEN 
                            
                            Wave_On:=false;
                            Wave_Off:=true;

                        END_IF;    
                
              END_IF;  
            
            
             IF Wave_Off=true THEN 
                
                         Accu_Timer:=Accu_Timer +  Time_Sample;
         
                        IF Accu_Timer >= Max_Time_Cycle THEN 
                            
                            Wave_Off:=false;
                            Accu_Timer:=0.0;
                            GOTO salto ;
                        END_IF;    
                
              END_IF;  


              
                           
              salto:  
              
              Wave_On_PWM:= Wave_On AND Thr_Wave_On>= 1000.0;
              Wave_Off_PWM:=Wave_Off ;
                          
                 
  ;
END_FUNCTION_BLOCK

 

Studiatevelo bene e non fate domande assurde perchè non ho tempo per rispondere .

Traetene informazioni e magari imparate a lavorare seriamente perchè l'automazione ormai è una nicchia dell'informatica, bisogna studiare i linguaggi , provare e lavorare in un certo modo .

L'ho chiamato P.I.D. ma è un P.I. , la componente derivativa non serve per regolare le temperature e comunque l'ho implementata come derivata del errore in un altro lavoro .

Ve saludi 

Walter

Link al commento
Condividi su altri siti

Ciao Spand, ti espongo subito le problematiche base :

 

- Sistema base, solitamente approcciato con sistemi in cascata, tra la camicia refrigerante ed il sistema da raffreddare

- Doppia sonda di misura con, possibilità di modulazione

- A seconda dei sistemi, alti (lunghi) tempi di risposta che portano in saturazione l'integrale. Quindi tutto gira intorno alla componente integrale.

 

Dopo di ché con sistemi anche più semplici (regolatore 48*48 con uscita ON-OFF) si può far qualcosa ed a seconda del sistema (refrigerante ed anche del prodotto si intende) si può ottenere dei discreti risultati.

 

Scusa waterworld, non ho avuto tempo di leggere bene il codice, ma la saturazione dell'integrale l'hai gestita ? Solitamente impedisce una reazione soddisfacente al sistema ed in alcune librerie è gestita anche come warning.

 

Io comunque preferisco sempre avere un blocco carro armato, full optional con tutte le funzioni che cita sempre Livio e magari non uso mai. Difficile da digerire le prime volte ma poi non ne puoi fare a meno.

 

Ultimamente con le nuove librerie che mi capitano sotto mano (io uso specialmente B&R) si riporta nel processo la meccatronica e devo dire che rispetto alle funzioni più datate che si vedeva che erano scritte da processisti, secondo me qualcosa si è perso (nulla che non si possa realizzare esternamente, ma poi ti senti dire ... mah ! non ha usato il ns nuovo blocco ! ... ).

 

Ciao a tutti

Link al commento
Condividi su altri siti

  • 2 months later...

Torno su questa discussione che avevo aperto perchè ora il sistema è stato fatto con in plc Siemens 1200, tra poco inizierò a provarlo, ho realizzato intato la modalità ON/OFF ma ho previsto anche la modalità PID, inserendo i blocchetti di TIA, ma non mi è chiaro come regolarli sopratutto perchè facevo alcune considerazioni con il cliente:

-Le valvole che portano il refrigerante sono motorizzate e vengono aperte e chiuse tenendo il comando per circa 35sec, se tolgo il comando la valvola rimane dove è, quindi con il pid dovrei poter parzializzare il comando senza aprire e chiudere totalmente, non ho idea dei parametri di regolazione di questo sistema essendo ad inerzia elevata, qualcuno ha suggerimenti? Non avendo riscaldamento la parte di riscaldamento non la associo all'uscita o devo usarla comunque? Grazie

Link al commento
Condividi su altri siti

Quote

sono motorizzate e vengono aperte e chiuse tenendo il comando per circa 35sec,

 

Il problema è che non sai quanto realmente è aperta la valvola.

Il metodo giusto di un sistema così fatto è aprire/chiudere lentamente la valvola dando successivi impulsi di durata prestabilita, ed osservare l'andamento della temperatura per poi correggere eventualmente aprendo e chidendo.

Link al commento
Condividi su altri siti

Visto che si tratta di una valvola motorizzata, che ne sai i tempi di azionamento più o meno certi della commutazione e che usi un PLC per fare il controllo PID sarebbe necessario sapere la posizione della valvola per fare un lavoro fatto ad hoc, infatti sapendo l'eventuale posizione della valvola potresti incrociare i dati della regolazione PID con quelli della posizione valvola e da li far intervenire la regolazione PID portando la valvola nella posizione che il PID nella suo calcolo richiede, quando la posizione proporzionalmente coincide col la regolazione PID la valvola si trova nella posizione richiesta. Ovviamente visto che la valvola impiega 35sec. a muoversi sarebbe necessario impostare un tempo di ciclo di 35sec. nel calcolo della regolazione PID.

Senza il ritorno della posizione della valvola non mi pare che il sistema sia trattabile in maniera precisa ma se vuoi puoi provare a fare una posizione presunta della valvola sapendo che il suo azionamento è dato da un movimento continuo e temporizzato di 35sec.

Tramite la posizione presunta puoi sapere in che posizione si trova la valvola e da li far intervenire la regolazione PID con un tempo di ciclo di 35sec, è ovvio però che devi sapere in qualche maniera la posizione di riferimento della valvola quando è tutta chiusa o tutta aperta, altrimenti non hai un riferimento certo della posizione valvola, insomma senza una retroazione delle posizione valvola la vedo piuttosto dura, magari mi sbaglio..... e spero di essere corretto

Link al commento
Condividi su altri siti

Prova a guardare PID_3Step. Dovrebbe fare al caso tuo. Puoi usarlo con valvole motorizzate con o senza feedback di posizione, con o senza finecorsa di valvola aperta/chiusa.

Link al commento
Condividi su altri siti

Mi permetto di chiedere un paio di cose: per cisterna cosa intendi in termini di volume-litri? Dici che la serpentina è esterna e invece la sonda?  Io credo che un semplice ON OFF sia più che sufficiente sperando (come ho visto purtroppo fare) che la sonda non sia appiccicata alla serpentina...

Link al commento
Condividi su altri siti

  • 3 months later...

Se mi posso permettere per una buona regolazione è necessaria una logica fuzzy che chiaramente deve essere scritta da un esperto di refrigerazione.

Un impianto di refrigerazione ha delle prestazioni tanto diverse a seconda dei casi che una buona regolazione nel tenere costante il risultato finale, deve  essere integrata alla tipologia fuzzy che l'esperto costruisce in base alla risposta termodinamica  d'impianto.

Naturalmente parlando di un risultato al massimo ottenibile, ma se ci sono delle tolleranze di oscillazione il risultato può essere raggiunto anche con una regolazione pid. Naturalmente userei una regolazione pid su valvola di tipo on off e non motorizzata.

Link al commento
Condividi su altri siti

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