|
|
| ||||||||||||
|
e = r - y; inte = inte + e * Te; deriv = (e - e_v) / Te; u = kp * e + ki * inte + kd * deriv; e_v = e; |
Nume | Tip | Domeniu | Um | Array Size | Comentariu |
init_sra | DIGITAL | - | - | - | Variabila pentu initializare |
y | REAL | 250 | - | - | RA- y - Iesirea, Process variable |
y_v | REAL | 250 | - | - | RA- y_v - Iesirea_v, Process variable_v |
u | REAL | 250 | - | - | RA - u - Comanda Output |
r | REAL | 250 | - | - | RA - r - Referinta, Set Point |
e | REAL | -250 + 250 | - | - | RA - e - Eroarea Error |
e_v | REAL | 250 | - | - | RA - e_v - Eroarea_v Error_v |
v | REAL | 250 | - | - | RA - v - Perturbatia |
kp | REAL | 10 | - | - | RA - kp - coeficient roportional |
ki | REAL | 5 | - | - | RA - ki - coeficient integrativ |
kd | REAL | 2 | - | - | RA - kd - coeficient derivativ |
Te | REAL | 5 | - | - | RA - Te - Timp de esantionare |
inte | REAL | 5 | - | - | RA - inte - Element integrativ |
deriv | REAL | 5 | - | - | RA - deriv - Element derivativ |
FUNCTION ini_sra() IF init_sra=0 THEN kp=0.5; ki=2.5; kd=0.01; r=125; y=50; Te=0.250; init_sra=1; END END REAL Buf3[100]; REAL Buf4[100]; REAL Buf5[100]; INT hPlot; FUNCTION Plot_pid(INT hAn,INT iGridCol= Yellow,INT iFrameCol= Black,INT iFillCol=Black) INT i=1; e=0; e_v=0; y=0; y_v=0; inte=0; deriv=0; u=0; FOR i=0 TO 99 DO e=r-y; inte = inte + e * Te; deriv = (e - e_v) / Te; u = kp * e + ki * inte + kd * deriv; y = (u * Te + 5 * y_v) / (5 + Te); e_v = e; y_v = y; Buf3[i] = y; Buf4[i] = u; Buf5[i] = r; END INT FrameWidth=10; hPlot=PlotOpen(hAn,"Display",65); PlotGrid(hPlot,100,0,0,400,220,5,iGridCol,9,iGridCol,FrameWidth,iFrameCol,iFillCol,0); PlotScaleMarker(hPlot,-10,210, 6, 1, Black, 1); PlotLine(hPlot, 0, Light_Green, 2, 0, Light_Red , 1, 100, Buf3[0], -400,900,1); PlotLine(hPlot, 0, Light_Red, 2, 0, Light_Red , 1, 100, Buf4[0], -400,900,1); PlotLine(hPlot, 0, Light_Blue, 2, 0, Light_Red , 1, 100, Buf5[0], -400,900,1); PlotClose(hPlot); END |
Nume | Tip | Domeniu | Um | Array Size | Comentariu |
init_00 | DIGITAL | - | - | - | Variabila pentu initializare |
mod_f | DIGITAL | - | - | - | RA Mod de functionare(Automat/Manual) |
FUNCTION ini_00() IF init_00=0 THEN kp=0.5; ki=2.5; kd=0.2; r=100; y=50; Te=0.250; mod_f=1; init_00=1; END END FUNCTION reglare_00() IF mod_f=1 THEN IF v>0 THEN y=r-v; IF y<0 THEN y=0; END y_v=y; v=0; END e=r-y; inte = inte + e * Te; deriv = (e - e_v) / Te; u = kp * e + ki * inte + kd * deriv; y = (u * Te + 5 * y_v) / (5 + Te); e_v = e; y_v = y; END END |
Nume | Tip | Domeniu | Um | Array Size | Comentariu |
init_01 | DIGITAL | - | - | - | Variabila pentu initializare |
LOOP_1_OPM | DIGITAL | - | - | - | RA Output mode |
LOOP_1_PV | REAL | 250 | - | - | RA- y - Process variable |
LOOP_1_OP | REAL | 250 | - | - | RA - u - comanda Output |
LOOP_1_SP | REAL | 250 | - | - | RA - r - Set Point |
FUNCTION ini_01() IF init_01=0 THEN kp=0.5; ki=2.5; kd=0.2; LOOP_1_SP=75; LOOP_1_PV=50; Te=0.250; LOOP_1_OPM=1 init_01=1; END END FUNCTION reglare_01() IF LOOP_1_OPM=1 THEN IF v>0 THEN LOOP_1_PV=r-v; IF LOOP_1_PV<0 THEN LOOP_1_PV=0; END y_v=LOOP_1_PV; v=0; END // e=r-y e = LOOP_1_SP - LOOP_1_PV inte = inte + e * Te; deriv = (e - e_v) / Te; //u = kp * e + ki * inte + kd * deriv; LOOP_1_OP = kp * e + ki * inte + kd * deriv; // y = (u*Te + 5 * y_v) / (5 + Te); LOOP_1_PV = (LOOP_1_OP*Te + 5 * y_v) / (5 + Te); e_v=e; // y_v = y; y_v=LOOP_1_PV END END |
Nume | Tip | Domeniu | Um | Array Size | Comentariu |
init_03 | DIGITAL | - | - | - | Variabila pentu initializare |
mod_f | DIGITAL | - | - | - | RA Mod de functionare(Automat/Manual) |
y | REAL | 250 | - | - | RA- y - Iesirea, Process variable |
y_v | REAL | 250 | - | - | RA- y_v - Iesirea_v, Process variable_v |
u | REAL | 250 | - | - | RA - u - Comanda Output |
r | REAL | 250 | - | - | RA - r - Referinta, Set Point |
e | REAL | -250 +250 | - | - | RA - e - Eroarea Error |
e_v | REAL | -250 +250 | - | - | RA - e_v - Eroarea_v Error_v |
v | REAL | 250 | - | - | RA - v - Perturbatia |
kp | REAL | 10 | - | - | RA - kp - coeficient roportional |
ki | REAL | 5 | - | - | RA - ki - coeficient integrativ |
Te | REAL | 5 | - | - | RA - Te - Timp de esantionare |
inte | REAL | 5 | - | - | RA - inte - Element integrativ |
FUNCTION ini_03() IF init_03=0 THEN kp=0.5; ki=2.5; r=125; y=50; Te=0.250; mod_f=1; init_03=1; END END FUNCTION reglare_03() IF mod_f=1 THEN IF v>0 THEN y=r-v; IF y<0 THEN y=0; END y_v=y; v=0; END e=r-y; u = u_v + e*(kp+ (ki*(Te/2))) + e_v*((ki*(Te / 2)) - kp); y = (u*Te + 5 * y_v) / (5 + Te); e_v = e; y_v = y; u_v = u; END END |
Nume | Tip | Domeniu | Um | Array Size | Comentariu |
init_02 | DIGITAL | - | - | - | Variabila pentu initializare |
LOOP_1_OPM | DIGITAL | - | - | - | RA Output mode |
LOOP_1_PV | REAL | 250 | - | - | RA- y - Ierirea, Process variable | y_v | REAL | 250 | - | - | RA- y_v - Process variable_v |
LOOP_1_OP | REAL | 250 | - | - | RA - u - Comanda, Output |
u_v | REAL | 250 | - | - | RA - u_v - Comanda_v, Output_v |
LOOP_1_SP | REAL | 250 | - | - | RA - r - Refereinta, Set Point |
e | REAL | -250 +250 | - | - | RA - e -Eroarea, Error |
e_v | REAL | -250 +250 | - | - | RA - e_v - Error_v |
v | REAL | 250 | - | - | RA - v - Perturbatia |
kp | REAL | 10 | - | - | RA - kp - Coeficient Proportional |
ki | REAL | 5 | - | - | RA - ki - Coeficient Integrativ |
Te | REAL | 5 | - | - | RA - Te - Timp de esantionare |
FUNCTION ini_02() IF init_02=0 THEN kp=0.5; ki=2.5; LOOP_1_SP=175; LOOP_1_PV=50; Te=0.250; LOOP_1_OPM=1 init_02=1; END END FUNCTION reglare_02() IF LOOP_1_OPM=1 THEN IF v>0 THEN LOOP_1_PV=r-v; IF LOOP_1_PV<0 THEN LOOP_1_PV=0; END y_v=LOOP_1_PV; v=0; END // e=r-y e = LOOP_1_SP - LOOP_1_PV // u = u_v + e*(kp+ (ki*(Te/2))) + e_v*((ki*(Te / 2)) - kp); LOOP_1_OP=u_v+e*(kp+(ki*(Te/2)))+e_v*((ki*(Te/2))-kp); // y = (u*Te + 5 * y_v) / (5 + Te); LOOP_1_PV=(LOOP_1_OP*Te+5*y_v)/(5+Te); e_v = e; //e_v=LOOP_1_E; // y_v = y; y_v=LOOP_1_PV // u_v = u; u_v=LOOP_1_OP; END END |
Nume | Tip | Domeniu | Um | Array Size | Comentariu |
init_04 | DIGITAL | - | - | - | Variabila pentu initializare |
mod_f | DIGITAL | - | - | - | RA Mod de functionare(Automat/Manual) |
y | REAL | 250 | - | - | RA- y - Iesirea, Process variable |
y_v | REAL | 250 | - | - | RA- y_v - Iesirea_v, Process variable_v |
u | REAL | 250 | - | - | RA - u - Comanda Output |
r | REAL | 250 | - | - | RA - r - Referinta, Set Point |
e | REAL | -250 +250 | - | - | RA - e - Eroarea Error |
e_v | REAL | -250 +250 | - | - | RA - e_v - Eroarea_v Error_v |
v | REAL | 250 | - | - | RA - v - Perturbatia |
kp | REAL | 10 | - | - | RA - kp - coeficient roportional |
ki | REAL | 5 | - | - | RA - ki - coeficient integrativ |
Te | REAL | 5 | - | - | RA - Te - Timp de esantionare |
inte | REAL | 5 | - | - | RA - inte - Element integrativ |
depl_d | INT | 10 | - | - | Deplasare sageti alimentare |
depl_c | INT | 10 | - | - | Deplasare sageti consum |
pmp | DIGITAL | - | - | - | Comanda pompa |
FUNCTION ini_04() IF init_04=0 THEN kp=1.25; ki=2.5; r=75; Te=0.250; mod_f=1; init_04=1; END END FUNCTION reglare_04() IF mod_f=1 THEN IF v>0 THEN y=r-v; IF y<0 THEN y=0; END y_v=y; v=0; END e=r-y u = u_v + e*(kp+ (ki*(Te/2))) + e_v*((ki*(Te / 2)) - kp); y = (u*Te + 5 * y_v) / (5 + Te); e_v = e; y_v = y; u_v = u; END IF u>0 THEN pmp=1; ELSE pmp=0; END IF pmp=1 THEN depl_d=depl_d+1 END IF depl_d>10 THEN depl_d=0 END depl_c=depl_c+1 IF depl_c>10 THEN depl_c=0 END END |