PID 是 PLC 控制里"听上去高大上,用起来头大"的技术。温度超调 10℃、压力震荡不停、流量调半天到不了目标——90% 的新手调 PID 是"瞎调":拍脑袋给 P 给 I 给 D,结果越调越糟。
F2 第 12 章给出了系统化方案——Ziegler-Nichols 整定法和经验试凑法两种核心方法,并配套了食品杀菌罐 PID ±1℃ 的经典案例。这篇文章我用 3 步法,让你能把单回路 PID 调到 ±1℃ 的工业精度。核心:PID 不是玄学,是数学——P 是"当下反应",I 是"过去积累",D 是"未来预判"。
目录
3.1 Ziegler-Nichols 第一法(开环响应法)
3.2 Ziegler-Nichols 第二法(临界振荡法)
一、PID 的本质:3 个动作的协同
1.1 PID 的生活比喻
把 PID 控制想象成开车:
- P(比例):当前车速比目标车速低多少 → 油门踩多深
- I(积分):过去一段时间车速平均比目标差多少 → 持续加油门
- D(微分):车速变化多快 → 提前收油门避免超速
PID 控制就是让 PLC 像老司机一样开车——反应快、不超调、稳定到达目标。
1.2 PID 数学公式
Output = Kp × e(t) + Ki × ∫e(t)dt + Kd × de(t)/dt
e(t)= 设定值(Setpoint)- 当前值(Process Variable) = 误差Kp= 比例增益Ki= 积分增益Kd= 微分增益
PID 三项独立作用,但叠加输出。
1.3 PID 的 3 种实现方式
方式1:标准 PID(位置式)
- 直接输出控制量(如阀门开度 0-100%)
- 适用:阀门、变频器调速
方式2:增量式 PID
- 输出控制量"增量"(如 +2%、-1%)
- 适用:步进电机、伺服电机
方式3:PD + I 分离
- PD(比例+微分)做快速响应,I(积分)单独处理
- 适用:超调严重场景
F2 第 12 章推荐**标准 PID(位置式)**作为入门首选——算法直观,调试简单。
二、PID 三大参数的物理意义
2.1 P(比例):当下反应
作用:误差越大,输出越大。P 越大反应越快,但超调也越大。
类比:水温比目标低 10℃,P=2 就把阀门开到 20%。水温低 20℃,阀门开 40%。
P 太小:反应慢,到不了目标值 P 太大:反应猛,超调严重(冲过头) P 合适:快速到达目标附近,但有"稳态误差"(始终差一点点)
2.2 I(积分):过去积累
作用:消除"稳态误差"。误差持续存在时,I 不断累积,最终把误差归零。
类比:水温比目标低 1℃,P 输出 2%,还差 0.5℃。I 开始累积——10 秒后阀门从 2% 加到 4%,误差归零。
I 太小:消除稳态误差慢 I 太大:累积太快 → 超调 + 震荡
2.3 D(微分):未来预判
作用:根据误差变化趋势预判未来,提前动作。抑制超调和震荡。
类比:水温快速上升,D 发现"马上要超调" → 提前收阀门。
D 太小:抑制超调弱 D 太大:对噪声敏感 → 控制系统震荡
2.4 三参数的协同效应
| 参数 | 反应快 | 减小超调 | 消除稳态误差 |
|---|---|---|---|
| P 增大 | ✓ | 反而增大 | ✓(但不彻底) |
| I 增大 | 略加快 | 增大 | ✓✓ |
| D 增大 | 略加快 | ✓✓ | 无影响 |
💡 效率技巧:调参口诀:先 P 后 I 最后 D——先把 P 调到不振荡,再加 I 消除稳态误差,最后加 D 抑制超调。
三、第 1 步:Ziegler-Nichols 整定法
3.1 Ziegler-Nichols 第一法(开环响应法)
适用:对象可以"开环"测试(即允许控制量跳变,观察响应)
步骤:
- 断开 PID,让控制量手动设为某个值(如 30%)
- 记录过程变量 5-10 分钟,看稳定到多少
- 控制量跳变到另一个值(如 50%),再记录 5-10 分钟
- 画出"S 形响应曲线",得到 3 个参数:
- K(过程增益):输出变化 / 输入变化
- L(延迟时间):从输入变化到输出开始变化的时间
- T(时间常数):输出变化 63.2% 的时间
3.2 Ziegler-Nichols 第二法(临界振荡法)
适用:对象不能开环测试(如温度惯性大)
步骤:
- 只设 P,I = 0,D = 0
- 逐渐增大 P,直到系统出现等幅振荡(不收敛也不发散)
- 记录此时的 P 值(Kc,临界增益)和振荡周期(Tc,临界周期)
- 按下表设置 PID 参数:
| 控制类型 | Kp | Ki | Kd |
|---|---|---|---|
| P 控制 | 0.5 Kc | — | — |
| PI 控制 | 0.45 Kc | 0.54 Kc/Tc | — |
| PID 控制 | 0.6 Kc | 1.2 Kc/Tc | 0.075 Kc × Tc |
⚠️ 避坑警告:临界振荡法会让系统震荡——生产环境严禁使用!F2 第 12 章特别强调:临界振荡法只能在调试阶段用,生产时必须切换到 PI 或 PID 控制。
四、第 2 步:经验试凑法(更实用)
4.1 经验试凑 4 步法
第 1 步:只设 P,I=0、D=0
- 从小到大调 P
- 观察响应曲线
- P 合适:快速到达目标附近,有稳态误差
第 2 步:加 I 消除稳态误差
- P 不变,从 0 开始加大 I
- 观察稳态误差是否消除
- I 合适:5-10 个控制周期内消除稳态误差
第 3 步:加 D 抑制超调
- P、I 不变,从 0 开始加大 D
- 观察超调是否减小
- D 合适:超调量 < 5%
第 4 步:微调优化
- 微调 3 个参数,让响应又快又稳
- 目标:上升时间短、超调小、稳态误差为零、抗干扰
4.2 不同对象的参数起点
| 控制对象 | Kp 起点 | Ki 起点 | Kd 起点 |
|---|---|---|---|
| 温度 | 5-10 | 100-300 秒 | 0-1 秒 |
| 压力 | 2-5 | 50-150 秒 | 0 秒 |
| 流量 | 1-3 | 20-60 秒 | 0 秒 |
| 液位 | 3-8 | 100-300 秒 | 0 秒 |
💡 效率技巧:温度对象用 PID(要 D),流量/压力对象用 PI(不用 D)——因为流量压力响应快,D 会放大噪声导致震荡。
4.3 现场调试技巧
技巧 1:手动/自动无扰动切换
- 自动模式时输出 = PID 计算值
- 切手动时输出 = 当前手动值(不突变)
- 切自动时 PID 从当前误差开始计算(不突变)
技巧 2:设定值斜坡(Setpoint Ramp)
- 不要直接给 100℃,而是每分钟升 10℃
- 减小温度冲击,避免超调
技巧 3:死区(Deadband)设置
- 误差 < ±1℃ 时 PID 不动作
- 避免阀门频繁调节,延长执行机构寿命
技巧 4:输出限幅
- PID 输出限制在 0-100%
- 防止初始误差大时输出过大(如满功率加热)
五、第 3 步:无扰动切换 + 死区设置
5.1 无扰动切换的实现
手动 → 自动:PID 计算时考虑"初始输出值",避免切换瞬间输出跳变
// PID 块调用
"FB_PID 控制"(
setpoint := 80.0,
process_value := "tank_temp",
manual_value := manual_output, // 手动值
auto_mode := auto_mode_flag, // 自动模式
output => pid_output
);
切换逻辑:
- 自动模式时:PID 输出 = Kp×e + Ki×∫e + Kd×de/dt
- 手动模式时:PID 输出 = manual_value(手动设定值)
- 切换瞬间:积分项 = manual_value,保证切换无扰动
5.2 死区设置
作用:误差 < 死区范围时,PID 输出保持不变
IF ABS(error) < deadband THEN
// 误差太小,PID 不动作
output := last_output;
ELSE
// 正常 PID 计算
output := Kp * error + Ki * integral + Kd * derivative;
END_IF;
典型死区值:
- 温度:±0.5℃
- 压力:±0.05 bar
- 流量:±0.5 L/min
- 液位:±1 cm
⚠️ 避坑警告:死区太小 → 阀门频繁调节,执行机构寿命减半;死区太大 → 控制精度下降。按执行机构的"死区"设置——阀门有 0.5% 死区,温度死区就设 ±0.5℃。
5.3 防积分饱和(Anti-Windup)
问题:误差长时间存在(如目标 100℃,当前 25℃,误差 75℃),I 项不断累积 → 当温度终于到 100℃ 时,I 项已经累积到巨大值,导致严重超调。
解决:当输出达到上下限时,停止积分累积。
IF output >= max_limit OR output <= min_limit THEN
// 输出饱和,停止积分
ELSE
integral := integral + error * dt;
END_IF;
F2 第 12 章明确:防积分饱和是 PID 必备功能,没有此功能的 PID 块不能在生产用。
六、典型案例:杀菌罐 PID ±1℃
6.1 工艺要求
某食品厂巴氏杀菌罐工艺要求:
- 目标温度:82℃ ± 1℃
- 控制对象:蒸汽阀门(调节蒸汽流量)
- 被控对象:罐内温度
- 扰动:进料温度波动(20-30℃)、环境温度变化
6.2 控制方案
- 传感器:PT100 温度传感器(4-20mA 输出)
- 执行器:气动薄膜调节阀(4-20mA 控制信号)
- 控制器:西门子 S7-1200 + PID_Compact 块
- 控制周期:1 秒
6.3 PID 参数整定过程
第 1 步:只设 P,I=0、D=0
- 起始 P = 5(试凑法起点)
- P=5:响应慢,5 分钟到达 78℃
- P=10:响应快,3 分钟到达 81℃
- P=15:响应更快,2 分钟到达 83℃(轻微超调)
- P=25:严重超调到 95℃,震荡 10 分钟才稳定 → 太大
结论:P=15 合适(快速 + 轻微超调)
第 2 步:加 I 消除稳态误差
- P=15 不变,加 I
- I=100 秒:5 分钟消除稳态误差(从 81℃ 到 82℃)
- I=300 秒:2 分钟消除稳态误差
- I=600 秒:1 分钟消除稳态误差 → 合适
- I=1200 秒:30 秒消除稳态误差,但超调加剧
结论:I=600 秒合适
第 3 步:加 D 抑制超调
- P=15、I=600 不变,加 D
- D=0.5 秒:超调从 1℃ 降到 0.5℃
- D=1 秒:超调 0.3℃ → 合适
- D=3 秒:开始震荡 → 太大
结论:D=1 秒合适
6.4 最终参数与效果
- Kp = 15,Ki = 600 秒,Kd = 1 秒
- 上升时间:2 分钟(25℃ → 82℃)
- 超调量:0.3℃
- 稳态误差:±0.5℃(死区)
- 抗干扰:进料温度变化 ±5℃ 时,罐温波动 < ±1℃
效果:完全满足 ±1℃ 的工艺要求。
💡 效率技巧:F2 第 12 章推荐的完整流程:先 P→后 I→最后 D,每个参数逐步加大,每改一次参数记录一次响应曲线,最后综合选择最佳组合。
七、PID 参数自整定的实操指南
西门子 S7-1200 PID_Compact 自整定
TIA Portal → PID_Compact → 调试面板 → “整定” → 选"预调节"或"精确调节"。
预调节:阶跃响应法——给一个输出阶跃(如 20%→40%),记录 PV 响应曲线,自动算 Kp/Ti/Td。适用:首次上电、系统特性未知。
精确调节:在运行点附近小幅振荡,修正参数。适用:预调节后效果不理想。
整定步骤:
- SP 设到典型工作点(如 150℃)
- 打开调试面板 → 观察 PV 趋势图
- 确认 PV 稳定 → 点击"预调节" → PID 自动输出阶跃
- 观察 PV 响应 → PID 自动算 Kp/Ti/Td → 写入参数
- 检查响应曲线:超调 < 5%?稳态误差 < 1%?调节时间 < 期望?
三菱 PID 自整定
GX Works3 → PID 指令 → "自动整定"模式 → 在线监控趋势图。
自整定失败的 3 种情况
- PV 噪声太大 → 自整定算出的参数极不可靠 → 先滤波
- 系统响应太慢(大惯性)→ 自整定超时 → 手动给 Ziegler-Nichols 参数(第 13 篇)
- 非线性严重(温度高度非线性)→ 自整定在低参数和高参数偏差大 → 分温度段定不同参数
八、温度控制中 PID 的 4 种改进方案
1. 分段 PID
低温段用一组参数(加热快、允许大超调)、高温段用另一组参数(防过冲)。恒温效果提升 50%+(F2 案例:杀菌罐从一个 PID 的 ±3℃ 提升到分段 PID 的 ±1℃)。
2. 前馈控制
如果外界影响(如环境温度、进水温度)可以预测 → 直接加到 PID 输出上。PID 只做"误差修正"而非"全部调节",能减少 30% 调节幅度。
3. 串级 PID(第 25 篇详述)
外层温度 PID 输出作为内层加热功率 PID 的设定值。温度 PID 效果仅 20% 取决于外层参数,80% 取决于内层。
4. 史密斯预估器
大延迟系统(如超长管道加热)的解决方案——建一个数学模型预测延迟后的 PV,PID 对这个预测值做控制。F2 第 25 章详述。
九、手自动无扰动切换
切换瞬间的冲击问题
手动模式 AUTO = 0 时操作员手动控制输出(如加热器功率 60%)。切换到 AUTO = 1 时 PID 接管,输出的初值 = 上次 PID 计算的输出(可能是 0% 或 100%)→ 输出剧烈波动 → 系统冲击。
无扰动切换实现
切换到 AUTO 的瞬间,把手动输出值赋给 PID 的积分项(I 项),让 PID 从当前输出值开始调节,输出不会突变。
西门子 PID_Compact 内置这个功能,勾选"无扰动切换"即可。
十、PID 自整定实操指南
西门子 S7-1200 PID_Compact 自整定
TIA Portal → PID_Compact → 调试面板 → “整定” → “预调节"或"精确调节”。
预调节:阶跃响应法——给一个输出阶跃(20%→40%),记录 PV 响应曲线,自动算 Kp/Ti/Td。
精确调节:在运行点附近小幅振荡修正参数。
整定步骤:
- SP 设到典型工作点(如 150℃)
- 打开调试面板 → 观察 PV 趋势图
- 确认 PV 稳定 → 点击"预调节"
- PID 自动算 Kp/Ti/Td → 写入参数
- 检查:超调 < 5%?稳态误差 < 1%?
自整定失败的 3 种情况
- PV 噪声太大 → 算出的参数不可靠 → 先滤波
- 系统响应太慢(大惯性)→ 自整定超时 → 手动 Ziegler-Nichols
- 非线性严重 → 低参数和高参数偏差大 → 分段 PID
十一、温度控制的 4 种 PID 改进方案
1. 分段 PID:低温段一组参数(快加热),高温段另一组(防过冲)。杀菌罐从 ±3℃ 提升到 ±1℃(F2 真实案例)。
2. 前馈控制:外界影响可预测(环境温度/进水温度)→ 直接加到 PID 输出上。PID 只做"误差修正"。
3. 串级 PID(第 25 篇详述):外层温度 PID 输出 = 内层功率 PID 设定值。80% 效果取决于内层。
4. 史密斯预估器:大延迟系统的解决方案——建数学模型预测延迟后的 PV。F2 第 25 章详述。
十二、手自动无扰动切换
手动模式(AUTO=0)时操作员手动控制输出(如加热功率 60%)。切换到 AUTO=1 时,如果 PID 输出初值是 0% 或 100% → 剧烈波动 → 系统冲击。
无扰动切换实现:切 AUTO 瞬间把手动输出值赋给 PID 积分项(I 项),让 PID 从当前输出值开始调节。西门子 PID_Compact 内置此功能——勾选"无扰动切换"即可。
十三、温度传感器的选型决策树
| 传感器 | 范围 | 精度 | 响应 | 价格 | 适用 |
|---|---|---|---|---|---|
| PT100 热电阻 | -200~850℃ | ±0.1℃ | 慢(3-10s) | 100 | 精确温控 |
| K 型热电偶 | -200~1372℃ | ±1.5℃ | 快(0.5-2s) | 50 | 高温快速响应 |
| NTC 热敏电阻 | -50~150℃ | ±0.2℃ | 中 | 10 | 低成本 |
| 红外测温仪 | -50~3800℃ | ±1% | 极快(ms) | 500-5000 | 非接触/运动物体 |
| DS18B20 数字 | -55~125℃ | ±0.5℃ | 慢(0.75s) | 15 | DIY/教学 |
⚠️ PT100 用 3 线制——第 3 根线补偿引线电阻,否则 10 米线 = 1.5℃ 误差。4 线制更精确但大多数场景 3 线够用。
十四、温度控制中传感器的选型决策树
| 传感器 | 范围 | 精度 | 响应 | 价格 | 适用 |
|---|---|---|---|---|---|
| PT100 | -200~850℃ | ±0.1℃ | 3-10s | 100 | 精确温控 |
| K 型热电偶 | -200~1372℃ | ±1.5℃ | 0.5-2s | 50 | 高温快速 |
| NTC 热敏 | -50~150℃ | ±0.2℃ | 中 | 10 | 低成本 |
| 红外测温 | -50~3800℃ | ±1% | ms 级 | 500-5000 | 非接触 |
| DS18B20 | -55~125℃ | ±0.5℃ | 0.75s | 15 | DIY/教学 |
⚠️ PT100 用 3 线制——第 3 根线补偿引线电阻,10 米线补偿前误差 1.5℃。
十五、PID 死区与输出限幅
死区:SP 附近 ±0.5℃ 内 PID 不输出——避免微调频繁动作(电磁阀/加热器频繁开关)。但死区太大 → 稳态误差。
输出限幅:PID 输出设定上下限(比如加热器 0-100% 功率),防止积分饱和导致的输出极端值。
十六、PID 在 PH/电导率控制中的特殊挑战
PH 控制是 PID 的"终极挑战"——1 滴酸可以把 PH 从 7.0 拉到 3.0。过程增益非线性极度强烈。
解决方案:
- 分段 P 增益(PH 越高增益越小)
- 用自适应 PID(增益随 PV 变化自动调整)
- 物理方案:用缓冲罐(大容积)减缓 PH 变化
F2 案例:某废水处理 PH 控制用了 3 个串联搅拌罐——每段 PH 变化范围缩小,PID 可正常控制。
十七、加热控制中的 SSR vs 接触器
SSR(固态继电器)控制电加热是 PID 的标准搭配——响应快(< 10ms)、无机械寿命限制、支持高频 PWM 输出。但发热严重(需散热器)。
接触器成本极低,但机械寿命 10-50 万次——PID 频繁调节输出 → 接触器天天开关 → 1 年内必然烧触点。
选型规则
| 控制周期 | 设备 | 适用 |
|---|---|---|
| < 1 秒 | SSR | 精确温控(PID) |
| 1-10 秒 | 接触器(限机械寿命) | 粗温控 |
| > 10 秒 | 接触器 | 慢热系统 |
PID 控制周期 2 秒用接触器 → 每分钟 30 次开关 → 每天 43200 次 → 接触器寿命 12 天。正确做法:调长控制周期到 10-20 秒,或用 SSR。
十八、防冻保护:温度控制的"暗坑"
大冬天设备关了但水管/罐体可能冻裂。防冻保护是温度控制的隐蔽需求——不是工艺要求,是设备保护。
PLC 实现:设备停止状态,水温 < 5℃ → 自动启加热器(最小功率维持 5-10℃)→ 水温 > 10℃ 停止。
⚠️ 防冻保护不是 PID 控制——是简单的 ON/OFF 恒温控制。用 PID 反而复杂且费电(持续调节 SSR 每秒发热)。
十九、扩展阅读 + 系列预告
本篇核心要点回顾:
- PID 三参数协同:P 现在 + I 过去 + D 未来
- 两种整定法:Ziegler-Nichols(理论)vs 经验试凑(实用)
- 整定口诀:先 P 后 I 最后 D
- 无扰动切换 + 死区设置:工程必备
- 典型案例:杀菌罐 P=15/I=600/D=1 实现 ±1℃ 控制
思考题:
- 你现场调过 PID 吗?是按什么方法调的?遇到过哪些坑?
- 你现在用的 PID 是"瞎调"还是有系统的整定方法?看完这篇会调整策略吗?
下一篇预告: 第 13 篇《PID 参数瞎调一晚上还震荡?4 类高级算法 + Ziegler-Nichols 完整推导》——串级控制、前馈控制、模糊控制、自适应 PID。
标签:#PID控制 #PLC调参 #温度控制 #ZieglerNichols #自动化 #工业控制 #PLC编程
SEO 关键词:PID 调参、PID 整定、Ziegler-Nichols、温度控制、PID 算法

247

被折叠的 条评论
为什么被折叠?



