no way to compare when less than two revisions
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
— | software:qview:qview_6:qcl_library:ot30pidreg [2019/08/29 17:01] (versione attuale) – creata - modifica esterna 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== OT30PidReg ====== | ||
+ | |||
+ | **O = **//Output digitale// | ||
+ | |||
+ | **T = **// | ||
+ | |||
+ | La funzione OT30PidReg __implementa un regolatore generico PID__. Oltre a fornire in uscita il valore di regolazione, | ||
+ | |||
+ | ===== IMPLEMENTAZIONE ===== | ||
+ | |||
+ | **OT30PidReg ( aswParReg , aswParUsr, gwSetPoint, gwMeasure, aglOutReg )** | ||
+ | |||
+ | Parametri: | ||
+ | |||
+ | ^IN/ | ||
+ | |IN|ARRSYS|aswParReg [1]|W|Tempo di campionamento regolatore PID (sec/100) [0÷32767].| | ||
+ | |IN|ARRSYS|aswParReg [2]|W|Limite massimo di scala della variabile da regolare(UM) [-32768÷32767]| | ||
+ | |IN|ARRSYS|aswParReg [3]|W|Limite minimo di scala della variabile da regolare(UM) [-32768÷32767]| | ||
+ | |IN|ARRSYS|aswParReg [4]|W|Valore massimo uscita di regolazione [-32768 ÷32767]| | ||
+ | |IN|ARRSYS|aswParReg [5]|W|Valore minimo uscita di regolazione [-32768 ÷32767]| | ||
+ | |IN|ARRSYS|aswParReg [6]|W|Valore di saturazione positivo uscita di regolazione [-32768 ÷32767]| | ||
+ | |IN|ARRSYS|aswParReg [7]|W|Valore di saturazione negativo uscita di regolazione [-32768 ÷32767]| | ||
+ | |IN|ARRSYS|aswParReg [8]|W|Flags regolazione: | ||
+ | |IN|ARRSYS|aswParUsr [1]|W|Guadagno proporzionale.('' | ||
+ | |IN|ARRSYS|aswParUsr [2]|W|Tempo integrale (sec/100) [0÷9999]| | ||
+ | |IN|ARRSYS|aswParUsr [3]|W|Tempo derivativo (sec/100) [0÷9999]| | ||
+ | |IN|ARRSYS|aswParUsr [4]|W|Tempo di campionamento della derivata [0÷255]\\ 0=tempo di campionamento regolatore PID\\ 1=2*tempo di campionamento regolatore PID\\ …\\ …\\ n=(n+1)*tempo di campionamento regolatore PID| | ||
+ | |IN|ARRSYS|aswParUsr [5]|W|Costante di tempo filtro derivata (sec/100) [0÷9999]| | ||
+ | |IN|ARRSYS|aswParUsr [6]|W|Feed Forward (‰) [0÷2000]| | ||
+ | |IN|GLOBAL|gwSetPoint|W|Setpoint di regolazione (UM)| | ||
+ | |IN|GLOBAL|gwMeasure|W|Valore della variabile da regolare(UM)| | ||
+ | |OUT|ARRGBL|aglOutReg[1]|L|Registro uscita PID| | ||
+ | |OUT|ARRGBL|aglOutReg[2]|L|Registro uscita proporzionale| | ||
+ | |OUT|ARRGBL|aglOutReg[3]|L|Registro uscita integrale| | ||
+ | |OUT|ARRGBL|aglOutReg[4]|L|Registro uscita derivativa| | ||
+ | |OUT|ARRGBL|aglOutReg[5]|L|Registro uscita feedforward| | ||
+ | |OUT|ARRGBL|aglOutReg[6]|L|Registro errore| | ||
+ | |OUT|ARRGBL|aglOutReg[7]|L|Stati del regolatore: | ||
+ | |OUT|ARRGBL|aglOutReg[8]|L|Codice Errore| | ||
+ | |||
+ | ==== Errori ==== | ||
+ | |||
+ | Una volta richiamata la funzione la variabile " | ||
+ | 0: Nessun errore\\ | ||
+ | 1: errore impostazione tempo di campionamento\\ | ||
+ | 2: errore impostazione limite inferiore e/o superiore di scala\\ | ||
+ | 3: errore impostazione valore guadagno proporzionale\\ | ||
+ | 4: errore impostazione tempo integrale\\ | ||
+ | 5: errore impostazione tempo derivativo\\ | ||
+ | 6: errore impostazione valore percentuale feed-forward\\ | ||
+ | 7: errore impostazione valore minimo e/o valore massimo uscita regolatore\\ | ||
+ | 8: errore impostazione tempo di campionamento derivativa\\ | ||
+ | 9: errore impostazione costante di tempo filtro derivata\\ | ||
+ | 10: impostazione valore saturazione positivo superiore al valore massimo uscita regolatore\\ | ||
+ | 11: impostazione valore saturazione negativo inferiore al valore minimo uscita regolatore | ||
+ | |||
+ | === Esempio === | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Example | ||
+ | ; | ||
+ | aswParReg [1]=500 ; tempo campionamento = 500ms | ||
+ | aswParReg [2]=10000 ; | ||
+ | aswParReg [3]=0 ; fondo scala inferiore | ||
+ | aswParReg [4]=5000 ; | ||
+ | aswParReg [5]=0 | ||
+ | aswParReg [6]=2000 ; | ||
+ | aswParReg [7]=0 | ||
+ | |||
+ | aswParUsr[1] = 100 ; Guadagno proporzionale = 0.1 | ||
+ | aswParUsr[2] = 200 ; Tempo integrale = 2 sec. | ||
+ | |||
+ | aswParReg [8]= aswParReg [8] ORB 1 ; Abilita regolazione | ||
+ | MAIN: | ||
+ | gwSetPoint = 800 | ||
+ | OT30PidReg ( aswParReg , aswParUsr, gwSetPoint, gwMeasure, aslOutReg ) | ||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | </ | ||
+ | |||
+ | ==== Definizione di regolatore ==== | ||
+ | |||
+ | Un regolatore legge una variabile di ingresso (gwMeasure), | ||
+ | |||
+ | ==== Regolatore PID ==== | ||
+ | |||
+ | Uno dei più diffusi tipi di regolatori è il PID (Proportional, | ||
+ | |||
+ | === Azione proporzionale === | ||
+ | Questa azione di controllo stabilisce una relazione di proporzionalità diretta tra l' | ||
+ | La regola che stabilisce il valore di uscita (aslOutReg[7]) definisce che: con guadagno unitario (1000), l' | ||
+ | |||
+ | === Azione integrale === | ||
+ | L' | ||
+ | |||
+ | === Azione derivativa === | ||
+ | L' | ||
+ | |||
+ | === Azione feed-forward === | ||
+ | In aggiunta al regolatore PID è presente anche l' | ||
+ | Impostando un valore di 100%, quando il setpoint (gwSetPoint ) sarà pari al " | ||