以可选PWM输出进行PID处理
执行PID处理,以保持过程值PV尽量接近设置点值SP。与FP_PID_BASIC相比,此指令启用PWM输出(开-关输出)。自动调谐也可用于自动计算PID控制数据Kp、Ti和Td。
输入
开始条件
控制数据
过程值 (-30000–30000)
PID控制参数
输入/输出
PID参数的数据表
当您首次执行指令时,即,当在Run指定的执行条件变为TRUE时,默认值被写入DUT的DUT成员1至9。
在第二次执行FP_PID之前,您需要将DUT的DUT成员1到9更改为所需值。
输出
脉宽调制输出(可选,可用于代替操控值输出)
PWM输出的周期(循环)是采样时间Ts(PWM输出的频率是1/Ts),并且占空是以0.01%为单位的操控值MV,例如,MV = 10000表示占空是100%。
该指令必须执行两次。第一次执行重置 PID_WORK_AREA_DUT中的值,然后需要设置 PID_WORK_AREA_DUT中DUT成员1到9的正确值,以便第二次执行指令时使用正确的值。
如果使用索引寄存器指定的区域超出限制。
如果为PID_Parameters_DUT参数指定的值超出允许的范围
如果使用索引寄存器指定的区域超出限制。
如果为PID_Parameters_DUT参数指定的值超出允许的范围
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
Automatic: BOOL:=TRUE;
dutControl: PID_Control_DUT;
PV: INT:=0;
ParametersHold: PID_Parameters_DUT;
ParametersNonHold: PID_Work_Area_DUT;
bPWMOutput: BOOL:=FALSE;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_VARIN,,dutControl,15,2,17,4,);
B(B_VARIN,,ParametersHold,15,4,17,6,);
B(B_CONTACT,,Automatic,6,1,8,3,);
B(B_VARIN,,ParametersNonHold,15,5,17,7,);
B(B_F,FP_PID!,,17,0,30,7,,?DRun?Ds1_Control?Ds2_ProcessValue?Ds3_Parameters?Ds4_WorkArea?As4_WorkArea?APWM);
B(B_VARIN,,PV,15,3,17,5,);
B(B_VAROUT,,bPWMOutput,30,1,32,3,);
L(1,2,6,2);
L(8,2,17,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bPWMOutput := FP_PID(Run := Automatic,
s1_Control := dutControl,
s2_ProcessValue := PV,
s3_Parameters := ParametersHold,
s4_WorkArea := ParametersNonHold);