|
|
|
|




|
| ||||||||||||
|
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 |