PID_Temp 组态步骤

可以使用工艺对象对 PID_Temp 进行组态和调试,下面通过一个例子说明组态和调试过程。

这是一个针对某种物质的温度调节系统,通过一个加热阀和一个冷却阀来调节温度,加热阀采用模拟量控制的比例阀,冷却阀采用数字量输出控制的开关阀,如图 1 所示。

注意:

S7-1200 PID 功能不支持仿真功能。只能通过真实 CPU 组态下载程序。

图 1. PID_Temp 温度调节系统

使用 PID 功能,需要在循环中断 OB 中调用 PID_Temp 指令,所以要先添加循环中断 OB。在循环中断 OB 的属性中,可以修改其循环时间,如图 2 所示。

图 2. 添加循环中断后在属性界面修改其循环时间

注意:为保证以恒定的时间间隔执行 PID 指令,必须在循环中断 OB 中调用。

在“指令 > 工艺 > PID 控制 > Compact PID”下,将 PID_Temp 指令添加至循环中断 OB,如图 3 所示。

图 3. 在循环中断 OB 中添加 PID_Temp 指令

当添加完 PID_Temp 指令后,在项目树 > 工艺对象文件夹中,会自动关联出对应背景 DB 的工艺对象,如图 4 所示的 PID_Temp_1[DB1],包含组态和调试功能。

图 4. 工艺对象中关联生成 PID_Temp

使用 PID 控制器前,需要对其进行组态设置。双击工艺对象下的组态进入组态界面,分为基本设置、过程值设置、输出设置以及高级设置等部分,如图 5 所示。

图 5. PID_Temp 组态界面

基本设置

1、基本设置--控制器类型

设置控制器类型,如图 6 所示。

a. 为设定值、过程值选择物理量和测量单位。设定值和过程值将以该测量单位显示。

b. 要在 CPU 重启后切换到“模式”(Mode) 参数中保存的工作模式,请勾选“在 CPU 重启后激活模式”。

图 6. 设置控制器类型

本例子中物理量选择温度,单位选择 ℃。

2、基本设置--设置 Input/Output 参数

选择 PID 过程值和输出值的方式,如图 7 所示。

如果过程值与模拟量输入值成正比,则可以选择 Input_PER, PID_Temp 会将该模拟量输入值标定为过程值的物理量。

如果程序里已经把模拟量输入值标定到过程值,或者由于过程值与模拟量输入值并不成正比,需要编写处理程序进行转换,则选择 Input。

本例中采用直接使用模拟量输入,选择 Input_PER。

图 7. 选择 Input/Output

PID_Temp 提供以下形式的输出值。 根据执行器的类型选择要使用的输出值,参考图 7 所示蓝框与紫框。

加热输出值(REAL形式):如果需要通过用户程序来处理加热的输出值,例如,由于执行器响应为非线性等原因。

模拟量加热输出值: 通过模拟量输出触发加热执行器,并使用连续信号(如 0...10V、4...20 mA)控制加热执行器。

脉宽调制加热输出值: 通过数字量输出控制加热执行器。 脉宽调制可生成不同的 ON 和 OFF 时间。

制冷输出值(REAL形式):如果需要通过用户程序来处理制冷的输出值,例如,由于执行器响应为非线性等原因。

模拟量制冷输出值: 通过模拟量输出触发制冷执行器,并使用连续信号(如 0...10V、4...20 mA)控制制冷执行器。

脉宽调制制冷输出值: 通过数字量输出控制制冷执行器。 脉宽调制可生成不同的 ON 和 OFF 时间。

本例加热选择 OutputHeat_PER,制冷选择 OutputCool_PWM。

如果需要制冷输出,则选择“激活制冷”,参考图 7 所示绿框。

本例中需要用到制冷输出,所以选中"激活制冷"。

2、基本设置--级联

级联设置用于做 PID 串级控制,如图 8 所示,具体设置方法参见链接

本例中不做级联设置。

图 8. 设置级联

过程值设置

1、过程值设置--过程值限值

为过程值指定绝对上限和绝对下限,作为受控系统的限值,如图 9 所示。必须满足过程值下限<过程值上限。如果过程值超出限值,就会出现错误 (ErrorBits = 00000001H)。

图 9. 设置过程值限值

本例中假设过程值的绝对上限是120°,绝对下限是0°。

2、过程值设置--过程值标定

设置过程值标定,如图 10 所示。

a. 当且仅当在 Input/Output 中输入选择为 “Input_PER” 时,才可组态过程值标定。

b. 如果过程值与模拟量输入值成正比,则将使用上下限值对来标定 Input_PER。

c. 必须满足范围的下限<上限。

图 10. 进行过程值标定

假设模拟量采用 0-10V 的输入信号,对应 0-200℃ 的量程,那么 Input_PER 的下限和上限分别是 0 和 27648,标定的过程值下限和上限分别是 0℃ 和 200℃。

输出设置

1、输出设置--输出的基本设置

1)加热/制冷

在基本设置中激活制冷时,此处参数才可进行设置。该参数用于设置制冷 PID 参数的计算方式,有两种方式,如图 11 所示。

图 11. 制冷参数方式设置

本例中选择切换加热/制冷的 PID 参数方式。

2)对错误的响应

可以预先设置错误响应时 PID 的输出状态,以便在发生错误时,控制器在大多数情况下均可保持激活状态,如图 12 所示。

图 12. 对错误的响应

对错误的响应中,PidOutputSum 设置可以有三个选项:

选择不同的错误响应方式,出现不同的错误时,PID指令的行为不尽相同,如表 1 所示。

ErrorBits (DW#16#...) 非活动 错误待定时的当前值 错误未决时的替代输出值
00000001

对于所有错误,PID 均输出 0.0,Error = 1,会切换到 "未激活"模式(State = 0)。

当错误离开后,可通过 Reset 的下降沿或者 ModeActive 的上升沿来切换工作模式。

  1. 如果在自动模式下出现错误,则 PID_Temp 保持自动模式。
  2. 如果在手动模式下出现错误,则 PID_Temp 保持手动模式。
  3. 如果在预调节或精确调节模式出现错误,则 PID_Temp 切换到 Mode 参数中保存的工作模式。
00000800
00040000
08000000
00000002
  1. 如果在自动模式下出现错误,则 PID_Temp切换到"带错误监视的替代输出值"模式(State = 5),Error = 1,输出错误发生前的最后一个有效值。错误离开后 Error = 0,错误代码保留,PID_Temp 切换回自动模式。
  2. 如果在手动模式下出现错误,则 PID_Temp 保持手动模式。
  3. 如果在预调节或精确调节模式出现错误,则 PID_Temp 切换到 Mode 参数中保存的工作模式。
  1. 如果在自动模式下出现错误,则 PID_Temp切换到"带错误监视的替代输出值"模式(State = 5),Error = 1,输出组态的替换输出值。错误离开后 Error = 0,错误代码保留,PID_Temp 切换回自动模式。
  2. 如果在手动模式下出现错误,则 PID_Temp 保持手动模式。
  3. 如果在预调节或精确调节模式出现错误,则 PID_Temp 切换到 Mode 参数中保存的工作模式。
00000200
00000400
00001000
00000004
在调节过程中出现错误时,PID_Temp 取消调节模式,直接切换到 Mode 参数中保存的工作模式运行。
00000008
00000010
00000040
00000100
00200000
00400000
00800000
01000000
02000000
04000000
00000020
精确调节期间无法再启动预调节,则 PID_Temp 的 Error = 1、State 保持不变,即保持在精确调节模式。
00010000
如果是在手动模式下发生错误,则输出组态的替换输出值。Error = 1、State 保持不变。在 ManualValue 中指定一个有效值后,PID_Temp 会立即将其用作 PID 输出值。
00020000
如果是在手动模式下同时发生手动值无效(10000H)、替换输出值无效(20000H),则输出输出值下限。
自动模式下发生错误需要输出替代值时,如果替代输出值无效则 PID_Temp 切换到"带错误监视的替代输出值"模式(State = 5),并输出输出值的下限。错误离开后 PID_Temp 切换回自动模式。

表 1. 错误响应方式

如果控制器频繁报错,建议检查 Errorbits 参数并消除错误。

2、输出值限值和标定

这里是用于输出值的标定和上下限值设置,如图 13 所示。

PID_Temp 根据 PID 算法对偏差进行计算,得出 PID 输出值 (PidOutputSum),然后将 PID 输出值 (PidOutputSum)标定到加热和制冷的各个形式的输出值(OutputHeat, OutputHeat_PER, OutputHeat_PWM, OutputCool, OutputCool_PER, OutputCool_PWM)。

图 13. 设置输出值限值和标定

如果禁用制冷,PID 输出值将限制在 PID 加热输出值的上下限之间,如图 14 所示。

图 14. 禁用制冷方式的输出值限制

如果激活制冷,PID 输出值将限制在 PID 制冷输出值的下限和 PID 加热输出值的上限之间,如图 15 所示。

图 15. 激活制冷方式的输出值限制

本例中假设通过 0-10V 的电压信号控制加热阀,那么标定如图 16 所示。其中,图 16 左边部分在输出限值和标定 > OutputperHeat_PER/OutputperCool_PER 中设置;图 16 右边部分在输出限值和标定 > OutputperHeat_PWM/OutputperCool_PWM 中设置。

图 16. 本例输出值标定

高级设置

1、高级设置--过程值监视

在“过程值监视”(Process value monitoring) 组态窗口中,组态过程值的警告上限和下限,如图 17 所示。

a. 过程值的警告限值范围需要在过程值限值范围之内。

b. 如果过程值高于警告上限,则输出参数 InputWarning_H = TRUE。

c. 如果过程值低于警告下限,则输出参数 InputWarning_L = TRUE。

图 17. 过程监控值设置

如果过程值超过过程值限值,PID 输出报错。

下面举例说明 PID_Temp 对于分别超出过程值限制范围和警告范围的响应方式。

假设限制范围如下:

PID_Temp 将按表 2 方式响应:

过程值 InputWarning_H InputWarning_L Error ErrorBits
> 98 °C TRUE FALSE TRUE 00000001H
≤ 98° C 且 > 90° C TRUE FALSE FALSE 00000000H
≤ 90° C 且 ≥ 10° C FALSE FALSE FALSE 00000000H
< 10° C 且 ≥ 0° C FALSE TRUE FALSE 00000000H
< 0° C FALSE TRUE TRUE 00000001H

表 2. 报警

2、高级设置-- PWM 限制

PID 输出值 PidOutputSum 在标定后通过脉宽调制转换成脉冲串在 OutputHeat_PWM 或 OutputCool_PWM 输出参数中输出。

"PID 算法的采样时间"是两次计算 PID 输出值之间的时间。该采样时间用作脉宽调制的周期。

PID_Temp 采样时间是调用 PID_Temp 指令的循环中断 OB 的循环时间。

脉冲持续时间与 PID 输出值成比例并且是 PID_Temp 采样时间的整数倍。

PWM 输出信号的精度由脉宽调制的周期与 PID_Temp 采样时间的比率决定。

PWM 输出原理如图 18 所示:

① PID_Temp 采样时间 = 100 ms

② 加热的 PID 算法采样时间 = 1000 ms

③ 脉冲持续时间 = 300 ms (前 3 个 PID_Temp 采样时间 OutputHeat_PWM 输出 “TRUE”)

④ 中断时间 = 700 ms (后 7 个 PID_Temp 采样时间 OutputHeat_PWM 输出 “FALSE”)

图 18. PID_Temp 的 PWM 输出原理

为最大程度地减小工作频率并节省执行器,可以分别为加热和制冷设置最短开/关时间,如图 19 所示。

图 19. 设置 PWM 限制

如果已在基本设置中选择 OutputHeat/OutputCool 或 OutputHeat_PER/OutputCool_PER 作为输出,最短开启时间和最短关闭时间将不起作用,并且也无法更改这两个时间。

脉冲持续或中断时间不会小于最短开关时间。

在当前 PID 算法采样周期中,因小于最短接通时间未能输出脉冲的,会在下一个 PID 算法采样周期中累加和补偿由此引起的误差。

例如:PID_Temp 采样时间 = 100ms;PID 算法采样时间 = 1000ms;最短开启时间 = 200 ms(即已组态的最小接通脉冲为 PID_Temp 的 20%),若此时 PID 输出恒定为 15%。

则在第一个周期内不输出脉冲。在第二个周期内,将第一个周期内未输出的脉冲累加到第二个周期的脉冲,依次输出。如图 20 所示。

① PID_Temp 采样时间

② 加热的 PID 算法采样时间

⑤ 最短接通时间

图 20. PWM 最小开/关时间影响示例图

如果使用 OutputHeat_PWM 或 OutputCool_PWM 时, PID 算法采样时间作为脉宽调制的周期时间过大,则可在 Config.Output.Heat.PwmPeriode 或 Config.Output.Cool.PwmPeriode 参数中定义存在偏差的稍短周期时间来改善过程值的平滑度,如图 21 所示。

如果 PID 算法的采样时间不是 PwmPeriode 的整数倍,则在 PID 算法采样时间内 PWM 的最后一个周期都将相应延长。

① PID_Temp 采样时间 = 100.0 ms(调用循环中断 OB 的周期时间,CycleTime.Value 变量)

② PID 算法采样时间 = 2000.0 ms(Retain.CtrlParams.Heat.Cycle 变量)

③ 加热的 PWM 时间 = 600.0 ms(Config.Output.Heat.PwmPeriode 变量)

图 21. PwmPeriode 参数原理

3、高级设置--手动输入 PID 参数

在 PID Temp 组态界面可以手动修改 PID 参数,如图 22 所示。通过此处修改的参数对应工艺对象背景数据块 > Static > Retain > CtrlParams 中的 PID 参数。

通过组态界面离线方式修改的是参数的起始值,需要重新下载并重启 PLC 才生效。建议通过在线方式进行操作,详见常见问题 “如何修改 PID 参数的实际值?”

图 22. PID 组态高级设置_手动输入 PID 参数

PID 基本参数说明详见前面指令介绍部分,温度控制相关参数死区宽度和控制区宽度说明如下。

1)死区宽度

如果过程值受到噪声影响,则噪声也会对输出值产生影响。为了减少输出值不必要的波动,可以设置死区。

如果已在基本设置中禁用了制冷,或使用了制冷系数,则死区对称地位于"设定值 - 死区宽度(加热)"和"设定值 + 死区宽度(加热)"之间,如图 23 所示。

当 -死区宽度(加热) <= Setpoint-Input <= 死区宽度(加热),则经过死区计算后的偏差值 = 0。

图 23. 禁用制冷或使用制冷系数方式的死区范围

如果已在基本设置中激活了制冷,并且在输出设置中将 PID 参数切换选作加热/制冷方法,则死区位于"设定值 - 死区宽度(加热)"和"设定值 + 死区宽度(制冷)"之间,如图 24 所示。

当 -死区宽度(制冷) <= Setpoint-Input <= 死区宽度(加热),则经过死区计算后的偏差值 = 0。

图 24. 激活制冷并采用切换加热/制冷的 PID 参数方式的死区范围

注意:

2)控制区宽度

温度控制系统是一个有明显滞后特性的对象,这给实际的调节过程带来了很多的问题,最显著的问题就是在过程值偏离设定值较大时,调节过程过于缓慢,而在接近设定值时又容易出现较大的超调。针对这种情况,可以采用控制区功能加以改善。

如果已在基本设置中禁用了制冷,或使用了制冷系数,则控制区对称地位于"设定值 - 控制区宽度(加热)"和"设定值 + 控制区宽度(加热)"之间,如图 25 所示。

当禁用制冷时:

当激活制冷并使用制冷系数时:

图 25. 禁用制冷或使用制冷系数方式的控制区

如果已在基本设置中激活了制冷,并且在输出设置中选择切换加热/制冷的 PID 参数,则控制区位于"设定值 - 控制区宽度(加热)"和"设定值 + 控制区宽度(制冷)"之间,如图 26 所示。

图 26. 激活制冷并采用切换加热/制冷的 PID 参数方式的控制区

注意:

4、高级设置--调节规则

调节规则用于选择自整定 PID 参数的结构,可分别指定适用于加热和制冷的调节规则,如图 27 所示。

图 27. 调节规则