文章目录

PLC模拟量PID输出的限幅处理

发布于 2026-03-25 04:19:06 · 浏览 10 次 · 评论 0 条

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 指令。在组态界面或背景数据块中,找到 输出限幅参数。

  1. 展开 指令背景数据块 InstPID
  2. 修改 Retain.OutputHighLim 参数为 100.0(输出上限)。
  3. 修改 Retain.OutputLowLim 参数为 0.0(输出下限)。

当PID计算值超过 OutputHighLim 时,指令内部会自动截断输出,并暂停积分项的累加,防止积分饱和。

三菱 FX/Q/L 系列

使用 PIDPIDE 指令。在参数设置区域(通常为软元件地址):

  1. 写入 输出上限值到对应的软元件(如 D100),设为 10000(假设分辨率为0.01%)。
  2. 写入 输出下限值到对应的软元件(如 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运算的积分项清零/回退。

判断 输出状态:

  1. Final_Out 等于 High_Limit 且 偏差为正(设定值 > 过程值),置位 “积分暂停标志”。
  2. Final_Out 等于 Low_Limit 且 偏差为负(设定值 < 过程值),置位 “积分暂停标志”。
  3. 若未达极限,复位 “积分暂停标志”。

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)

最终执行

  1. 计算 转换后的整数值。
  2. 移动 计算结果至模拟量输出通道地址(如 AQW0QW64)。
  3. 接通 输出使能信号。

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文