Come configurare smartphone e PC. Portale informativo
  • Casa
  • Sicurezza
  • Leggi di regolazione: P, PI, PID. Convertitore di frequenza e controller pid - configurazione generale Leggi del controllo pid ppi for dummies

Leggi di regolazione: P, PI, PID. Convertitore di frequenza e controller pid - configurazione generale Leggi del controllo pid ppi for dummies

Regolatore P - Questo è un regolatore in cui μ è proporzionale a σ, cioè μ = – Kσ.

Quando il valore di ingresso σ salta di un valore (–10ºС), la saracinesca del corpo di regolazione si sposta bruscamente in una nuova posizione μ (Fig. 2.10).

Fig.2.10. Legge di regolamentazione del P-regolatore.

Il vantaggio di tale regolamentazione: l’organismo di regolamentazione si sposta rapidamente in una nuova posizione, ad es. elevata velocità di regolazione (t – tempo).

Svantaggio: c'è una deviazione residua, cioè c'è qualche errore di controllo.

I-regolatore Questo è un regolatore in cui μ è proporzionale all'integrale σ

Quando il valore di ingresso salta di un valore (–10ºС), la saracinesca del corpo di regolazione si sposta lentamente in una nuova posizione (Fig. 2.11).

Fig.2.11. Legge di regolamentazione dell'I-regolatore.

Vantaggio: nessuna deviazione residua del parametro controllato dal valore target.

Svantaggio: bassa velocità di registrazione, ad es. la tapparella si sposta lentamente nella nuova posizione.

Controllore PI – Questo collegamento parallelo i due regolatori precedenti (P ​​e I - regolatori). Questo regolatore combina gli aspetti positivi dei regolatori P e I. Per un controller PI (Fig. 2.12), l'azione di controllo μ sposta il cancello in proporzione alla deviazione del parametro σ e all'integrale della deviazione σ.

Dove: K, T e sono le impostazioni del controller. Come puoi vedere, la formula di questa legge è la somma delle due formule precedenti. Il cancello dell'organismo di regolamentazione percorrerà una parte del percorso bruscamente secondo la legge P, e la parte restante lentamente secondo la legge I.

Fig.2.12.

Legge di controllo del controller PI

Regolatori con anticipo Regolatore PD -

Si tratta di un regolatore (Fig. 2.13) in cui il segnale di uscita μ è proporzionale al segnale di ingresso σ e alla derivata dσ/dt, cioè

Fig.2.13. Legge di regolamentazione del regolatore PD. La derivata dσ/dt caratterizza l'andamento della variazione (deviazione) della variabile controllata. L'entità e il segno dell'influenza della derivata consentono al controllore come prevedere in quale direzione e per quanto tempo

Innanzitutto la tapparella salta dal punto a al punto b (legge P), cioè più del necessario, poi rimbalza al punto b (azione differenziale) e rimane in questa posizione.

Controllore PID.

Ha 3 genitori: regolatore P, regolatore I, regolatore PD. Di conseguenza, vengono aggiunte 3 formule (Fig. 2.14.)

.

Qui: K, T e, T D– Impostazioni che possono essere configurate manualmente.

Fig.2.14.

Legge di controllo del controller PID.

La legge PID è utilizzata in tutti i controller. Innanzitutto la tapparella salta dal punto a al punto b (legge P), cioè più del necessario, poi rimbalza al punto b (azione differenziale), quindi l'otturatore si porta lentamente nella posizione finale (I - legge). Di conseguenza, il processo di controllo viene completato in un tempo più breve e con meno errori di controllo.

È necessario mantenere la temperatura a un certo livello e modificare l'attività. C'è un microcontrollore a cui è collegato un misuratore di temperatura e un triac per il controllo della potenza. Non scaldiamoci la testa con TAU o circuiti differenziali, prenderemo semplicemente l'iniziativa e realizzeremo un controller PID "frontalmente".

II. Introduzione teorica

Per compensare gli influssi “esterni” sul reattore, al circuito viene aggiunto un componente integrale. Tutto il disadattamento che c'era nel sistema va all'integratore (di conseguenza, non appena ci surriscaldiamo, la quantità diminuisce, mentre se è sottoriscaldato, la quantità aumenta). E l'integrale accumulato, con il suo coefficiente, dà il proprio aumento o diminuzione di potenza. Come risultato di questo approccio, con un processo stazionario, dopo un po 'l'integrale seleziona un tale contributo alla somma con potenza, che compensa la perdita dell'ambiente, e le oscillazioni scompaiono - l'integrale diventa stabile, quindi la quantità di la potenza in uscita diventa costante. Inoltre, poiché viene mantenuta la temperatura richiesta, non si verificano discrepanze e la componente proporzionale non funziona affatto.

Per compensare l'effetto dei ritardi tra l'impatto e la risposta del sistema, al sistema viene aggiunta una componente differenziale. È solo che un regolatore proporzionale fornisce potenza continuamente finché la temperatura non raggiunge il punto desiderato; un regolatore proporzionale-differenziale inizia a ridurre la potenza fornita prima che raggiunga il punto desiderato - poiché il disadattamento diminuisce, c'è una derivata negativa che riduce la effetto. Ciò riduce al minimo il surriscaldamento durante le transizioni di grandi dimensioni.

Quindi, abbiamo risolto il significato fisico, passiamo alle questioni fondamentali dell'implementazione.

III. Chi dovrebbe utilizzare il regolatore?

- Tecnici.

Cosa ne consegue? Ne consegue che i tecnici conoscono la componente fisica e hanno esperienza nella realizzazione di regolatori PID hardware. Ciò significa che l'implementazione del software dovrebbe basarsi sulla facilità di configurazione da parte dei tecnici, ripetendo il modello fisico. E questo è estremamente importante! Molto spesso, per semplificare il codice, i coefficienti vengono modificati, ad esempio, nei loro inversi, per eliminare la divisione. Di conseguenza, la messa a punto diventa un inferno e un incubo, richiedendo esperienza nella messa a punto di quel particolare regolatore piuttosto che comprenderne il processo. Da qui otteniamo che i nostri coefficienti - la costante di integrazione e la costante di differenziazione - devono avere la dimensione del tempo, cioè essere specificati in secondi, e non in “1/s”, come preferiscono fare.

IV. Area funzionale.

Stiamo cercando di creare un regolatore universale, il che significa che dovrebbe funzionare sia su oggetti piccoli e veloci che su fornaci potenti ed enormi. Ciò significa che dovremmo supporre che la temperatura regolata sia generalmente limitata dal contatore. I più comunemente usati sono XA(K) e XK(L). Il loro campo di applicabilità arriva fino a 1200°C. Il raffreddamento richiede apparecchiature più complesse (criostati), anche il controllo del raffreddamento aggiuntivo (ventilatori e porte apribili degli armadi riscaldanti) è raramente richiesto, il che significa che per ora lo escludiamo dalla considerazione. Otteniamo che la temperatura controllata va da ~15°C a ~1200°C, viene controllata solo l'alimentazione.

L'accuratezza del controllo è determinata, in primo luogo, dall'accuratezza della misurazione: le tabelle di calibrazione sono indicate in 0,1 gradi; La linearità all'interno delle tabelle è, in linea di principio, discreta, quindi la precisione è limitata principalmente dall'amplificatore e dal misuratore di corrente. Nel mio caso, volevo ottenere una precisione di mantenimento di 0,1 gradi, quindi il misuratore è impostato su 1/32 gradi: questo dà ~3 quanti per 0,1 gradi, quindi, avendo il normale "rumore" di regolazione +-1 quanti, rimaniamo negli stessi 0,1 gradi. Utilizzando 1/32 puoi lavorare con un punto fisso - 5 bit = parte frazionaria, il resto è intero. In 16 bit questo può essere rappresentato da 0 a 2047°. Invece di lavorare con numeri negativi, lavoreremo in Kelvin invece che in Celsius, quindi - rappresentando da 0 a 2047 °K, che equivale a da -273 a 1775 °C; con incrementi di 0,03125°.

V. Intervallo di regolazione.

Per controllare un microreattore con una potente centrale elettrica, può risultare che l'1% della potenza è sufficiente per riscaldarlo di 10 gradi, mentre per un grande forno inerte, il 100% della potenza di riscaldamento è appena sufficiente per riscaldarlo di un grado. (Nella vita reale, assomiglia a questo - ci sono diversi riscaldatori controllati manualmente - vengono accesi da un interruttore separato e producono il riscaldamento iniziale, quindi il termostato mantiene il punto di funzionamento, controllando un altro riscaldatore, che a piena potenza produce un massimo di +10°C a quello , che si riscaldava costantemente). Sulla base di ciò, è logico supporre che il coefficiente di proporzionalità limite sia il 100% di potenza per 1 grado. Non ha più senso poiché vogliamo una controllabilità di 0,1 gradi. Per semplicità, ho preso l'inverso minimo: 1% di potenza per 100 gradi.

Gli intervalli dei coefficienti temporali vengono calcolati semplicemente in base alle nostre condizioni operative del regolatore. Poiché controlliamo la potenza del triac calcolando il ritardo del momento dell'accensione dopo il passaggio per 0, la frequenza operativa massima del regolatore è di 50 Hz. Se siamo sicuri di controllare la potenza, che non importa più o meno, possiamo lavorare a 100Hz, ma non sempre è così, e quindi è meglio dosare una quantità uguale di semionde sia positive che negative ogni volta. Per semplificarmi la vita, ho ridotto il tempo di funzionamento a 25 Hz, quindi qualsiasi impatto calcolato agirà per 4 semionde e durante questo periodo potrò calcolare un nuovo impatto.

Pertanto, le costanti di tempo vengono impostate ogni 1/25 di secondo, da 0 a ~2000 secondi (2000*25 = 50000, sta solo in 16 bit).

Ebbene, abbiamo anche un limite di potenza minimo e massimo, dallo 0 al 100%.

VI. Gestione dell'energia.

Da questo momento in poi finiscono tutti i calcoli teorici e inizia l'amara pratica, legata a un'implementazione specifica.

Quindi, abbiamo già deciso di controllare il ritardo nell'apertura del triac dopo aver attraversato lo 0. Pertanto, un ritardo di 0 significa 100% di potenza, ritardo infinito = 0% di potenza.

Domanda: con quale precisione lo facciamo Potere gestire il potere? In generale, con la precisione del nostro timer. D'altra parte, quanta potenza è necessaria? Calcoliamo quale % di potenza deve essere fornita per 0,04 secondi. In linea di principio, per esperienza, il controllo della potenza anche con una precisione dell'1% a una frequenza di 0,1 secondi è sufficiente per mantenere una temperatura di 1 grado. Il nostro controllo impiega 0,04 secondi (2,5 volte più veloce). Pertanto, si è deciso di calcolare la tabella delle potenze a 1/250 del massimo (con incrementi dello 0,4%). Ciò consente alla tabella di non essere molto grande (500 byte), e allo stesso tempo di avere una precisione superiore all'1%. Se il tuo caso richiede maggiore precisione, non è così difficile ricalcolare.

Ora parliamo del calcolo di questa tabella stessa. Innanzitutto va tenuto presente che esiste nel momento in cui viene attivato il segnale di passaggio per lo zero. Nel mio caso - 12V. Cioè, quando la tensione in ingresso scende al di sotto di 12V, riceverò un segnale che passa per 0.

Ciò significa che per una potenza al 100%, il tempo di avvio = tempo di percorrenza di 12 V.

Risolviamo il sistema di equazioni

; Momento Int:= 12V ; Massimo:= sqr(220*sqrt(2)) ; ( Sqr(Sin(Pi/2)*K) = Max ; ( Sqr(Sin(X)*K) = IntMomento ; ; 2*k/CodiceMax = 1 - cos(T*Pi) ; cos(T*Pi) = 1-2*k/CodiceMax ; T*Pi = arccos(1-2*k/CodiceMax) ; T = arccos(1-2*k/CodiceMax) / Pi

Il mio processore funziona alla frequenza di 32786, il PLL è impostato su 384/2, la semionda è 100Hz, da cui otteniamo che il codice per caricare una costante nel timer per il tempo T è simile a:

65536-(T*(32768*384/2)/100,0 + 773)

Dobbiamo calcolare il tempo di ritardo, che dà un aumento uniforme dell'area della parte inclusa della sinusoide. Occorrono cioè tempi che diano un aumento uniforme della potenza. La potenza totale che produciamo è l'integrale sull'intera onda sinusoidale. [chi sa come inserire le formule sull'hub? non c'è modo? Allora scrivo in notazione acero].

Max = int(sqr(sin(x)), x=0..Pi) int(sqr(sin(x)), x=0..T*Pi) = x/2 - sin(2*x)/ 4 + C | 0..T*PI ​​​​= (T*Pi)/2 - sin(2*T*Pi)/4 (T*Pi)/2 - sin(2*T*Pi)/4 = Q*Pi/ 2

Dobbiamo quindi esaminare tutti i Q con una certa precisione e trovare T per ciascuno di essi.

L'ho risolto da solo in questo modo stupido:

Generatore Perl

#!/usr/bin/perl # (T*Pi)/2 - sin(2*T*Pi)/4 = Q*Pi/2 usa la costante PI => 4 * atan2(1, 1); $T = 1; for($i = 250; $i >= 0; $i--) ( $int = $i*PI/2/250; $ev = ($T*PI)/2-sin(2*$T* PI)/4; while(abs($ev-$int) > 0,0005) ( $T -= 0,0001; $ev = ($T*PI)/2-sin(2*$T*PI)/4; ) #stampa $i."\t".$T."\n"; $codice = 65536-($T*(32768*384/2)/100.0 + 773 ; \n", $codice%256, int($codice/256), $codice, $i; )

Questo è tutto, in uscita abbiamo ricevuto una piastra di 250 valori corrispondenti alle costanti di caricamento del timer fino al momento dell'accensione dopo aver ricevuto un segnale di passaggio attraverso 0 (più precisamente, attraverso 12V, come ho detto sopra).

VII. Misurazione dei dati in ingresso

Salto questa domanda perché merita un lungo articolo a parte. Puoi trovare come ho risolto il problema con la resistenza termica nell'archivio del mio ultimo blog.

La cosa principale che dobbiamo sapere è che misuriamo i dati con la frequenza di cui abbiamo bisogno (in questo caso, 25 Hz) e la precisione richiesta (l'output è un numero da 0 a 2048 gradi Kelvin in 1/32 gradi). Si presuppone che i dati siano già normalizzati per tutti i calcoli successivi.

Se qualcuno è interessato, scriva nei commenti e la prossima volta descriverò come si fa per le termocoppie.

VIII. Calcolo dell'impatto

E ora è successo: abbiamo tutti i dati per fare finalmente ciò per cui abbiamo iniziato: calcolare quanta potenza dovrebbe essere fornita all’elemento di controllo.

Ricordiamo ancora una volta la formula del controller PID:

U = K * (Err + (1/Ti)*Int + Td*dErr)

  • U- potenza da erogare;
  • K- coefficiente proporzionale (nota: è tolto tra parentesi, di seguito ne descriverò il motivo);
  • Ti- costante di tempo di integrazione. Si prega di notare che i calcoli utilizzano il valore reciproco;
  • Td- costante di tempo di differenziazione
  • Err- disadattamento attuale (differenza tra set point e temperatura misurata
  • dErr- derivata del mismatch (differenza tra l'errore attuale e quello precedente)
  • interno- integrale di disadattamento accumulato (la somma di tutti gli Err che abbiamo visto)

Torniamo nuovamente alla questione sollevata nella sezione III: questo sarà utilizzato dai tecnici. Pertanto, è estremamente importante evitare il classico errore di tutte le implementazioni: "dimensionare i coefficienti come risulta". Lo facciamo dispositivo per la gestione fisico processo, il che significa che il modello deve corrispondere.

Produciamo tutte le dimensioni. Guardando parzialmente al futuro, ho già descritto in, ma ora sveleremo più nel dettaglio:

  • U- ha un valore in % della potenza. Ancora più precisamente - a 2/5 della % di potenza, poiché la nostra tabella supera 1/250 del 100%.
  • Err- mancata corrispondenza, specificata in gradi. Più precisamente - dopo 1/32 gradi.
  • interno- l'integrale è la somma dei gradi nel tempo - e quindi ha dimensione di grado*sec. Più precisamente - (1/32 gradi)*(1/25 sec)
  • Ti- impostare dopo 1/25 sec
  • (1/Ti)*Int- dopo il calcolo fornisce un contributo avente una dimensione (1/32 gradi).
  • dErr- derivata, ha la dimensione di gradi/sec, o più precisamente (1/32 gradi)/(1/25 sec)
  • Td- impostare dopo 1/25 sec
  • Td*dErr- dopo che il prodotto porta il contributo alla dimensione (1/32 gradi)
  • (...) - quindi, tutti i termini tra parentesi sono ridotti alla dimensione (1/32 gradi)
  • K- è d'accordo U E (...) , il che significa che ha la dimensione di percentuale per grado, più precisamente (2/5)%/(1/32 gradi)

Ora puoi vedere chiaramente perché il coefficiente proporzionale è tolto tra parentesi - questo ti permette di lasciare i coefficienti differenziale e int semplicemente come costanti di tempo, di conseguenza, quando imposti l'operatore opera con numeri semplici e comprensibili - percentuale per grado per il coefficiente proporzionale e i secondi per i coefficienti integrale e differenziale.

E grazie alla comoda selezione della posizione dei punti e delle dimensioni temporali, come vedremo ora, tutti i calcoli vengono eseguiti quasi direttamente.

Tranne una cosa: abbiamo la quantità Ti, e per il calcolo è richiesto 1/Ti. Un’operazione di divisione di grandi dimensioni è molto costosa. L'operazione di moltiplicazione è molte volte più economica, quindi utilizzeremo l'eccellente articolo Divisione per numeri interi invarianti utilizzando la moltiplicazione. Dopotutto, lo abbiamo fatto K / Ti / Td cambiano estremamente raramente, e quindi possiamo permetterci di pervertirli quanto vogliamo dopo che sono cambiati, l'importante è che il ciclo di calcolo principale funzioni rapidamente.

Quindi invece di Ti per i calcoli li inseriamo in un set Ti_m, Ti_sh1, Ti_sh2; e ad ogni ciclo eseguiamo il calcolo:
T1 = MULUH(Ti_m, Int) Q = SHR(T1+SHR(Int-T1, Ti_sh1), Ti_sh2)

Ora calcoliamo il bilanciamento dei bit. Per fare ciò, scriviamo la formula completa passo dopo passo:

  1. Eo = E; Abbiamo bisogno che l'errore passi. Errori: 16 bit
  2. E = Y-X; Calcoliamo il nuovo disadattamento. 16bit
  3. Int = Int + (E+Eo)/2 ; Integriamo l'errore. In questo caso, calcoliamo la metà della somma della differenza (schema della differenza). 32 bit = 32 bit + 16 bit
  4. cI = Int * (1/Ti) ; Calcoliamo il contributo integrale: 32 bit * 32 bit => 32 bit
  5. cD = Td * (E-Eo) ; Calcoliamo il contributo differenziale - 16*16 => 32bit
  6. PID = E + cI + cD ; Scadente; 16+32+32 => 32 bit
  7. U = K*PID/256 ; Coeff; 32*16/8 bit => 40 bit.

Per tutti i calcoli la posizione del punto fino al 7° gradino rimane al 5° posto da destra. All'ultimo momento avviene un'interessante finta con le orecchie. K è impostato rispettivamente in 1/256, dopo la moltiplicazione il punto viene spostato a sinistra a 5+8=13° posto, quindi dobbiamo scartare gli 8 bit di ordine inferiore del risultato. E il byte più basso del risultato è la potenza di cui abbiamo bisogno dopo il 2/5%. Questo è un altro motivo per cui la potenza viene livellata in incrementi di 1/250: ciò consente di comprimere il risultato in un byte e di ottenere facilmente il risultato desiderato dalla tabella.

Successivamente, ricordiamo che ci interessa solo la potenza da 0 a 250 - quindi il 7° passaggio dei calcoli è molto semplice, non appena otteniamo un numero negativo - aggiungiamo immediatamente uMin. Non appena scopriamo che un byte alto non è zero, aggiungiamo immediatamente uMax. E solo se la potenza rientra nell'intervallo, controlliamo meno uMin o più uMax.

Nel caso qualcuno fosse interessato:

un completo pasticcio di calcoli

; Controllo PID CalcMainEnd: ; Informatica, Go-Go. CalcPid: ; 1. Eo = E | Pid1 a 16 bit: MOV Err0H, ErrH MOV Err0L, ErrL ; 2. E = Y-X | 16 bit Pid2: CLR C MOV A, Impostazione L SUBB A, ThermoL MOV ErrL, A MOV A, Impostazione H SUBB A, ThermoH MOV ErrH, A JNB OV, Pid2Ov JB ACC.7, Pid2Max Pid2Min: MOV ErrL, #LOW(-500* 32) MOV ErrH, #HIGH(-500*32) SJMP Pid2End Pid2Max: MOV ErrL, #LOW(500*32) MOV ErrH, #HIGH(500*32) SJMP Pid2End Pid2Ov: JNB ACC.7, Pid2OvP Pid2OvN: ; Controlliamo la restrizione verso il basso CLR C MOV A, ErrL SUBB A, #LOW(-500*32) MOV A, ErrH SUBB A, #HIGH(-500*32) JNC Pid2End ; Se > -500 => tutto ok SJMP Pid2Min Pid2OvP: CLR C MOV A, ErrL SUBB A, #LOW(500*32) MOV A, ErrH SUBB A, #HIGH(500*32) JNC Pid2Max ; Se< 500 => è tutto ok Pid2End: ; 3. Int = Int + (E+Eo)/2 | 32 bit+16 bit Pid3: JNB PowerReady, Pid3End; Se non c'è rete non salviamo la parte integrale MOV A, ErrL ADD A, Err0L MOV R0, A ; temporaneamente MOV A, ErrH ADDC A, Err0H MOV C, ACC.7 ; La semisomma sta sempre in 16 bit, quindi durante lo spostamento è necessario preservare il segno di RRC A ; Dividiamo senza perdita di segno XCH A, R0 ; A= parte di ordine inferiore, R0 - semisomma di ordine superiore RRC A ; Aggiunto JNB IntS, Pid3IntPos; Int è negativo, cambiamo segno a R0:A, quindi sarà possibile sommare semplicemente con Int CLR C CPL A ADD A, #1 XCH A, R0 CPL A ADDC A, #0 XCH A, R0 Pid3IntPos: ; Int e R0:A ora hanno segni coerenti, quindi aggiungiamo nel solito modo ADD A, IntLL MOV IntLL, A MOV A, IntLH ADDC A, R0 MOV IntLH, A MOV A, R0 JB ACC.7, Pid3Neg ; Hai aggiunto una differenza negativa? 7, Pid5Shift; Se R3<80 -- округление не надо ANL A, #7Fh JZ Pid5Round ; Если = 80 -- округляем до нечетного MOV A, #1 ADD A, R4 MOV R4, A MOV A, R2 ; A=0 ADDC A, R5 MOV R5, A MOV A, R2 ; A=0 ADDC A, R6 MOV R6, A MOV A, R2 ; A=0 ADDC A, R7 MOV R7, A SJMP Pid5Shift Pid5Round: MOV A, R4 ORL A, #01h MOV R4, A ;JMP Pid5Shift Pid5Shift: ; R3:R2:R1:R0 = (Int-R7:R6:R5:R4) > > 1 CLR C MOV A, IntLL SUBB A, R4 MOV R0, A MOV A, IntLH SUBB A, R5 MOV R1, A MOV A, IntHL SUBB A, R6 MOV R2, A MOV A, IntHH SUBB A, R7 RRC A ; >>1 senza perdita di riporto MOV R3, A MOV A, R2 RRC A MOV R2, A MOV A, R1 RRC A MOV R1, A MOV A, R0 RRC A ;MOV R0, A ; R3:R2:R1:R0 += R7:R6:R5:R4 ;MOV A, R0 ADD A, R4 MOV R0, A MOV A, R1 ADDC A, R5 MOV R1, A MOV A, R2 ADDC A, R6 MOV R2, A MOV A, R3 ADDC A, R7 MOV R7, A ; Ora vai a destra su sh2.<0 =>Sub ChkDiffN: DiffS JNB, Pid6Sub; interno<0, Diff>0 => Sottotitolo ; interno<0, Diff<0 =>Aggiungi Pid6Aggiungi: ; Stesso segno => aggiungili con controllo di overflow MOV A, R0 ADD A, R4 MOV R0, A MOV A, R1 ADDC A, R5 MOV R1, A MOV A, R2 ADDC A, R6 MOV R2, A MOV A, R3 ADDC A, R7 MOV R3, A JNC Pid6Err ; Se non c'è riporto, come risultato dell'addizione non si è verificato alcun overflow MOV R3, #0FFh MOV R2, #0FFh MOV R1, #0FFh MOV R0, #0FFh SJMP Pid6Err Pid6Sub: ; I segni sono diversi: sottrai uno dall'altro e controlla il segno del risultato CLR C MOV A, R4 SUBB A, R0 MOV R0, A MOV A, R5 SUBB A, R1 MOV R1, A MOV A, R6 SUBB A, R2 MOV R2, A MOV A, R7 SUBB A, R3 MOV R3, A JNC Pid6Err ; Se non c'è prestito, il segno del risultato è uguale al segno di DiffS CPL DiffS ; Se c'è stato un prestito, il segno di DiffS e il risultato devono essere invertiti MOV R6, #0 ; R6=0 MOV A, R0 CPL A ADDC A, R6 ; R6=0, C=1 => azione +1 MOV R0, A MOV A, R1 CPL A ADDC A, R6 ; +trasferimento MOV R1, A MOV A, R2 CPL A ADDC A, R6 MOV R2, A MOV A, R3 CPL A ADDC A, R6 MOV R3, A Pid6Err: MOV R6, #0 ; R6=0; In R3:R2:R1:R0 -- si trova cI+cD; segno somma in DiffS; è necessario aggiungere/sottrarre Err, scritto in codice inverso; Riduciamo il segno di Err a DiffS MOV R4, ErrL MOV A, ErrH JB ACC.7, Pid6ChkDiffS JNB DiffS, Pid6SumErrNoInv ; Err>0, Diff>0 => NoInv SJMP Pid6SumErrInv Pid6ChkDiffS: JNB DiffS, Pid6SumErrNoInv ; Err<0, Diff>0 => NoInv Pid6SumErrInv: ; Err ha un segno diverso da DiffS-invert SETB C; Non sono sicuro dello stato C MOV A, ErrL CPL A ADDC A, R6 ; A+=R6+C, R6=0 C=1 => A+=1 MOV R4, A ; R4=ErrL MOV A, ErrH CPL A ADDC A, R6 Pid6SumErrNoInv: MOV R5, A ; ErrH Pid6SumErr: ; Quindi, in R5:R4 si trova Err, il cui segno è coerente con DiffS; ma nel codice complemento inverso MOV A, R0 ADD A, R4 MOV R0, A MOV A, R5 CLR F0 JNB ACC.7, Pid6SubErrPos SETB F0 MOV R6, #0FFh ; Aggiungi un negativo => aggiungi FF Pid6SubErrPos: ADDC A, R1 MOV R1, A MOV A, R2 ADDC A, R6 ; +estensione MOV R2, A MOV A, R3 ADDC A, R6 ; +estensione MOV R3, A MOV R6, #0 ; È necessario verificare se è cambiato il segno della somma totale JNC Pid6ChkF0 JB F0, Pid7 ; Err<0, был перенос =>Il segno non è cambiato, non c'è overflow SJMP Pid6SumOv ; Err>0, c'è stato un trasferimento => overflow Pid6ChkF0: JNB F0, Pid7 ; Err>0, nessun riporto => nessun overflow; SJMP Pid6SumUf ; Err<0, небыло переноса =>il segno è cambiato Pid6SumUf: ; Se Err<0 и небыло переноса =>segno cambiato CPL DiffS MOV A, R0 CPL A ADD A, #1 ; C=?, quindi aggiungiamo 1 usando il solito metodo MOV R0, A MOV A, R1 CPL A ADDC A, R6 MOV R1, A MOV A, R2 CPL A ADDC A, R6 MOV R2, A MOV A, R3 CPL A ADDC A, R6 MOV R3, A SJMP Pid7 ; Il segno del risultato e DiffS sono normalizzati Pid6SumOv: ; Si è verificato un overflow => arrotondamento al massimo MOV R0, #0FFh MOV R1, #0FFh MOV R2, #0FFh MOV R3, #0FFh ; 7. U = K*PID/256 | 32bit*16bit/8bit => 40bit, ; | che vengono troncati a 10 bit; | quando si calcola Pid7: ; R3:R2:R1:R0 contiene il risultato del PID, DiffS ne contiene il segno; Dobbiamo calcolare K*PID/256, limitando il risultato a 10 bit; K è sempre positivo, quindi se PID< 0 =>minimo JB DiffS, Pid7Umin ; poiché possiamo limitare rigorosamente il limite superiore a 16 bit, ; quindi se R3 != ​​0 => imposta comunque il massimo MOV A, R3 JNZ Pid7Umax ;<>= ; calcoliamo, tenendo conto che dovrebbe risultare R7=0 R6=0, ; altrimenti c’è overflow, quindi non tocchiamo affatto R7 e R6; ma controlliamo il risultato; R7:R6 = R2*KH MOV A, R2 JZ Pid7S1 MOV A, KH JNZ Pid7Umax ; Se R2!=0 e KH!=0 => R7:R6>0 => overflow Pid7S1: ; R6:R5 = R2*KL MOV A, R2 MOV B, KL MUL AB MOV R5, A MOV A, B JNZ Pid7Umax ; Se R6 > 0 => traboccamento; R6:R5 = R1*KH MOV A, R1 MOV B, KH MUL AB ADD A, R5 JC Pid7Umax ; Se R6 > 0 => overflow MOV R5, A MOV A, B JNZ Pid7Umax ; Se R6 > 0 => traboccamento; R5:R4 = R0*KH MOV A, R0 MOV B, KH MUL AB MOV R4, A MOV A, R5 ADD A, B JC Pid7Umax ; Se R6 > 0 => overflow MOV R5, A ; R5:R4 = R1*KL MOV A, R1 MOV B, KL MUL AB ADD A, R4 MOV R4, A MOV A, R5 ADDC A, B JC Pid7Umax ; Se R6 > 0 => overflow MOV R5, A ; R4:R3 = R0*KL MOV A, R0 MOV B, KL MUL AB RLC A ; C = R3>=0x80, Z=R3>0x80 MOV R3, #0FFh ; R3 R5:R4 = Umin ; Potenza calcolata MOV UH, R5 MOV UL, R4 SETB UReady AJMP CalcExit Pid7Umax: ; Imposta la potenza massima MOV UH, UmaxH MOV UL, UmaxL SETB UReady AJMP CalcExit Pid7Umin: ; Imposta potenza minima MOV UH, UminH MOV UL, UminL SETB UReady AJMP CalcExit

IX. Applicazione dell'influenza.

Quindi abbiamo un impatto calcolato e il nostro compito è applicarlo. A questo scopo viene eseguito un ciclo operativo generale alla frequenza di 50Hz. Nel ciclo pari vengono eseguiti la misurazione e il calcolo, nel ciclo dispari viene applicata l'influenza. Si ottiene così lo schema generale: la potenza viene impostata, le misurazioni e i calcoli vengono effettuati attraverso una sinusoide e ne viene utilizzata una nuova attraverso un'altra.

X. Insidie.

Rispetto allo schema differenziale, lo schema diretto presenta pochissime insidie, ecco un elenco di quelle che ho visto:
  • Contabilità delle dimensioni. L'errore più importante e più comune. Non puoi semplicemente prendere U=K*(Err+Ki*Int+Kd*Diff), senza stipulare COSA sono K, Ki, Kd. E con quale precisione? È particolarmente importante per il coefficiente Ki, che ha la dimensione inversa del tempo - se l'operazione è in numeri interi, NON PUOI semplicemente moltiplicare per esso - poiché deve esserci DIVISIONE e il numero inverso non può essere rappresentato in numeri interi.
  • Contabilità del segno. La seconda cosa molto importante è tenere conto del segno. Tutte le operazioni devono essere firmate, l'integrale deve accumulare segno - poiché non solo sostituisce la componente proporzionale, ma le consente anche di resistere a influenze esterne, ad esempio il rilascio di calore dalla miscela stessa; e quindi il suo segno è negativo.
  • Contabilità di eccedenza. Per noi è importante ottenere la potenza dallo 0% al 100%, oppure il fatto che la potenza calcolata sia maggiore del 100% o minore dello 0%. Non è necessario fare tutti i calcoli se, ad esempio, otteniamo un risultato negativo nel sottogruppo. Ma allo stesso tempo, è importante tenere conto del fatto che durante l'aggiunta del prodotto può verificarsi un overflow - e deve essere preso in considerazione come "più del 100%" e in nessun caso il risultato dovrebbe essere lasciato dopo l'overflow . Ciò è irto, prima di tutto, della mancanza di regolazione quando necessario: l'oggetto è al di sotto della temperatura richiesta e l'alimentazione non viene fornita
  • Contabilità del tempo di calcolo. La necessità di moltiplicazioni a bit elevato (con un'implementazione curva, anche divisioni) richiede tempo, quindi è estremamente importante calcolare il tempo di esecuzione della versione peggiore dei calcoli e dovrebbe essere inferiore al tempo libero tra le misurazioni . In caso contrario, il risultato sarà un oggetto non gestito che "sembra funzionare, ma in qualche modo non funziona correttamente".

XI. Conclusioni.

Di conseguenza, lo schema di implementazione diretta non presenta i problemi dello schema differenziale, ma richiede maggiori costi computazionali. Tuttavia, se implementato correttamente, il circuito diretto è abbastanza applicabile anche su microcontrollori economici a 8 bit e fornisce risultati più prevedibili.

Il controller PID è un dispositivo già pronto che consentirà all'utente di implementare un algoritmo software per il controllo di determinate apparecchiature di un sistema automatizzato. Costruire e configurare sistemi di controllo diventa molto più semplice se si utilizzano dispositivi già pronti come il controller PID universale TRM148 per 8 canali di Aries.

Diciamo che devi automatizzare il mantenimento delle corrette condizioni climatiche in una serra: prendi in considerazione la temperatura del terreno vicino alle radici delle piante, la pressione dell'aria, l'umidità dell'aria e del suolo e mantieni i parametri impostati controllando i ventilatori. Non c'è niente di più semplice, basta configurare il controller PID.

Ricordiamo innanzitutto cos'è un controller PID? Un controller PID è un dispositivo speciale che esegue una regolazione continua e precisa dei parametri di uscita in tre modi: proporzionalmente, integralmente e differenziale, e i parametri iniziali sono parametri di ingresso ricevuti dai sensori (pressione, umidità, temperatura, illuminazione, ecc.).

Il parametro di ingresso viene fornito all'ingresso del controller PID da un sensore, ad esempio da un sensore di umidità. Il regolatore riceve un valore di tensione o corrente, lo misura, quindi esegue i calcoli secondo il suo algoritmo e infine invia un segnale all'uscita corrispondente, a seguito della quale l'automazione riceve un'azione di controllo. L'umidità del terreno è diminuita: l'irrigazione è stata attivata per alcuni secondi.

L'obiettivo è raggiungere un valore di umidità specificato dall'utente. O per esempio: l'illuminazione è diminuita - accendi i fitolamp sopra le piante, ecc.

Controllo PID

Infatti, sebbene all'apparenza tutto sia semplice, all'interno del regolatore la matematica è più complicata non avviene tutto in un unico passaggio; Dopo aver attivato l'irrigazione, il controller PID effettua nuovamente una misurazione, misurando quanto è cambiato il valore di ingresso: ecco come viene rilevato l'errore di controllo. L'impatto successivo sull'organo esecutivo verrà adeguato tenendo conto dell'errore di regolamentazione misurato, e così via in ogni fase di controllo fino al raggiungimento dell'obiettivo, un parametro specificato dall'utente.

Tre componenti sono coinvolte nella regolazione: proporzionale, integrale e differenziale. Ciascuna componente ha il proprio grado di importanza in ciascun sistema specifico, e quanto maggiore è il contributo dell'una o dell'altra componente, tanto più significativamente dovrebbe essere modificato nel processo di regolamentazione.

La componente proporzionale è la più semplice, maggiore è la variazione, maggiore è il coefficiente (proporzionalità nella formula) e per ridurre l'impatto è sufficiente ridurre semplicemente il coefficiente (moltiplicatore).

Supponiamo che l'umidità del terreno nella serra sia molto inferiore a quella stabilita, quindi il tempo di irrigazione dovrebbe essere più lungo della stessa quantità in quanto l'umidità attuale è inferiore a quella stabilita. Questo è un esempio approssimativo, ma questo è il principio generale.

Componente integrale: è necessario aumentare la precisione del controllo in base agli eventi di controllo precedenti: gli errori precedenti vengono integrati, vengono apportate correzioni per ottenere alla fine una deviazione zero nella regolazione futura.

Infine, la componente differenziale. Qui viene preso in considerazione il tasso di variazione della variabile controllata. Sia che il valore specificato cambi in modo graduale o brusco, di conseguenza, l'azione normativa non dovrebbe portare a deviazioni eccessive del valore durante la regolazione.

Non resta che selezionare un dispositivo per il controllo PID. Oggi ce ne sono molti sul mercato, ce ne sono di multicanale che consentono di modificare più parametri contemporaneamente, come nell'esempio sopra con una serra.

Diamo un'occhiata al design del controller utilizzando l'esempio del controller PID universale TRM148 dell'azienda Aries.

Gli otto sensori di ingresso forniscono segnali agli ingressi corrispondenti. I segnali vengono scalati, filtrati, corretti, i loro valori possono essere visualizzati sul display commutando con i pulsanti.

Le uscite del dispositivo sono prodotte in varie modifiche nelle combinazioni richieste di quanto segue:

    relè 4 A 220 V;

    optoaccoppiatori a transistor tipo n–p–n 400 mA 60 V;

    optoaccoppiatori triac 50 mA 300 V;

    DAC “parametro-corrente 4...20 mA”;

    DAC “parametro-tensione 0...10 V”;

    Uscita 4...6 V 100 mA per il controllo di un relè a stato solido.

Pertanto, l'azione di controllo può essere analogica o digitale. - si tratta di impulsi di larghezza variabile e analogici - sotto forma di tensione o corrente che varia dolcemente in un intervallo unificato: da 0 a 10 V per tensione e da 4 a 20 mA per un segnale di corrente.

Questi segnali di uscita vengono utilizzati precisamente per controllare gli attuatori, ad esempio una pompa del sistema di irrigazione o un relè che accende e spegne un elemento riscaldante o un motore di controllo della valvola. Sono presenti indicatori di segnale sul pannello del regolatore.


Per interagire con un PC, il regolatore TRM148 è dotato di un'interfaccia RS-485, che permette:

    configurare il dispositivo su PC (i programmi di configurazione sono forniti gratuitamente);

    trasmettere alla rete i valori attuali dei valori misurati, la potenza di uscita del controller, nonché eventuali parametri programmabili;

  • ricevere dati operativi dalla rete per generare segnali di controllo.

LEGGE DI REGOLAMENTO P, PI, PID, PD.

Descrizione generale

Principio dei controllori PID

Per i regolatori di posizione, il processo di controllo consiste in oscillazioni attorno ad un dato punto. Naturalmente questo è legato alla caratteristica statica del “relè” Y(U-X).

REGOLATORI
CON LEGGE DI REGOLAZIONE PID La figura mostra la caratteristica lineare statica Y(U-X).

regolatore proporzionale

Se l'ingresso E = U-X (residuo) e il valore di uscita del segnale del controller Y sono legati dalla semplice relazione Y=K·(U-X), tale controller è chiamato proporzionale. Naturalmente la sezione lineare della caratteristica statica non è infinita ma è limitata dal valore massimo possibile del valore di uscita: Ymax. Ad esempio, quando si regola la temperatura dell'acqua nel serbatoio: X è la temperatura dell'acqua; U è il valore impostato della temperatura richiesta; Y: segnale di uscita del controller (potenza del riscaldatore, W); Ymax, ad esempio, 750 W. Se alla massima potenza il valore è E = 75°C, allora K = 0,1°C/W.
Con un guadagno K molto elevato, il controllore proporzionale degenera in un controllore posizionale con banda morta pari a zero. Ad un valore K inferiore la regolazione avviene senza fluttuazioni
(vedi Fig. 2).



Regolatore P per modifiche graduali
riferimenti da 0 a U (curva di accelerazione)

Si noti che il valore della variabile controllata X non raggiungerà mai il target U. Si forma un cosiddetto errore statico: d (vedere Fig. 2). Infatti, man mano che la temperatura dell'acqua X si avvicina al target U, la potenza erogata Y diminuisce gradualmente, perché Y=K·(U-X). Ma il calore dissipato nell’ambiente aumenta, e l’equilibrio si verificherà in Y = K·d e d non raggiungerà 0, perché se d è uguale a 0, allora sia Y=0 che X=0. Pertanto, all'uscita del regolatore viene impostato un determinato valore Y=K·d, che porta il valore controllato X in uno stato diverso dall'impostazione. Più grande è K, più piccolo è d. Tuttavia, a un K sufficientemente grande, l'ATS e l'oggetto possono entrare in auto-oscillazioni. Questo guadagno limite è determinato dal rapporto tra la pendenza della curva di accelerazione R e il ritardo di trasporto to dell'oggetto: Kmax = 2/(R·to) (vedi Fig. 2).
In alcuni casi, con un piccolo ritardo nel trasporto, l'errore statico rientra nei limiti richiesti, quindi i regolatori P trovano qualche applicazione. Per eliminare l'errore statico d durante la generazione del valore di uscita Y, viene introdotta una componente integrale della deviazione dal target:
Y = K·(U-X) + In(U-X)/Ti,
dove Ti è la costante di integrazione.
Pertanto, maggiore è il tempo durante il quale il valore di X è inferiore al riferimento, maggiore è la componente integrale, maggiore è il segnale di uscita. Un controller con una tale legge per la generazione del segnale di uscita è chiamato controller PI proporzionale-integrale.
In stato stazionario (d=0), l'integratore contiene il valore In/T, che è uguale alla potenza di uscita richiesta per ottenere la X richiesta. Pertanto, l'integratore, per così dire, trova il coefficiente di trasmissione statica dell'oggetto. Ci vuole molto tempo per raggiungere uno stato stazionario nell'integratore. Pertanto, il controller PI può essere utilizzato nei casi in cui le influenze esterne sono piuttosto lente.
In caso di cambiamenti improvvisi di fattori esterni ed interni (ad esempio, è stata versata acqua fredda nel serbatoio o l'attività è stata cambiata improvvisamente), il controller PI ha bisogno di tempo per compensare questi cambiamenti.
Per accelerare la risposta dell'ACS alle influenze esterne e ai cambiamenti nell'attività, nel controller viene introdotto un componente differenziale D(U-X):
Y = K·(U-X) + In(U-X)/Ti+Тd·D(U-X),
dove Td è la costante di differenziazione.
Più velocemente E cresce, maggiore è D(U-X). Un controllore con tale legge di controllo è chiamato controllore PID. Selezionando K, Ti e Td per un oggetto specifico, è possibile ottimizzare la qualità del funzionamento del controller: ridurre il tempo necessario per raggiungere l'obiettivo, ridurre l'influenza dei disturbi esterni e ridurre la deviazione dall'obiettivo. Con un Ti molto grande, il controller porta l'oggetto molto lentamente sul bersaglio. A Ti piccolo si verifica una sovraregolazione, ad es. il parametro regolabile X salta il compito (Fig. 7) e poi converge ad esso. Di seguito vengono descritte le modalità di regolazione dei regolatori, ovvero: calcolo dei coefficienti in funzione delle proprietà dinamiche dell'oggetto. Senza regolazione, il controller PI potrebbe avere prestazioni peggiori anche rispetto al controller T. Presentiamo le funzioni di trasferimento dei regolatori P, PI e PID adottati nella teoria del controllo automatico.
Regolatore proporzionale – P:
y = K(u-x), cioè. La deviazione dal setpoint viene inserita nel feedback.
Proporzionale-Integrale – PI:
y = (u-x)(Kp + /pTi), cioè. Nel feedback è incluso anche l'integrale della deviazione, questo aiuta ad evitare un errore statico.
Proporzionale-Integrale-Derivativa – PID:
y = (u-x)·(Kp + 1/pTi + p·Td), cioè. Nel feedback viene inclusa anche la derivata della deviazione, ciò consente di migliorare le caratteristiche dinamiche del controller.
Lo schema a blocchi del controller PID è mostrato in Fig. 3.


Schema a blocchi di un controller PID

L'entità del disadattamento E è soggetta a differenziazione e integrazione. Il valore di uscita - Y del controller PID è formato sommando i coefficienti di ponderazione delle componenti differenziale, proporzionale e integrale. In base alla presenza di questi componenti i regolatori vengono abbreviati in P, PI, PID.
Esistono modifiche ai controller PID:
a) se è presente un integratore in uscita o nell'attuatore (ad esempio, un servoazionamento per una valvola di riscaldamento dell'acqua), il controller PD si trasforma in un controller PI e il circuito di calcolo del controller PID richiede una doppia differenziazione;
b) la componente differenziale è spesso calcolata solo da X, il che fornisce una transizione più graduale alla modalità quando cambia il riferimento U.

Istituzione di regolatori Quando si utilizzano controller PID per ciascun oggetto specifico, è necessario configurare da uno a tre coefficienti. Sono possibili ATS con impostazioni automatizzate. Per i regolatori standard sono noti i metodi di ottimizzazione analitici e tabulari più semplici (ad esempio due metodi Zidler).

Sintonizzazione per reazione al salto di ingresso Algoritmo di impostazione:
— una nuova attività (setpoint) viene inviata all'ingresso ACS - il riscaldatore viene acceso alla massima potenza e t0, R, t e sono determinati dal processo transitorio X(t) (vedere Fig. 4):


Curva di accelerazione per un oggetto con ritardo di trasporto:
to è il tempo di ritardo del trasporto;
ti è la costante di tempo (tempo di corrispondenza) determinata dall'inerzia dell'oggetto;
Xy: valore costante;
R - pendenza della curva di accelerazione dX/dt (velocità massima di variazione di X)

— i coefficienti di tuning sono calcolati secondo le seguenti relazioni approssimative:
per regolatore P K= 1/R t0
per regolatore PD K= 1/R t0, Td=0,25 t0
per regolatore PI K= 0,8/R t0, Ti= 3 t0
per il regolatore PID K= 1,2/R t0, Ti= 2 t0, Td=0,4 t0.
Non è necessario portare l'oggetto al massimo valore possibile di X. Tuttavia, va tenuto presente che un salto troppo piccolo non consente di determinare R con una precisione sufficientemente elevata.

Accordatura utilizzando il metodo massimo guadagno Questo metodo viene utilizzato se è consentito un processo oscillatorio, in cui i valori della variabile controllata superano significativamente i limiti dell'U specificato.


Verso l'accordatura utilizzando il metodo massimo
guadagno

Algoritmo di impostazione:
— viene determinato il coefficiente di guadagno massimo Kmax al quale l'ACS e l'oggetto passano alla modalità oscillatoria, ovvero senza parti integrali e differenziali (Òd=0, Òi=̐). Inizialmente K=0, poi aumenta finché l'ACS e l'oggetto entrano in modalità oscillatoria. L'ACS corrisponde al circuito del regolatore P (vedere Fig. 2).
— si determina il periodo di oscillazione tc (vedi Fig. 5);

per regolatore P K= 0,5 Kmax
per regolatore PD K= 0,5 Kmax, Td=0,05 tc
per regolatore PI K= 0,45 Kmax, Ti= 0,8 ts
per il regolatore PID K= 0,6·Kmax, Ti= 0,5·tñ, Td=0,12·tc.

Impostazione tramite processo di accensione/spegnimento regolazione del relè

Da impostare secondo il processo on-off
regolamento

Questa tecnica è conveniente se è stato utilizzato un controller T, che viene poi sostituito da un controller PID:
— il sistema viene commutato in modalità di controllo on-off secondo la legge del relè (vedere Fig. 6);
si determinano l'ampiezza - A e il periodo di oscillazione tñ;
— i coefficienti di tuning sono calcolati secondo le seguenti relazioni approssimative:
per regolatore P K = 0,45/A
per regolatore PD K = 0,45/A, Td=0,05 tc
per regolatore PI K = 0,4/A, Ti= 0,8 tc
per il regolatore PID K = 0,55/A, Ti= 0,5·tc, Td=0,12·tc.
Se l'oggetto non cambia la sua struttura e i suoi parametri, i sistemi con controller PID forniscono la qualità di regolazione necessaria in caso di grandi disturbi e interferenze esterne, ovvero un disadattamento E vicino a 0 (vedere Fig. 7). Di norma, non è immediatamente possibile coordinare accuratamente i parametri del controller e dell'oggetto. Se Ti è due volte inferiore a quello ottimale, il processo di controllo può entrare in modalità oscillatoria. Se Ti è significativamente maggiore dell'ottimale, il controller raggiunge lentamente una nuova modalità e reagisce male ai disturbi rapidi - G. Pertanto, di norma, è necessaria un'ulteriore regolazione. Nella fig. La Figura 7 mostra l'effetto di impostazioni non ottimali dei controller PID sulla forma della funzione di transizione (reazione dell'ACS e dell'impianto a un singolo salto nel task).

Un controller PID è un dispositivo di controllo del processo utilizzato nel metodo di controllo PID, che si basa su tre leggi di controllo: proporzionale, integrale e differenziale.

Principio di funzionamento del regolatore PID

Il soffietto integrale e la restrizione variabile consentono il controllo integrale. Due soffietti differenziali e un altro limite variabile consentono al regolatore di fornire un controllo differenziale.

Se la potenza aumenta, il soffietto di ingresso e il soffietto differenziale inferiore si espandono. Il soffietto differenziale superiore si espande successivamente a causa della restrizione variabile. Il bilanciatore gira e la potenza aumenta immediatamente.

Quando il segnale di ingresso fluisce completamente nel soffietto del differenziale superiore, il soffietto applicherà una forza che annullerà la forza applicata dal soffietto del differenziale inferiore. A questo punto il controllo differenziale si interrompe. Nello stesso momento in cui ciò avviene, il soffietto di retroazione si espande a causa della variazione della potenza. La variazione di potenza viene applicata al soffietto integrato, che provoca una forza per mantenere la valvola più vicina all'ugello. Questa azione mantiene alta l'uscita durante il tempo in cui la variabile di processo non è uguale al setpoint. L'uscita continuerà ad aumentare finché la variabile di processo non ritorna al valore di setpoint.

Dove viene utilizzato il controller PID?

Un controller PID sarebbe una buona scelta per un preriscaldatore dell'olio alimentato a gas perché il processo a valle che riceve l'olio riscaldato consente solo deviazioni molto piccole della temperatura dell'olio rispetto al punto impostato e grandi ritardi nel processo di preriscaldamento rendono molto difficile il rilevamento e correggere le deviazioni.


Uno dei motivi del ritardo è la capacità. Il forno ha la capacità di trattenere una grande quantità di calore all'interno delle sue pareti. Il calore accumulato viene ceduto all'olio, ma il trasferimento non avviene istantaneamente. Se le pareti interne sono troppo calde, ci vorrà del tempo perché la loro temperatura scenda, durante questo tempo l'olio potrebbe surriscaldarsi. Se le pareti interne non sono sufficientemente riscaldate, l'olio potrebbe non ricevere abbastanza calore.

La componente differenziale del controller PID aiuta a superare i ritardi generando efficaci azioni di feedforward. La componente integrale regola continuamente il segnale di uscita in presenza di offset finché la temperatura controllata non ritorna al set point.

I migliori articoli sull'argomento