返回主站|会员中心|保存桌面

欧姆龙服务商    

欧姆龙继电器|欧姆龙传感器|欧姆龙开关|欧姆龙温控器|欧姆龙电源

联系方式
  • 联系人:方经理
  • 电话:13073017555
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > omron CP1h 使用梯形图语言自制 piD 算法详解!
新闻中心
omron CP1h 使用梯形图语言自制 piD 算法详解!
发布时间:2026-08-11        浏览次数:22        返回列表

一、自制 PID 适用场景

  1. CP1H 内置 PID 指令功能固定,无法自定义输出限幅、分阶段积分分离、抗积分饱和、分段参数;

  2. 换热站温控、恒压补水、阀门调节需要自定义逻辑;

  3. 方便移植到无 PID 指令的小型 PLC,完全可视化每一步运算;

  4. 支持手动 / 自动无扰切换、自定义死区、斜坡输出。

二、PID 基础离散公式

标准离散位置型 PID:

\(u(k)=K_p\left[e(k)+\frac{T}{T_i}\sum_{i=0}^k e(i)+\frac{T_d}{T}\left[e(k)-e(k-1)\right]\right]\)拆解三部分:

  1. 比例项 P:\(K_p \times e(k)\)

  2. 积分项 I:\(K_p \times \frac{T}{T_i} \times \sum e\) (误差累加)

  3. 微分项 D:\(K_p \times \frac{T_d}{T} \times [e(k)-e(k-1)]\)

变量定义:

  • \(e(k)=SP-PV\):当前偏差(设定值 - 实际值)

  • SP:目标设定值

  • PV:现场采集反馈值(温度 / 压力)

  • T:PLC 采样周期(固定 100ms)

  • \(K_p\):比例系数

  • \(T_i\):积分时间 (s)

  • \(T_d\):微分时间 (s)

  • \(u(k)\):PID 输出(0~4000,对应 4~20mA 模拟量 AQ100)

三、寄存器规划(CP1H D 区保持寄存器)

表格

D 寄存器含义说明
D0SP 设定值目标温度 / 压力
D1PV 过程值AI 采集实际反馈
D2e (k) 当前偏差SP-PV
D3e (k-1) 上一次偏差微分计算用
D4偏差累加和 ∑e积分项累计
D5Kp 比例系数放大 100 倍,D5=250 → Kp=2.5
D6Ti 积分时间 (s)单位秒
D7Td 微分时间 (s)单位秒
D8采样周期 T (ms)固定 100ms=D8=100
D10P 项运算结果比例输出
D11I 项运算结果积分输出
D12D 项运算结果微分输出
D13PID 总原始输出P+I+D
D14输出下限限幅最小输出 400(4mA)
D15输出上限限幅最大输出 4000(20mA)
D16最终限幅后 PID 输出写入 AQ100
D20自动 / 手动标志D20=1 自动 PID,0 手动
D21手动输出值手动模式直接赋值输出

继电器标志

  • P_100ms:100ms 周期脉冲,固定 PID 采样触发

  • W0.00:PID 运算总启动(自动模式)

  • W0.01:积分饱和上限标志

  • W0.02:积分饱和下限标志

四、关键换算公式(PLC 整数运算,无浮点数)

欧姆龙 CP1H 梯形图仅支持整数,全部放大 100 倍运算避免小数丢失精度:

  1. 比例项

\(P = Kp \times e(k) \div 100\)2. 积分系数 \(Ki = Kp \times T \div (Ti \times 100)\)

\(I = Ki \times \sum e\)3. 微分系数 \(Kd = Kp \times Td \div (T \times 100)\)

\(D = Kd \times [e(k)-e(k-1)]\)

五、完整梯形图逻辑分步解析

网络 1:模式切换、采样周期触发

plaintext

LD     D20
AND    P_100ms
OUT    W0.00        // 100ms执行一次PID运算

说明:自动模式下,每 100ms 执行一轮完整 PID 计算,保证采样周期固定。

网络 2:计算当前偏差 e (k)=SP-PV

plaintext

LD     W0.00
MOV    D2,D3        // 保存上一次偏差 e(k)→e(k-1)
SUB    D0,D1,D2     // D2=SP(D0)-PV(D1) 新偏差

网络 3:比例项 P 计算

plaintext

LD     W0.00
MUL    D2,D5,D10    // D10=e(k)*Kp
DIV    D10,#100,D10 // 除以100还原小数 → 比例输出

网络 4:积分累加 ∑e,积分分离 / 抗积分饱和核心

plaintext

LD     W0.00
ADD    D2,D4,D4     // D4 = D4+e(k) 偏差累加

// 积分上限判断,防止正向饱和
LD     D4 > #50000
OUT    W0.01
MOV    #50000,D4

// 积分下限判断,防止负向饱和
LD     D4 < #-50000
OUT    W0.02
MOV    #-50000,D4

抗积分饱和逻辑:累加和限制 ±50000,避免大幅偏差时积分无限累积,超调严重。

网络 5:积分项 I 运算

plaintext

LD     W0.00
// Ki = Kp*T/(Ti*100)
MUL    D5,D8,D100    // Kp*T
MUL    D6,#100,D101  // Ti*100
DIV    D100,D101,D102// Ki系数
MUL    D4,D102,D11   // I=Ki*∑e

网络 6:微分项 D 计算

plaintext

LD     W0.00
SUB    D2,D3,D103    // e(k)-e(k-1) 偏差变化量
// Kd = Kp*Td/(T*100)
MUL    D5,D7,D104
MUL    D8,#100,D105
DIV    D104,D105,D106// Kd系数
MUL    D103,D106,D12 // D项输出

网络 7:P+I+D 求和,原始 PID 输出

plaintext

LD     W0.00
ADD    D10,D11,D13
ADD    D13,D12,D13   // D13 = P+I+D

网络 8:输出上下限幅(适配 4~20mA 模拟量 0~4000)

plaintext

LD     W0.00
// 超过上限4000强制限幅
LD     D13 > D15
MOV    D15,D16
// 低于下限400强制限幅
LD     D13 < D14
MOV    D14,D16
// 区间内直接输出
LD     D14 ≤ D13 ≤ D15
MOV    D13,D16

网络 9:自动 / 手动无扰切换

plaintext

// 自动模式输出PID计算值
LD     D20=#1
MOV    D16,AQ100

// 手动模式输出手动给定值D21
LD     D20=#0
MOV    D21,AQ100

网络 10:上电初始化(清除积分累加,防止开机冲击)

plaintext

LD     P_First_Cycle
MOV    #0,D4    // 清空积分和∑e
MOV    #0,D3    // 清空上一次偏差

六、进阶优化功能(换热站必备扩展逻辑)

1. 积分分离(大幅减小超调,温控核心)

当偏差绝对值大于阈值(例:|e|>10℃),关闭积分,只执行 PD 调节;小偏差再投入积分:

plaintext

LD     ABS(D2) > #10
MOV    #0,D11 // I项清零,积分失效

2. 输出死区,阀门微小抖动抑制

PID 输出变化小于 50 时,不更新模拟量,防止电动阀频繁微小动作磨损:

plaintext

SUB    D16,AQ100,D110
LD     ABS(D110) < #50
MOV    AQ100,D16 // 维持原有输出不变

3. 微分先行(只对 PV 微分,抑制设定值突变冲击)

常规 PID 对 SP 突变会产生巨大微分冲击(如温度设定突然上调 10℃阀门瞬间全开);微分先行改为仅对实际 PV 做微分,工业换热站首选改良 PID:只需修改微分运算,用本次 PV - 上次 PV 代替偏差差:D103 = D1_当前 PV - D108_上次 PV

4. 分段 PID 参数(冬季 / 夏季两套 Kp、Ti)

利用 PLC 内部时钟判断时段,自动切换 D5/D6/D7 参数,适配昼夜供暖气候补偿。

七、仿真与调试步骤

  1. 初始参数推荐(换热站温度控制)D5=200(Kp=2.0),D6=80(Ti=80s),D7=5(Td=5s),D8=100ms

  2. 离线仿真:手动修改 D0 设定、D1 反馈,监控 D10/D11/D12/PID 输出变化

  3. 现场调试顺序:先开 P,加大 Kp 至小幅震荡;再开 I 消除静差;最后加 D 抑制超调

  4. 观察 D4 积分累加值,若持续饱和,增大 Ti 或增加积分分离阈值

八、与 CP1H 内置 PID 指令对比

表格

项目自制梯形图 PIDCP1H 内置 PID 指令 PID (190)
逻辑自由度完全自定义,积分分离、微分先行、无扰切换自由写固定算法,修改逻辑受限
运算精度整数运算,需手动缩放自带浮点数运算
采样周期自由设定,P_100ms/P_1s 均可固定周期设置
资源占用占用 D 区寄存器多,梯形图网络多单条指令,占用资源极少
适用场景复杂工艺、需要特殊抗超调逻辑(换热站)简单恒温恒压,快速开发

九、常见故障排查

  1. 输出持续饱和不动:积分累加 D4 超限,检查抗积分饱和逻辑;增大 Ti

  2. 阀门高频抖动:微分项 D 过大,减小 D7 微分时间,增加输出死区

  3. 存在静态温差消除不了:积分失效,检查积分累加 D4 是否正常增减

  4. 设定值改动瞬间阀门剧烈动作:未做微分先行,对 SP 微分产生冲击

  5. PID 完全无运算:确认 W0.00 是否 100ms 周期持续导通、自动标志 D20=1

十、补充:增量式 PID 简要说明

上述程序为位置式 PID,直接输出阀门开度;增量式只输出本次输出变化量 Δu,适合步进阀、变频器,无积分饱和风险,公式:

\(\Delta u=K_p\left[(e_k-e_{k-1})+\frac{T}{T_i}e_k+\frac{T_d}{T}(e_k-2e_{k-1}+e_{k-2})\right]\)只需替换 P/I/D 运算网络,寄存器增加 D3 保存 e (k-2) 即可。

收缩
  • QQ咨询

  • 电话咨询

  • 13073017555
  • 添加微信客服