以可选PWM输出进行PID处理
PID执行PID处理,以保持过程值PV尽量接近设置点值SP。与F355_PID_DUT相比,此指令启用PWM输出(开-关输出)。自动调谐也可用于自动计算PID控制数据Kp、Ti和Td。
输入
开始条件
控制数据
PID控制参数
操控值MV,附加控制模式区域,自动调谐相关区域和工作区
当您首次执行指令时,即,当在Run指定的执行条件变为TRUE时,默认值被写入DUT的DUT成员1至9。
过程值 (-30000–30000)
输出
脉宽调制输出(可选,代替操控值输出)
建议使用相应的FP7指令,来代替使用此F型指令:FP_PID
描述PID处理时使用的缩写
缩写 |
代表含义 |
别称 |
---|---|---|
PV |
过程值 | 实际值,测量值 |
SP |
设置点值 | 目标值,设置值 |
MV |
操控值 | 输出值,操控变量 |
Ts |
采样时间 | 循环时间 |
Ti |
积分时间 | - |
Td |
导数时间 | - |
Kp |
比例增益 | - |
AT |
自动调谐 | - |
在第二次执行FP_PID之前,您需要将DUT的DUT成员1到9更改为所需值。
当执行Run中的输入时,将初始化参数ParametersNonHold中的数据。如果想要DUT中的值使用非默认值,则使用MOVE指令将值写入DUT,例如,必须因TRUE条件连续触发。
每次扫描必须执行一次且仅一次F356_PID_PWM。因此,请勿在中断程序或循环中执行F356_PID_PWM。
PID处理期间,请勿将执行条件变为FALSE。否则,PID处理将禁用。
如果想要并联PWM输出循环,例如启用多个对象的控制,请相应延迟启动时间,例如使用定时器指令。
PWM输出的周期(循环)是采样时间Ts(PWM输出的频率是1/Ts),并且占空是以0.01%为单位的操控值MV,例如,MV = 10000表示占空是100%。
如果F356_Parameters_NonHold_DUT的任意参数超出范围
如果F356_Parameters_NonHold_DUT的任意参数超出范围
如果通过UpperLimit或LowerLimit指定的区域超出范围
控制条件:F356_Parameters_Hold_DUT
设置点值SP和控制参数:F356_Parameters_Hold_DUT
关于自动调谐的附加摘要:
F356_Parameters_Hold_DUT中的构件AT_Progress和F356_Control_DUT中的构件b1_AT_Complete将在自动调谐信号的上升沿被清除。
当自动调谐已成功完成时,将设置F356_Control_DUT的元素b1_AT_Complete,并且自动调谐完成代码将存储到F356_Parameters_NonHold_DUT的元素AT_Progress中。
当自动调谐中止时,Kp、Ti和Td的参数不变。
在全局变量列表中,定义项目中所有POU都可以访问的变量。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
_VAR
VAR
bStartAutoTuning: BOOL:=FALSE;
bRunPidControl: BOOL:=FALSE;
ControlData: F356_Control_DUT;
ParametersHold: F356_Parameters_Hold_DUT;
ParametersNonHold: F356_Parameters_NonHold_DUT;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_CONTACT,,bStartAutoTuning,5,1,7,3,R);
B(B_COIL,,ControlData.b0_AT_Request,22,1,24,3,);
L(1,2,5,2);
L(7,2,22,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,F356_PID_PWM!,Instance,11,0,22,7,,?DRun?DControl?DParametersHold?DParametersNonHold?DProcessValue?APWM_Output);
B(B_VARIN,,ControlData,9,2,11,4,);
B(B_VARIN,,ParametersHold,9,3,11,5,);
B(B_VARIN,,ParametersNonHold,9,4,11,6,);
B(B_VARIN,,x_iTemperatureInput,9,5,11,7,);
B(B_VAROUT,,y_bPwmOutput,22,1,24,3,);
B(B_CONTACT,,bRunPidControl,4,1,6,3,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* Auto Tuning: *)
if DF(bStartAutoTuning) then
ControlData.b0_AT_Request:=TRUE;
end_if;
y_bPwmOutput:=F356_PID_PWM( Run := bRunPidControl,
Control := ControlData,
ParametersHold := ParametersHold,
ParametersNonHold := ParametersNonHold,
ProcessValue := x_iTemperatureInput);