PID算法的采样时间受控系统需要一定的时间来对输出值的变化做出响应。建议不要在每次循环中都计算输出值。PID算法的采样时间是两次计算输出值之间的时间。该时间在调节期间进行计算,并舍入为循环时间的倍数。PID_Compact的所有其它功能会在每次调用时执行。PID 算法PID_Compact 是一种具有抗积分饱和功能并且能够对比例作用和微分作用进行加权的PIDT1 控制器。采用以下方程来计算输出值。出现错误时的响应如果出现错误,会在参数 Error 中输出,且 PID_Compact会切换到“未激活”模式。使用Reset参数复位错误。控制逻辑通常,可通过增大输出值来增大过程值。这种做法称为常规控制逻辑。对于制冷和放电控制系统,可能需要反转控制逻辑。PID_Compact不使用负比例增益。如果InvertControl =TRUE,则不断增大的控制偏差将导致输出值减小。在预调节和jingque调节期间还会考虑控制逻辑。PID_Compact V1的输入参数表格 10-4 参数 数据类型 默认值 说明Setpoint REAL 0.0 PID控制器在自动模式下的设定值Input REAL 0.0 用户程序的变量用作过程值的源。如果正在使用参数Input,则必须设置sPid_Cmpt.b_Input_PER_On = FALSE。Input_PER WORD W#16#0模拟量输入用作过程值的源如果正在使用参数 Input_PER,则必须设置sPid_Cmpt.b_Input_PER_On =TRUE。ManualEnable BOOL FALSE • 出现 FALSE -> TRUE 沿时会选择“手动模式”,而State = 4,sRet.i_Mode 保持不变。• 出现 TRUE -> FALSE沿时会选择Zui近激活的操作模式,State=sRet.i_Mode。sRet.i_Mode 的变化在 ManualEnable =TRUE 期间不会生效。仅在ManualEnable 处出现 TRUE -> FALSE 沿时 sRet.i_Mode的变化才会生效。PID_Compact V1.2 和 PID_Compact V1.0如果 CPU 启动时 ManualEnable= TRUE,PID_Compact 将在手动模式下启动。并非一定需要 ManualEnable 出现上升沿 (FALSE ->TRUE) 时,才会执行上述操作。PID_Compact V1.1CPU 启动时,PID_Compact 仅在ManualEnable 出现上升沿(FALSE->TRUE) 时才切换到手动模式。没有上升沿时,PID_Compact在ManualEnable 为 FALSE 的上一个工作模式下启动。ManualValue REAL 0.0手动值该值用作手动模式下的输出值。Reset BOOL FALSE Reset 参数 (页 258)可重启控制器。
PID_Compact V1 的输出参数表格 10-5 Parameter 数据类型 默认值 说明ScaledInput REAL 0.0标定的过程值的输出可使用输出“Output”“Output_PER”和“Output_PWM”。Output REAL 0.0REAL 形式的输出值Output_PER WORD W#16#0 模拟量输出值Output_PWM BOOL FALSE脉宽调制输出值输出值由Zui短开关时间形成。SetpointLimit_H BOOL FALSE 如果 SetpointLimit_H =TRUE,则说明达到了设定值的juedui上限。 在CPU 中,该设定值被限制为所组态的设定值的juedui上限。设定值的上限默认设置为所组态的过程值的juedui上限。如果设置的 sPid_Cmpt.r_Sp_Hlm值位于过程值的限值范围内,则该值将用作设定值的上限。SetpointLimit_L BOOL FALSE 如果SetpointLimit_L = TRUE,则说明已达到设定值的juedui下限。 在CPU中,该设定值被限制为所组态的设定值的juedui下限。 设定值的下限将默认设置为所组态的过程值的juedui下限。如果设置的sPid_Cmpt.r_Sp_Llm 值位于过程值的限值范围内,则该值将用作设定值的下限。InputWarning_H BOOLFALSE 如果 InputWarning_H = TRUE,则说明过程值已达到或超出警告上限。InputWarning_L BOOLFALSE 如果InputWarning_L = TRUE,则说明过程值已经达到或低于警告下限。State INT 0 State参数 (页 255)显示 PID 控制器的当前操作模式。 要更改操作模式,请使用变量 sRet.i_Mode。• State =0:未激活• State = 1:预调节• State = 2:jingque调节• State = 3:自动模式• State =4:手动模式Error DWORD 参数 (页 257)指示错误消息。Error = 0000:没有待决的错误。
PID_Compact V1的静态变量说明不得更改未列出的变量。这些变量仅供内部使用。请仅在“未激活”模式下更改使用 (1) 标识的变量,以防 PID控制器出现故障。通过将“sRet.i_Mode”变量设置为“0”强制切换为“未激活”模式。表格 10-6 变量 数据类型默认值 说明sb_GetCycleTime BOOL TRUE 如果 sb_GetCycleTime =TRUE,则开始自动确定周期时间。完成测量后,CycleTime.StartEstimation=FALSE。sb_EnCyclEstimation BOOL TRUE 如果 sb_EnCyclEstimation =TRUE,则计算PID_Compact 采样时间。sb_EnCyclMonitoring BOOL TRUE 如果sb_EnCyclMonitoring = FALSE,则不会监视PID_Compact采样时间。如果不能在采样时间内执行PID_Compact,则不会输出 0800错误,PID_Compact也不会切换到“未激活”模式。sb_RunModeByStartup BOOL TRUE 在 CPU重启后激活模式如果 sb_RunModeByStartup = FALSE,则控制器在 CPU启动后仍保持未激活状态。如果sb_RunModeByStartup = TRUE,则控制器在 CPU重启后返回到上一个活动工作模式。si_Unit INT 0过程值和设定值的测量单位,例如 ºC 或 ºF。si_Type INT 0 过程值和设定值的物理量,如温度。sd_WarningDWORD DW#16#0 变量 sd_warning (页 259)显示自复位或上一次更改操作模式以来所生成的警告。sBackUp.r_Gain REAL 1.0保存的比例增益sPid_Cmpt.b_LoadBackUp = TRUE 时,可以从sBackUp结构中重新加载值。sBackUp.r_Ti REAL 20.0 保存的积分作时间 [s]sBackUp.r_TdREAL 0.0 保存的微分作时间 [s]sBackUp.r_A REAL 0.0 保存的微分延时系数sBackUp.r_B REAL0.0 保存的比例作用权重因子sBackUp.r_C REAL 0.0 保存的微分作用权重因子sBackUp.r_Cycle REAL1.0 保存的 PID 算法的采样时间sPid_Calc.r_Cycle(1) REAL 0.1 PID_Compact指令采样时间r_Cycle 会自动确定,通常等于调用 OB 的周期时间。sPid_Calc.b_RunIn BOOL FALSE •b_RunIn =FALSE在未激活模式或手动模式下启动jingque调节时,将启动预调节。如果不满足预调节的要求,则PID_Compact的响应将类似于 b_RunIn = TRUE 时的响应。如果jingque调节在自动模式下启动,系统将使用现有的 PID参数来控制设定值。之后才会启动jingque调节。如果无法实现预调节,PID_Compact 将切换到“未激活”模式。变量 数据类型默认值 说明• b_RunIn = TRUE将跳过预调节。PID_3Compact将尝试利用Zui小或Zui大输出值来达到设定值。这可能会增加超调量。随后将自动启动jingque调节。jingque调节后,b_RunIn将被设置为 FALSE。sPid_Calc.b_CalcParamSUT BOOL FALSE 如果 b_CalcParamSUT =TRUE,将重新计算用于预调节的参数。这样无需重复进行控制器调节,就可以更改参数计算方法。计算后,b_CalcParamSUT将设置为 FALSE。sPid_Calc.b_CalcParamTIR BOOL FALSE 如果 b_CalcParamTIR =TRUE,将重新计算用于jingque调节的参数。这样无需重复进行控制器调节,就可以更改参数计算方法。计算后,b_CalcParamTIR将被设置为 FALSE。sPid_Calc.i_CtrlTypeSUT INT 0 预调节期间用于计算参数的方法:•i_CtrlTypeSUT = 0:根据 Chien、Hrones 和 Reswick计算 PID• i_CtrlTypeSUT =1:根据 Chien、Hrones 和 Reswick计算 PIsPid_Calc.i_CtrlTypeTIR INT 0jingque调节期间用于计算参数的方法:• i_CtrlTypeTIR = 0:PID 自动• i_CtrlTypeTIR =1:PID 快速(与 i_CtrlTypeTIR = 2相比,控制响应速度更快,输出值的幅度更大)• i_CtrlTypeTIR =2:PID 慢速(与 i_CtrlTypiTIR = 1 相比,控制响应速度较慢,输出值的幅度较小)• i_CtrlTypeTIR =3:Ziegler-Nichols PID• i_CtrlTypeTIR = 4:Ziegler-Nichols PI•i_CtrlTypeTIR = 5:Ziegler-Nichols P要通过 b_CalcParamTIR 和i_CtrlTypeTIR = 0、1 或 2 重复计算 PID 参数,也必须通过 i_CtrlTypeTIR = 0、1 或2执行了先前的jingque调节。否则,将使用 i_CtrlTypeTIR = 3。始终可以通过 b_CalcParamTIR 和i_CtrlTypeTIR = 3、4或 5 重新计算 PID 参数。sPid_Calc.r_Progress REAL 0.0百分数形式的调节进度 (0.0 - 100.0)sPid_Cmpt.r_Sp_Hlm(1) REAL+3.402822e+38设定值的上限如果组态的 sPid_Cmpt.r_Sp_Hlm超出了过程值的限值范围,则所组态的过程值的juedui上限将用作设定值的上限。如果组态的 sPid_Cmpt.r_Sp_Hlm值位于过程值的限值范围内,则该值将用作设定值的上限。sPid_Cmpt.r_Sp_Llm(1) REAL-3.402822e+38设定值的下限如果设置的 sPid_Cmpt.r_Sp_Llm超出了过程值的限值范围,则所组态的过程值的juedui下限将用作设定值的下限。如果设置的 sPid_Cmpt.r_Sp_Llm值位于过程值的限值范围内,则该值将用作设定值的下限。sPid_Cmpt.r_Pv_Norm_IN_1(1) REAL 0.0 标定的Input_PER 下限根据以下两个值对将 Input_PER 转换为百分数:sPid_Cmpt 结构。