1. PID算法
在工业生产过程控制中,模拟信号PID(由比例、积分、微分构成的闭合回路)调节是常见的一种控制方法。运行PID控制指令,S7-200西门子plc将根据参数表中的输入测量值、控制设定值及PID参数,进行PID运算,求得输出控制值。参数表中有9个参数,全部为32位的实数,共占用36个字节。PID控制回路的参数表如表6-15所示。
表6-15 PID控制回路的参数表
地址偏移量 | 参数 | 数据格式 | 参数类型 | 说明 |
0 | 过程变量当前值PVn | 双字 nbsp;,实数 | 输入 | 必须在0.0至1.0范围内。 |
4 | 给定值SPn | 双字 ,实数 | 输入 | 必须在0.0至1.0范围内 |
8 | 输出值Mn | 双字 ,实数 | 输入/输出 | 在0.0至1.0范围内 |
12 | 增益Kc | 双字 ,实数 | 输入 | 比例常量,可为正数或负数 |
16 | 采样时间Ts | 双字 ,实数 | 输入 | 以秒为单位,必须为正数 |
20 | 积分时间Ti | 双字 ,实数 | 输入 | 以分钟为单位,必须为正数。 |
24 | 微分时间Td | 双字 ,实数 | 输入 | 以分钟为单位,必须为正数。 |
28 | 上一次的积分值Mx | 双字 ,实数 | 输入/输出 | 0.0和1.0之间(根据PID运算结果更新) |
32 | 上一次过程变量PVn-1 | 双字 ,实数 | 输入/输出 | 最近一次PID运算值 |
Mn=Kc*(SPn-PVn)+Kc*(Ts/Ti)*(SPn-PVn)+Mx+Kc*(Td/Ts)*(PVn-1-PVn)
其中各参数的含义已在表6-15中描述。
比例项Kc*(SPn-PVn):能及时地产生与偏差(SPn-PVn)成正比的调节作用,比例系数Kc越大,比例调节作用越强,系统的稳态精度越高,但Kc过大会使系统的输出量振荡加剧,稳定性降低。
积分项Kc*(Ts/Ti)*(SPn-PVn)+Mx:与偏差有关,只要偏差不为0,PID控制的输出就会因积分作用而不断变化,直到偏差消失,系统处于稳定状态,所以积分的作用是消除稳态误差,提高控制精度,但积分的动作缓慢,给系统的动态稳定带来不良影响,很少单独使用。从式中可以看出:积分时间常数增大,积分作用减弱,消除稳态误差的速度减慢。
微分项Kc*(Td/Ts)*(PVn-1-PVn):根据误差变化的速度(既误差的微分)进行调节具有超前和预测的特点。微分时间常数Td增大时,超调量减少,动态性能得到改善,如Td过大,系统输出量在接近稳态时可能上升缓慢。
2. PID控制回路选项
在很多控制系统中,有时只采用一种或两种控制回路。例如,可能只要求比例控制回路或比例和积分控制回路。通过设置常量参数值选择所需的控制回路。
(1)如果不需要积分回路(即在PID计算中无“I”),则应将积分时间Ti设为无限大。由于积分项Mx的初始值,虽然没有积分运算,积分项的数值也可能不为零。
(2)如果不需要微分运算(即在PID计算中无“D”),则应将微分时间Td设定为0.0。
(3)如果不需要比例运算(即在PID计算中无“P”),但需要I或ID控制,则应将增益值Kc指定为0.0。因为Kc是计算积分和微分项公式中的系数,将循环增益设为0.0会导致在积分和微分项计算中使用的循环增益值为1.0。
3. 回路输入量的转换和标准化
每个回路的给定值和过程变量都是实际数值,其大小、范围和工程单位可能不同。在PLC进行PID控制之前,必须将其转换成标准化浮点表示法。步骤如下:
(1)将实际从16位整数转换成32位浮点数或实数。下列指令说明如何将整数数值转换成实数。
XORD AC0,AC0 //将AC0清0 www.dzkfw.com.cn
ITD AIW0, AC0 //将输入数值转换成双字
DTR AC0, AC0 //将32位整数转换成实数
(2)将实数转换成0.0至1.0之间的标准化数值。用下式:
实际数值的标准化数值=实际数值的非标准化数值或原始实数/取值范围 +偏移量
其中:取值范围=最大可能数值-最小可能数值=32 000(单极数值)或64 000(双极数值)
偏移量:对单极数值取0.0,对双极数值取0.5
单极(0~32000),双极(-32000~32000)
如将上述AC0中的双极数值(间距为64,000)标准化:
/R 64000.0, AC0 //使累加器中的数值标准化
+R 0.5, AC0 //加偏移量0.5
MOVR AC0, VD100 //将标准化数值写入PID回路参数表中。
4. PID回路输出转换为成比例的整数
程序执行后,PID回路输出0.0和1.0之间的标准化实数数值,必须被转换成16位成比例整数数值,才能驱动模拟输出。
PID回路输出成比例实数数值=(PID回路输出标准化实数值-偏移量)*取值范围
程序如下:
MOVR VD108, AC0 //将PID回路输出送入AC0。
-R 0.5, AC0 //双极数值减偏移量0.5
*R 64000.0, AC0 //AC0的值*取值范围,变为成比例实数数值
ROUND AC0,AC0 //将实数四舍五入取整,变为32位整数
DTI AC0, AC0 //32位整数转换成16位整数
MOVW AC0, AQW0 //16位整数写入AQW0
5. PID指令
PID指令:使能有效时,根据回路参数表(TBL)中的输入测量值、控制设定值及PID参数进行PID计算。格式如表6-16所示。
说明:
(1)程序中可使用八条PID指令,分别编号0-7,不能重复使用。
(2)使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出,参数表起始地址或指令中指定的PID回路指令号码操作数超出范围)。
(3)PID指令不对参数表输入值进行范围检查。必须保证过程变量和给定值积分项前值和过程变量前值在0.0和1.0之间。
表6-16 PID指令格式
LAD | STL | 说明 |
PID TBL,LOOP | TBL:参数表起始地址VB, 数据类型:字节 LOOP:回路号,常量(0-7), 数据类型:字节 |