发表于:2009-08-18 13:27:30
楼主
理解PID
比例-积分-微分控制规律是工业上最常用的控制规律。人们一般根据比例-积分-微分的英文缩写,将其简称为PID控制。即使在更为先进的控制规律广泛应用的今天,各种形式的PID控制仍然在所有控制回路中占85%以上。
在PID 控制中,积分控制的特点是:只要还有余差(即残余的控制偏差)存在,积分控制就按部就班地逐渐增加控制作用,直到余差消失。所以积分的效果比较缓慢,除特殊情况外,作为基本控制作用,缓不救急。
微分控制的特点是:尽管实际测量值还比设定值低,但其快速上扬的冲势需要及早加以抑制,否则,等到实际值超过设定值再作反应就晚了,这就是微分控制施展身手的地方了。作为基本控制使用,微分控制只看趋势,不看具体数值所在,所以最理想的情况也就是把实际值稳定下来,但稳定在什么地方就要看你的运气了,所以微分控制也不能作为基本控制作用。
比例控制没有这些问题,比例控制的反应快,稳定性好,是最基本的控制作用,积分、微分控制是对比例控制起增强作用的,极少单独使用。在实际使用中比例和积分一般一起使用,比例承担主要的控制作用,积分帮助消除余差。微分只有在被控对象反应迟缓,需要在开始有所反应时,及早补偿,才予以采用。只用比例和微分的情况很少见。
A5系列PLC支持浮点数运算,可以在A5上方便地实现PID功能。
程序工作原理
PID方程式
Mn = MPn + Min + MDn
输出 = 比例项 + 积分项 + 微分项
其中: Mn 第n采样时刻的计算值
MPn 第n采样时刻的比例项值
MIn 第n采样时刻的积分项值
MDn 第n采样时刻的微分项值
PID方程的比例项
比例项MP是增益(Kc)和偏差(e)的乘积,其中Kc决定输出对偏差的灵敏度,偏差(e)是给定值(SP)与过程变量(PV)之差,求比例项的算式是:
MPn = Kc * ( SPn - PVn )
其中: MPn 第n采样时刻的比例项值
Kc 增益
SPn 第n采样时刻的给定值
PVn 第n采样时刻的过程变量值
PID方程的积分项
积分项值MI与偏差和成正比,求积分项的算式是:
MIn = Kc * Ts / Ti * (SPn - PVn ) + MX
其中: MIn 第n采样时刻的积分项值
Kc 增益
Ts 采样时间间隔
Ti 积分时间
SPn 第n采样时刻的给定值
PVn 第n采样时刻的过程变量值
MX 第n-1采样时刻的积分值(积分项前值,也称积分和或偏置)
PID方程的微分项
微分项值MD与偏差的变化成正比,求解微分项的算式是:
MDn = Kc * Td / Ts * ((SPn-PVn) - ( SPn-1 - PVn-1))
为了避免给定值变化的微分作用而引起的跳变,假定给定值不变(SPn=SPn-1),这样,可以用过程变量的变化替代偏差的变化,计算算式可改进为:
MDn = Kc * Td / Ts * (PVn-1 - PVn)
其中: MDn 第n采样时刻的微分项值
Kc 增益
Ts 采样时间间隔
Td 微分时间
SPn 第n采样时刻的给定值
SPn-1 第n-1采样时刻的给定值
PVn 第n采样时刻的过程变量值
PVn-1 第n-1采样时刻的过程变量值
第一次采样设定PVn-1= PVn
程序实例
下面,我们举一个例子,用A5-CPU224XP来实现一个PID调节。假设输入的信号为AIW2,输出为AQW2,给定值为16000。首先,分步来计算各个变量。
地址分配
地址 变量名 格式 类型 范围 说明
VD1000 PVn 实数 输入 0.0--1.0 过程变量
VD1004 SPn 实数 输入 0.0--1.0 设定值
VD1008 Mn 实数 输入/输出 0.0--1.0 输出值
VD1012 Kc 实数 输入 可正可负 增益常数
VD1016 Ts 实数 输入 必须为正 采样时间,单位为秒
VD1020 Ti 实数 输入 必须为正 积分时间,单位为分钟
VD1024 Td 实数 输入 必须为正 微分时间,单位为分钟
VD1028 MX 实数 输入/输出 0.0--1.0 积分项前项
VD1032 PV(n-1) 实数 输入/输出 0.0--1.0 前一次采样过程变量值
VD1036 MPn 实数 输入/输出 0.0--1.0 比例项
VD1040 MIn 实数 输入/输出 0.0--1.0 积分项
VD1044 MDn 实数 输入/输出 0.0--1.0 微分项
VW1048 Round(Ts*10),定时器用时间长度
VD1060 实数 临时变量
VD1064 实数 临时变量
VD1068 实数 临时变量
用户预先指定值
用户需要预先指定如下变量(均为实数):
VD1008 Mn
VD1012 Kc
VD1016 Ts
VD1020 Ti
VD1024 Td
VD1028 MX
将AIW2进行标准化得到PVn
LD SM0.0
ITD AIW2 , VD1060
DTR VD1060 , VD1064
/R VD1064 , 32767.0 , VD1000
注意到第一次采样设定PVn-1= PVn
LD SM0.0
MOVR VD1000 , VD1032
将给定值进行标准化得到SPn(若给定值不变,仅计算一次即可),也可以通过文本等设定给定值,但一定要设定为标准化的给定值(0.0—1.0之间)
LD SM0.0
/R 16000 , 32767 , VD1004
计算MPn
MPn = Kc * ( SPn - PVn )
LD SM0.0
-R VD1004 , VD1000 , VD1060
*R VD1060 , VD1012 , VD1036
计算MIn
MIn = Kc * Ts / Ti * (SPn - PVn ) + MX
LD SM0.0
*R VD1036 , VD1016 , VD1060
/R VD1060 , VD1020 , VD1064
/R VD1064 , 60.0 , VD1068
+ R VD1068 , VD1028 , VD1040
将MIn保存为下一次的MX
LD SM0.0
MOVR VD1040 , VD1028
计算MDn
MDn = Kc * Td / Ts * (PVn-1 - PVn)
LD SM0.0
-R VD1032 , VD1000 , VD1060
*R VD1060 , VD1024 , VD1064
*R VD1064 , VD1012 , VD1068
*R VD1068 , 60.0 , VD1060
/R VD1060 , VD1016 , VD1044
计算Mn
Mn = MPn + MIn + MDn
LD SM0.0
+R VD1036 , VD1040 , VD1060
+R VD1060 , VD1044 , VD1