3.7 PID指令
3.7.1 指令详解
- PID 指令是用来调用 PID 运算程序;
- 在 PID 运算开始之前,应使用 MOV 指令将参数(见下表)设定值预先写入对应的数据寄存器中;
- 如果使用有断电保持功能的数据寄存器,参数只需写入一次,无需每次上电重复写入
- 如果目标操作数\[D\]有断电保持功能,应使用初始化脉冲 M8002 的常开触点将其复位,避免上一次的旧值影响本次运算。
| PID功能选择 | PID功能选择 | PID功能选择 | PID功能选择 |
|---|---|---|---|
| 地址 | 功能 | 功能 | 说明 |
| S1 | 设定值(SV) | 设定值(SV) | |
| S2 | 反馈值(PV) | 反馈值(PV) | |
| S3 | 采样时间(TS) | 采样时间(TS) | 设定范围 1~32767(ms),需大于 PLC 程序扫描周期; |
| S3+1 | 功能模式ACT | bit0 | 0:正动作; 1:逆动作; |
| bit1 | 0:无输入变化量报警; 1:输入变化量报警有效; | ||
| bit2 | 0:无输出变化量报警; 1:输出变化量报警有效, 注:bit2 和 bit5 请勿同时置 ON; 否则会导致PID输出控制逻辑冲突。 | ||
| bit3 | 备用,设 0; | ||
| bit4 | 备用,设 0; | ||
| bit5 | 0:无输出值上下限设定; 1:输出值上下限设定有效:bit2 和 bit5 请勿同时置 ON; | ||
| bit6~bit15 | 备用,设 0; |
- 正动作:反馈值小于设定值越多,输出值越大,如通过控制加热丝通断时间实现加热的系统;
(反馈值 = 温度,设定值 = 目标温度,温度越低,输出加热功率越大);
- 逆动作:反馈值大于设定值越多,输出值越大,如通过控制风扇转速实现降温的系统;
(反馈值 = 温度,设定值 = 目标温度,温度越高,输出风扇转速越大)。
3.7.2 PID 参数的设定(增量式 PID)
使用 PID 指令前,需重点配置以下 4 个关键参数,它们共同决定了控制效果:
| 参数 | 全称 | 核心作用 | 设定建议 |
|---|---|---|---|
| TS | 采样时间 | PID 运算的执行周期,决定了多久读取一次反馈值并计算输出 | 1~32767ms,必须大于 PLC 程序扫描周期: 注意:TS 过小会大幅增加 PLC 运算负荷,若两次采样反馈值几乎无变化,PID 输出也不会更新,需根据实际项目选择合适值 |
| Kp | 比例增益 | 快速响应偏差,产生与当前偏差成正比的调节量 | 0~32767(单位:%),偏差越大,比例调节力度越强 |
| Ki | 积分增益 | 消除静态偏差,只要设定值与反馈值存在偏差,积分部分就会持续输出调节,直到偏差归零 | 0~32767(单位:%),可解决 “控制结果始终达不到设定值” 的静差问题 |
| Kd | 微分增益 | 预判偏差变化趋势,根据偏差变化速度提前给出调节,抑制超调 | 0~32767(单位:%),偏差变化越快,微分调节力度越强 |
3.7.3 P/I/D 三种控制模式通俗理解
比例控制(P):及时纠偏的 “急刹车 / 油门”只要设定值和反馈值存在偏差,就会立刻产生和偏差成正比的调节量,偏差越大,调节力度越强。优点是响应快,缺点是无法彻底消除偏差(会有静差)。
积分控制(I):消除偏差的 “慢性药”只要偏差不为零,积分部分就会持续累加调节量,直到偏差完全消失。它能解决比例控制的静差问题,但过强的积分会导致系统超调、震荡。
微分控制(D):预判趋势的 “预警员”不看偏差大小,只看偏差变化的速度。比如温度快速升高时,微分部分会提前加大冷却力度,防止温度超过设定值(超调),起到 “提前抑制” 的作用。
| 地址 | 名称 | 设定范围 | 设定说明 |
|---|---|---|---|
| S3+2 | 比例增益 Kp | 0~32767(%) | 比例增益(默认 0) |
| S3+3 | 积分增益 Ki | 0~32767(%) | 积分增益(默认 0) |
| S3+4 | 微分增益 Kd | 0~32767(%) | 微分增益(默认 0) |
| S3+(7~11) | 内部运算使用-请勿在程序中使用 | 内部运算使用-请勿在程序中使用 | 内部运算使用-请勿在程序中使用 |
| S3+12 | 输入变化量(增侧)报警设定值 | 0~32767 | (的 bit1=1 时有效) |
| S3+13 | 输入变化量(减侧)报警设定值 | 0~32767 | (的 bit1=1 时有效) |
| S3+14 | 输出变化量(增侧报警设定值) | (的 bit2=1,bit5=0 时有效) | (的 bit2=1,bit5=0 时有效) |
| (的 bit1=0,bit5=1 时有效) | (的 bit1=0,bit5=1 时有效) | ||
| S3+15 | 输出变化量(减侧)报警设定值 | 0~32767 | (的 bit2=1,bit5=0 时有效) |
| -32768~32767 | (的 bit1=0,bit5=1 时有效) | ||
| S3+16 | 报警输出 | bit0 输入变化量(增侧)溢出 | bit0 输入变化量(增侧)溢出 |
| bit1 输入变化量(减侧)溢出 | bit1 输入变化量(减侧)溢出 | ||
| bit2 输出变化量(增侧)溢出 | bit2 输出变化量(增侧)溢出 | ||
| bit3 输出变化量(减侧)溢出 | bit3 输出变化量(减侧)溢出 | ||
| 的 bit1=1 或 bit2=1 时有效 | 的 bit1=1 或 bit2=1 时有效 | ||
| S3+(17~ 28) | 内部运算使用-请勿在程序中使用 | 内部运算使用-请勿在程序中使用 | 内部运算使用-请勿在程序中使用 |