采用SCL编写的增量式PID程序(仅作为参考)
FUNCTION_BLOCK FB200 //FB200位模块的名字
VAR_TEMP //临时变量定义区
// Temporary Variables
xp:REAL;
xi:REAL;
xd:REAL;
outtemp1:REAL;
END_VAR
VAR
// Static Variables //静态变量定义区
error:REAL; //当前的误差值
error_1:REAL:=0; //上一时刻的误差值
error_2:REAL:=0; //上上时刻的误差值
outtemp2:REAL:=0;//用于增量的累加
END_VAR
VAR_INPUT //模块的输入量
water_level_actual:REAL;
END_VAR
VAR_OUTPUT //模块的输出量
output:REAL;
END_VAR
error:=setval-water_level_actual; //设定值减去实际值为误差值
xp:=error-error_1;
xi:=error;
xd:=error-2*error_1+error_2;
outtemp1:=kp*xp+ki*xi+kd*xd;
outtemp2:=outtemp2+outtemp1; //增量的累加(阀开度)
IF outtemp2<0 THEN
outtemp2:=0;
END_IF;
IF outtemp2>100 THEN
outtemp2:=100;
END_IF;
output:=outtemp2;
error_1:=error;
error_2:=error_1;
END_FUNCTION_BLOCK
增量式PID算法 来自淘豆网www.taodocs.com转载请标明出处.