跳到主要内容

温度 PID 控制

1. 设备简介

温度 PID 控制是工业过程控制的入门课, 典型应用于工业烤箱、注塑机料筒、恒温槽、化工反应釜、热处理炉, 覆盖塑料、食品、电子、医药、建材等多个行业。本案例以单回路 0~400 °C 电加热炉为对象, 3 kW 电加热管 + SSR 固态继电器驱动, 稳态精度要求 ±0.5 °C, 升温超调 < 2 °C, PID 周期 100 ms (OB35 中断), 并集成主备 PT100 传感器冗余、超温硬联锁、冷却电磁阀自动介入、趋势曲线数据记录 (30 天) 等可靠性功能, 目标是替代传统温控仪方案并加入远程运维能力。

2. 项目模块组成

  • 机械部分: 加热炉 + 加热管 + 主/备 PT100 + 冷却电磁阀
  • 电气部分: 研华工控机 + 汇川 4AD + 2DA + 1616END + SSR 40A + 3 kW 加热管
  • 软件部分: OB35 PID 中断 + OB1 主循环 + FB_PIDLoop + FB_SensorRedundancy + DB_TempRecipe

3. 机械装配架构

炉体内腔对称安装主/备两只 PT100 热电阻, 主传感器靠近热源侧, 备传感器位于对侧。3 kW 陶瓷加热管底部布置, SSR 控制通断。当温度超过设定值 +5 °C 时打开冷却电磁阀引入外部冷风, 防止超调烧料。炉体外部包裹硅酸铝保温棉降低热损耗。

4. 程序架构

OB35 每 100 ms 执行 PID 计算与主备传感器差值判断, 输出 0100% 占空比后通过 2DA 转 010 V 驱动 SSR。OB1 处理启停、超温联锁、冷却阀开启逻辑, 以及趋势数据上报。PID 参数 (Kp/Ti/Td) 与设定值保存在 DB_TempRecipe, Retain 持久化。

5. 硬件选型 BOM

品牌型号数量单价 (¥)用途
研华MIO-5272 工控机13,000主控
汇川AM600-4AD17804 路 AI (PT100 兼容)
汇川AM600-2DA16802 路 AO (0~10V)
汇川AM600-1616END1850DI/DO
国产通用PT100 三线制2150主 + 备传感器
正泰SSR-40DA 固态继电器180加热开关
国产通用DN15 电磁阀1200冷却水
国产通用3 kW 陶瓷加热管1300加热源
明纬LRS-100-24112024V

6. IO 模块配置

6.1 选择 IO 模块

IDE 项目树 > IO 设备 > 右键 > 添加 IO 设备 依次扫描添加:

  • 从站 1: 汇川 AM600-4AD (4AI PT100)
  • 从站 2: 汇川 AM600-2DA (2AO 0~10V)
  • 从站 3: 汇川 AM600-1616END (DI/DO)

从站属性 > PDO 配置 中为 4AD 选择 PT100 三线制模式, 量程 0~400 °C。

6.2 IO 地址分配

地址模块信号用途
%IW100从站 1AI_TempMain主 PT100
%IW102从站 1AI_TempBackup备 PT100
%QW100从站 2AO_HeatPower加热功率 0~10V
%IX0.0从站 3SB_Start启动
%IX0.1从站 3SB_Stop停止 (常闭)
%IX0.2从站 3SB_EStop急停 (常闭)
%QX0.0从站 3DO_HeatEnableSSR 使能
%QX0.1从站 3DO_CoolValve冷却阀
%QX0.2从站 3HL_Heat加热指示灯
%QX0.3从站 3HL_Alarm报警灯

6.3 IO 用途分工

  • PLC 主控: PID 算法 + 主备切换 + 超温联锁, 全部在 PLC 内完成
  • 模拟量独立通道: 主/备 PT100 分占 2 个 AI 通道, 物理隔离避免单点故障
  • 安全链: 超温联锁独立于 PID 执行, 超过阈值直接切使能, 不经 PID
  • 上位联动: OPC UA 上传温度趋势 + Webhook 推送微信群

7. 核心数据结构

TYPE UDT_TempLoop:
STRUCT
rTempActual : REAL; // 当前温度
rTempBackup : REAL; // 备传感器温度
rTempSet : REAL := 150.0; // 设定值
rKp : REAL := 5.0;
rTi : REAL := 30.0;
rTd : REAL := 2.0;
rOutput : REAL; // PID 输出 0~100
rAlarmHigh : REAL := 200.0;
bAutoMode : BOOL := TRUE;
rManualOut : REAL;
bEnable : BOOL;
bSensorFault: BOOL;
END_STRUCT
END_TYPE

VAR_GLOBAL RETAIN
gRec_Temp : UDT_TempLoop;
END_VAR

8. 核心程序代码

FB_SensorRedundancy — 主备切换:

FUNCTION_BLOCK FB_SensorRedundancy
VAR_INPUT
wRawMain, wRawBackup : INT;
END_VAR

gRec_Temp.rTempActual := INT_TO_REAL(wRawMain) / 27648.0 * 400.0;
gRec_Temp.rTempBackup := INT_TO_REAL(wRawBackup) / 27648.0 * 400.0;

// 差值 > 20 °C 判主故障, 切备用
gRec_Temp.bSensorFault :=
ABS(gRec_Temp.rTempActual - gRec_Temp.rTempBackup) > 20.0;

IF gRec_Temp.bSensorFault THEN
IF gRec_Temp.rTempActual < -5.0 OR gRec_Temp.rTempActual > 410.0 THEN
gRec_Temp.rTempActual := gRec_Temp.rTempBackup;
END_IF;
END_IF;

FB_PIDLoop — PID 主逻辑 (OB35 100 ms):

FUNCTION_BLOCK FB_PIDLoop
VAR
fbPID : PID_COMPACT;
END_VAR

// 超温硬联锁: 不经 PID
IF gRec_Temp.rTempActual > gRec_Temp.rAlarmHigh THEN
gRec_Temp.bEnable := FALSE;
END_IF;

IF gRec_Temp.bAutoMode AND gRec_Temp.bEnable THEN
fbPID(
Setpoint := gRec_Temp.rTempSet,
Input := gRec_Temp.rTempActual,
Kp := gRec_Temp.rKp,
Ti := gRec_Temp.rTi,
Td := gRec_Temp.rTd,
OutputMin := 0.0, OutputMax := 100.0
);
gRec_Temp.rOutput := fbPID.Output;
ELSIF NOT gRec_Temp.bAutoMode AND gRec_Temp.bEnable THEN
gRec_Temp.rOutput := gRec_Temp.rManualOut;
ELSE
gRec_Temp.rOutput := 0.0;
END_IF;

FB_MainControl — 输出与冷却:

// AO 映射 0~100% → 0~27648 (0~10V)
AO_HeatPower := REAL_TO_INT(gRec_Temp.rOutput / 100.0 * 27648.0);
DO_HeatEnable := gRec_Temp.rOutput > 5.0 AND gRec_Temp.bEnable;

// 超过设定值 +5 °C 打开冷却阀 (防超调烧料)
DO_CoolValve := gRec_Temp.rTempActual > (gRec_Temp.rTempSet + 5.0)
AND gRec_Temp.bEnable;
HL_Heat := DO_HeatEnable;
HL_Alarm := gRec_Temp.rTempActual > gRec_Temp.rAlarmHigh
OR gRec_Temp.bSensorFault;

9. 运行与调试

  1. 仿真 Runtime 验证: 仿真中给 rTempActual 输入阶跃值, 观察 PID 输出是否收敛
  2. Ziegler-Nichols 整定: 先关闭积分 (Ti=99999), 逐步增大 Kp 到等幅振荡, 按公式反算 Kp/Ti/Td
  3. 下载到 Runtime: IDE "部署" → 选 Runtime IP → 下载 PLC 程序
  4. 在线监控: 打开温度趋势图, 观察升温曲线是否平滑, 稳态波动是否在 ±0.5 °C
  5. 强制测试: 强制 AI_TempBackup = 0 (模拟备传感器故障), 验证 bSensorFault 置位
  6. 常见排查: 稳态振荡 → Kp 过大; 无法到达设定值 → Ti 过大或 SSR 故障; 超调过大 → Td 过小

10. 用到的 Darra 功能

功能模块本案例用到的说明
PLC 编程SCL + OB35 周期中断IEC 61131-3
工艺对象PID_COMPACT 内置无需外购温控仪
HMI趋势曲线 + 手机远程 + 配方下发多地实时监控
通讯EtherCAT + OPC UA现场总线 + MES 对接
数据记录1 秒/点 × 30 天温度历史追溯
服务设备远程运维 + 故障微信推送客户报故障前先发现

11. 项目总结

  • 实测指标: 从 25 °C 升至 150 °C 用时 8 分钟, 超调 1.2 °C, 稳态 ±0.3 °C, 连续 7 天无漂移
  • 扩展方向:
    1. 升级多回路版本 (4~8 区 PID), 对接注塑机料筒/挤出机机头温控
    2. 增加 AI 自整定: 根据历史数据自动推荐 Kp/Ti/Td, 省去手工整定
    3. 对接 MES 配方下发, 不同工艺自动切换温度设定