PLC模拟量PID输出的限幅处理
在工业自动化控制系统中,PID回路计算出的输出值是一个理论上无限延续的浮点数。然而,实际的物理执行机构(如调节阀、变频器)存在物理行程限制。如果PID输出计算值为120%,阀门只能开到100%,剩余的20%不仅无效,还会导致积分饱和,造成系统控制滞后。对PID输出进行限幅处理是保障系统稳定运行的关键步骤。
1. 明确限幅的目标范围
在编写程序前,确认 执行机构的物理量程与对应的数字量信号范围。大多数PLC内部的PID运算采用归一化数值(如0.0~100.0%)或工程量数值。
常见的对应关系如下表所示:
| 执行机构类型 | 物理行程 | 模拟量输出范围 | PLC内部建议限幅值 |
|---|---|---|---|
| 标准调节阀 | 0% ~ 100% | 4mA ~ 20mA | 0.0 ~ 100.0 |
| 变频器频率 | 0Hz ~ 50Hz | 0V ~ 10V | 0.0 ~ 50.0 |
| 伺服转矩 | -100% ~ 100% | -10V ~ +10V | -100.0 ~ 100.0 |
2. 利用PID指令自带参数限幅
主流PLC品牌(西门子、三菱、欧姆龙等)的PID功能块内部通常集成了输出限幅参数。这是最优先使用的方法,因为它通常具备“抗积分饱和”功能。
西门子 S7-1200/1500 系列
调用 PID_Compact 指令。在组态界面或背景数据块中,找到 输出限幅参数。
- 展开 指令背景数据块
InstPID。 - 修改
Retain.OutputHighLim参数为100.0(输出上限)。 - 修改
Retain.OutputLowLim参数为0.0(输出下限)。
当PID计算值超过 OutputHighLim 时,指令内部会自动截断输出,并暂停积分项的累加,防止积分饱和。
三菱 FX/Q/L 系列
使用 PID 或 PIDE 指令。在参数设置区域(通常为软元件地址):
- 写入 输出上限值到对应的软元件(如
D100),设为10000(假设分辨率为0.01%)。 - 写入 输出下限值到对应的软元件(如
D101),设为0。
3. 编写梯形图逻辑限幅(通用方法)
如果使用的PID指令不具备自动抗饱和功能,或者需要在PID输出后串联手动控制逻辑,必须在梯形图中编写显式的限幅逻辑。
以下逻辑以通用的结构化文本(ST)或梯形图逻辑描述,适用于所有PLC品牌。
步骤一:执行PID运算
触发 PID运算指令,将计算结果存入中间寄存器(如 Temp_Out),不要直接送入物理输出通道。
步骤二:上限幅处理
比较 中间寄存器 Temp_Out 与设定的上限值 High_Limit(例如100.0)。
如果 Temp_Out 大于 High_Limit:
传送 High_Limit 的值到最终输出寄存器 Final_Out。
步骤三:下限幅处理
比较 最终输出寄存器 Final_Out 与设定的下限值 Low_Limit(例如0.0)。
如果 Final_Out 小于 Low_Limit:
传送 Low_Limit 的值到最终输出寄存器 Final_Out。
逻辑示例(结构化文本描述)
// 假设 PID_Calc_Out 为PID原始计算值
// Final_Out 为限幅后的最终输出值
// 上限幅判断
IF PID_Calc_Out > 100.0 THEN
Final_Out := 100.0;
// 下限幅判断
ELSIF PID_Calc_Out < 0.0 THEN
Final_Out := 0.0;
// 正常范围
ELSE
Final_Out := PID_Calc_Out;
END_IF;
4. 处理限幅引起的积分饱和
单纯在输出端切断数值(步骤3的做法)会导致严重的积分饱和问题:PID仍在计算积分项,输出值理论上可能达到500%,当偏差反向时,PID输出需要漫长的时间从500%降到100%才能开始关阀门。
必须实施“积分切断”策略。
手动积分切断逻辑
当检测到输出已经达到极限时,禁止 PID指令中的积分项更新,或者强制将PID运算的积分项清零/回退。
判断 输出状态:
- 若
Final_Out等于High_Limit且 偏差为正(设定值 > 过程值),置位 “积分暂停标志”。 - 若
Final_Out等于Low_Limit且 偏差为负(设定值 < 过程值),置位 “积分暂停标志”。 - 若未达极限,复位 “积分暂停标志”。
5. 模拟量转换与最终输出
完成数值限幅后,转换 工程量数值为PLC模拟量模块对应的数字量。
不同模块对应的数字量范围不同,参考 下表进行换算:
| PLC品牌/模块类型 | 电流输出 (4-20mA) | 电压输出 (0-10V) | 数据类型 |
|---|---|---|---|
| 西门子 S7-1200 | 5530 ~ 27648 | 0 ~ 27648 | INT |
| 三菱 FX3U (4AD) | 0 ~ 4000 | 0 ~ 4000 | INT |
| 欧姆龙 CJ1W-DA08V | 0 ~ 4000 | 0 ~ 4000 | INT |
换算公式
假设限幅后的输出 Final_Out 为工程量百分比(0.0 ~ 100.0),对应数字量输出 D_Analog:
$$D_{Analog} = \frac{Final\_Out}{100.0} \times (D_{Max} - D_{Min}) + D_{Min}$$
其中:
- $D_{Max}$:模拟量最大数字量(如27648)
- $D_{Min}$:模拟量最小数字量(如0或5530)
最终执行
- 计算 转换后的整数值。
- 移动 计算结果至模拟量输出通道地址(如
AQW0或QW64)。 - 接通 输出使能信号。

暂无评论,快来抢沙发吧!