PID控制的基本原理(PLC实现)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于PID 控制
一、 P ID 控制的结构
在工程实际中,应用最为广泛的调节器控制规律为比例积分微分控制,简称PID 控制,又称PID 调节。

PID 控制器问世至今已有近60年的历史了,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制主要和可靠的技术工具。

当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它设计技术难以使用,系统的控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID 控制技术最为方便。

即当我们不完全了解一个系统和被控对象﹐或不能通过有效的测量手段来获得系统的参数的时候,便最适合用PID 控制技术。

PID 控制包含比例、积分、微分三部分,实际中也有PI 和PD 控制器。

PID 控制器就是根据系统的误差利用比例积分微分计算出控制量,图1.1中给出了一个PID 控制的结构图:
图 1.1 PID 控制的结构图
控制器输出和控制器输入(误差)之间的关系在时域中可用公式(1.1)表示如下:
])(1)()([)(⎰++=dt t e T dt t de T t e K t u i
d p (1.1) 公式中,)(t
e 表示误差,也是控制器的输入,)(t u 是控制器的输出, p K 、d T 与i T 分别为比例系数、 积分时间常数及微分时间常数。

(1.1)式又可表示为:
)()()(s E s
K s K K s U i d p ++= (1.2) 公式中,)(s U 和)(s E 分别为)(t u 和)(t e 的拉氏变换,p K 、d p d T K K =、i p i T K K =分别
为控制器的比例、积分、微分系数。

1.1 比例(P )控制
比例控制是一种最简单的控制方式。

其控制器的输出与输入误差信号成比例关系。

当仅有比例控制时系统输出存在稳态误差(Steady-state error)。

1.2 积分(I)控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。

为了消除稳态误差,在控制器中必须引入“积分项”。

积分项对误差取关于时间的积分,随着时间的增加,积分项会增大。

这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。

因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。

1.3 微分(D)控制
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。

自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。

其原因是由于存在有较大惯性的组件(环节)和(或)有滞后(delay)的组件,使力图克服误差的作用,其变化总是落后于误差的变化。

解决的办法是使克服误差的作用的变化要有些“超前”,即在误差接近零时,克服误差的作用就应该是零。

这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使克服误差的控制作用等于零,甚至为负值,从而避免了被控量的严重地冲过头。

所以对有较大惯性和(或)滞后的被控对象,比例+微分(PD)的控制器能改善系统在调节过程中的动态特性。

二、如何实现PID控制
在一些系统中,需要进行PID控制,如一些板卡采集系统,甚至在一些DCS和PLC的系统中有时要扩充系统的PID控制回路,而由于系统硬件和回路的限制需要在计算机上增加PID控制回路。

在e尔系统中,实时数据库提供了PID控制点可以满足PID控制的需要。

进入到实时数据库组态,新建点时选择PID控制点。

e尔提供的PID控制可以提供理想微分、微分先行、实际微分等多种控制方式。

进行PID控制时,可以把PID的PV连接在实际的测量值上,OP连接在PID实际的输出值上。

这样,在实时数据库运行时,就可以自动对其进行PID控制。

2.1 PID参数的调整
在PID参数进行整定时如果能够有理论的方法确定PID参数当然是最理想的方法,但是在实际的应用中,更多的是通过凑试法来确定PID的参数。

增大比例系数P一般将加快系统的响应,在有静差的情况下有利于减小静差,但是过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏。

增大积分时间I有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长。

增大微分时间D有利于加快系统的响应速度,使系统超调量减小,稳定性增加,但系统对扰动的抑制能力减弱。

在凑试时,可参考以上参数对系统控制过程的影响趋势,对参数调整实行先比例、后积分,再微分的整定步骤。

首先整定比例部分。

将比例参数由小变大,并观察相应的系统响应,直至得到反应快、超调小的响应曲线。

如果系统没有静差或静差已经小到允许范围内,并且对响应曲线已经满意,则只需要比例调节器即可。

如果在比例调节的基础上系统的静差不能满足设计要求,则必须加入积分环节。

在整定时先将积分时间设定到一个比较大的值,然后将已经调节好的比例系数略为缩小(一般缩小为原值的0.8),然后减小积分时间,使得系统在保持良好动态性能的情况下,静差得到消除。

在此过程中,可根据系统的响应曲线的好坏反复改变比例系数和积分时间,以期得到满意的控制过程和整定参数。

如果在上述调整过程中对系统的动态过程反复调整还不能得到满意的结果,则可以加入微分环节。

首先把微分时间D设置为0,在上述基础上逐渐增加微分时间,同时相应的改变比例系数和积分时间,逐步凑试,直至得到满意的调节效果。

2.2 PID控制回路的运行
在PID控制回路投入运行时,首先可以把它设置在手动状态下,这时设定值会自动跟踪测量值,当系统达到一个相对稳定的状态后,再把它切换到自动状态下,这样可以避免系统频繁动作而导致系统不稳定。

2.3 复杂回路的控制
2.3.1 前馈控制系统
通常的反馈控制系统中,对干扰造成一定后果,才能反馈过来产生抑制干扰的控制作用,因而产生滞后控制的不良后果。

为了克服这种滞后的不良控制,用计算机接受干扰信号后,在还没有产生后果之前插入一个前馈控制作用,使其刚好在干扰点上完全抵消干扰对控制变量的影响,因而又得名为扰动补偿控制。

在e尔的控制系统中,可以把前馈控制计算的结果作为PID控制的输出补偿量OCV,并采用加补偿,这样就形成了一个前馈控制系统了。

2.3.2 纯延迟补偿控制
在实际的控制过程中,由于执行机构和测量装置的延迟,系统有可能是一个纯滞后过程,如对于温度的控制其延迟时间可能多达10多分钟。

这种滞后性质常引起被控对象产生超调或振荡,造成系统不容易达到稳定过程。

因此,可以在控制过程中并联一个补偿环节,用来补偿被控制对象中的滞后部分,这样可以使系统快速达到稳定过程。

纯滞后控制系统是把滞后补偿的结果作为PID控制器的输入补偿量ICV,并作为输入补偿的减补偿。

这样就构成了一个纯滞后的SMITH预测控制回路。

三、PID 指令
在运用PLC对系统进行PID控制时,需要运用PID指令完成PID控制功能。

下面的内容介绍了S7–200系列PLC的指令系统及其实现控制算法的实例。

3.1 PID 回路指令
PID 回路指令运用以回路表中的输入和组态信息进行PID 运算。

使ENO = 0 的错误条件是:SM1.1 (溢出),SM4.3 (运行时间) ,0006 (间接寻址)。

该指令影响下列特殊存储器标志位:SM1.1 (溢出)
输入输出操作数数据类型
TBL VB BYTE
LOOP 常数(0 到7) BYTE
PID 回路指令(包含比例积分微分回路) 是用来进行PID 运算。

但是,可以进行这种PID 运算的前提条件是逻辑堆栈栈顶(TOS) 值必须为1。

该指令有两个操作数:TABLE 和LOOP。

其中,TABLE 是回路表的起始地址;LOOP 是回路号可以是0 到7 的整数。

在程序中最多可以用8条PID指令。

如果两个或两个以上的PID 指令用了同一个回路号,那么即使这些指令的回路表不同,这些PID 运算之间也会相互干涉,产生不可预料的结果。

回路表包含9 个参数,用来控制和监视PID 运算。

这些参数分别是过程变量当前值(PVn) ,过程变量前值(PVn-1),给定值(SPn),输出值(Mn),增益(Kc),采样时间(Ts),积分时间(TI),微分时间(TD) 和积分项前值(MX)。

为了让PID 运算以预想的采样频率工作,PID 指令必须用在定时发生的中断程序中,或者用在主程序中被定时器所控制以一定频率执行。

采样时间必须通过回路表输入到PID 运算中。

3.2 使用STEP 7-Micro/WIN 32 中的PID 向导
STEP 7–Micro/WIN 32 提供了PID 向导指导你定义一个闭环控制过程的PID 算法。

选择菜单命令Tools>Instruction Wizard ,然后从指令向导窗口中选择PID 指令。

3.3 PID 算法
PID 控制器调节输出,保证偏差(e) 为零,使系统达到稳定状态,偏差(e) 是给定值(SP) 和过程变量(PV) 的差。

PID 控制的原理基于下面的算式:输出M (t) 是比例项积分项和微分项的函数。

其中
0()t c c c de M t K e K edt K dt
=*+*+*⎰ M(t) PID 回路的输出是时间的函数
Kc PID 回路的增益
e PID 回路的偏差 (给定值与过程变量之差)
Minitial PID 回路输出的初始值
为了能让数字计算机处理这个控制算式,连续算式必须离散化为周期采样偏差算式,才能用来计算输出值数字。

计算机处理的算式如下:
其中
Mn 在第 n 采样时刻PID 回路输出的计算值
Kc PID 回路增益
en 在第 n 采样时刻的偏差值
en – 1 在第 n-1 采样时刻的偏差值 (偏差前项)
KI 积分项的比例常数
Minitial PID 回路输出的初值
KD 微分项的比例常数
从这个公式可以看出,积分项是从第 1 个采样周期到当前采样周期所有误差项的函数,微分项是当前采样和前一次采样的函数,比例项仅是当前采样的函数。

在数字计算机中,不保存所有的误差项,其实也不必要。

由于计算机从第一次采样开始,每有一个偏差采样值必须计算一次输出值,只需要保存偏差前值和积分项前值。

利用计算机处理的重复性,可以化简以上算式为:
其中
Mn 在第 n 采样时刻PID 回路输出的计算值
Kc PID 回_____路增益
en 在第 n 采样时刻的偏差值 en – 1 在第 n-1 采样时刻的偏差值 (偏差前项)
KI 积分项的比例常数
MX 积分项前值
KD 微分项的比例常数
CPU 实际使用以上简化算式的改进形式计算 PID 输出。

这个改进型算式是:
其中
Mn 第 n 采样时刻的计算值
Min 第n 采样时刻的积分项值
MDn 第n 采样时刻的微分项值
3.4 比例项
比例项MP 是增益(Kc) 和偏差(e) 的乘积。

其中Kc 决定输出对偏差的灵敏度,偏差(e) 是给定值(SP) 与过程变量值(PV) 之差。

CPU 执行的求比例项算式是:
MPn = Kc * (SPn - PVn)
其中
MPn 第n 采样时刻比例项的值
Kc 增益
SPn 第n 采样时刻的给定值
PVn 第n 采样时刻的过程变量值
积分项
积分项值MI 与偏差和成正比CPU 执行的求积分项算式是
MIn =Kc * TS / TI * (SPn - PVn) + MX
其中:
Min 第n 采样时刻的积分项值
Kc 增益
TS 采样时间间隔
TI 积分时间
SPn 第n 采样时刻的给定值
PVn 第n 采样时刻的过程变量值
MX 第n-1 采样时刻的积分项(积分项前值) (也称积分和或偏置)
积分和(MX) 是所有积分项前值之和。

在每次计算出MIn 之后,都要用MIn 去更新mx 。

其中MIn可以被调整或限定。

MX 的初值通常在第一次计算输出以前被设置为Minitial (初值)。

积分项还包括其他几个常数:增益(Kc),采样时间间隔(TS) 和积分时间(TI)。

其中采样时间是重新计算输出的时间间隔,而积分时间控制积分项在整个输出结果中影响的大小。

3.5 微分项
微分项值MD 与偏差的变化成正比。

其计算等式为:
MDn = KC * TD / TS * ((SPn - PVn) - (SPn - 1 - PVn - 1))
为了避免给定值变化的微分作用而引起的跳变,假定给定值不变(SPn=SPn-1)。

这样,可以用过程变量的变化替代偏差的变化,计算算式可改进为:
MDn = KC * TD / TS * (SPn - PVn - SPn + PVn - 1)

MDn = KC * TD / TS * (PVn - 1 - PVn)
其中:
MDn 第n 采样时刻的微分项值
Kc 回路增益
Ts 回路采样时间
TD 微分时间
SPn 第n 采样时刻的给定值
SPn – 1 第n-1 采样时刻的给定值
PVn – 1 第n-1 采样时刻的过程变量值
为了下一次计算微分项值,必须保存过程变量,而不是偏差在第一采样时刻,初始化为PVn -1=PVn
3.6 回路控制类型的选择
在许多控制系统中,只需要一种或二种回路控制类型。

例如只需要比例回路或者比例积分回路。

通过设置常量参数,可先选中想要的回路控制类型。

如果不想要积分回路,可以把积分时间设为无穷大。

即使没有积分作用,积分项还是不为零,因为有初值MX。

如果不想要微分回路,可以把微分时间置为零。

如果不想要比例回路,但需要积分或积分微分回路,可以把增益设为0.0,系统会在计算积分项和微分项时,把增益当作1.0 看待。

3.7 回路输入的转换和标准化
每个PID 回路有两个输入量,给定值(SP) 和过程变量(PV)。

给定值通常是一个固定的值,比如是设定的汽车速度。

过程变量是与PID 回路输出有关,可以衡量输出对控制系统作用的大小。

在汽车速度控制系统中,过程变量可以是测速仪的输入(衡量车轮转速高低)。

给定值和过程变量都可能是现实世界的值,它们的大小、范围和工程单位都可能不一样。

PID 指令在对这些量进行运算以前,必须把他们转换成标准的浮点型实数。

转换的第一步是把16 位整数值转成浮点型实数值。

下面的指令序列提供了实现这种转换的方法:
XORD AC0, AC0 //清空累加器
MOVW AIW0, AC0 //把待变换的模拟量存入累加器
LDW>= AC0, 0 //如果模拟量为正
JMP 0 //则直接转成实数
NOT //否则
ORD 16#FFFF0000, AC0 //先对AC0 中值进行符号扩展
LBL 0
DTR AC0, AC0 //把32 位整数转成实数
转换的下一步是把实数值进一步标准化为0.0~1.0 之间的实数。

下面的算式可以用来标准化给定值或过程变量:
RNorm = (RRaw / Span) + Offset)
其中:
RNorm 标准化的实数值
Rraw 没有标准化的实数值或原值
Offset 单极性为0.0 双极性为0.5
Span 值域大小,可能最大值减去可能最小值
单极性为32,000 (典型值)
双极性为64,000 (典型值)
下面的指令把双极性实数标准化为0.0~1.0 之间的实数。

通常用在第一步转换之后:/R 64000.0, AC0 //累加器中的标准化值
+R 0.5, AC0 //加上偏置使其落在0.0 1.0 之间
MOVR AC0, VD100 //标准化的值存入回路表
3.8 回路输出值转换成刻度整数值
回路输出值一般是控制变量,比如,在汽车速度控制中,可以是油阀开度的设置。

同时,输出是0.0~1.0 之间的标准化了的实数值,在回路输出驱动模拟输出之前,必须把回路输出转换成相应的16 位整数。

这一过程,是给定值或过程变量的标准化转换的反过程。

该过程的第一步把回路输出转换成相应的实数值,公式如下:
RScal = (M n - Offset) * Span
其中:
Rscal 回路输出的刻度实数值
Mn 回路输出的标准化实数值
Offset 单极性为0.0 双极性为0.5
Span 值域大小可能最大值减去可能最小值
单极性为32,000 (典型值)
双极性为64,000 (典型值)
这一过程可以用下面的指令序列完成:
MOVR VD108,AC0 //把回路输出值移入累加器
–R 0.5,AC0 //仅双极性有此句
*R 64000.0,AC0 //在累加器中得到刻度值
下一步是把回路输出的刻度转换成16 位整数,可通过下面的指令序列来完成:ROUND AC0 AC0 //把实数转换为32 位整数
MOVW AC0, AQW0 //把16 位整数写入模拟输出寄存器
3.9 正作用或反作用回路
如果增益为正,那么该回路为正作用回路。

如果增益为负,那么是反作用回路。

对于增益为零的积分或微分控制来说,如果指定积分时间、微分时间为正,就是正作用回路;指定为负值,则是反作用回路。

3.10 变量和范围
过程变量和给定值是PID 运算的输入值,因此在回路表中,这些值只能被回路指令读而不能改写。

输出变量是由PID 运算产生的,所以在每一次PID 运算完成之后,需更新回路表中的输出值,输出值被限定在0.0~1.0 之间。

当PID 指令从手动方式转变到自动方式时,回路表中的输出值可以用来初始化输出值。

如果使用积分控制,积分项前值要根据PID 运算结果更新。

这个更新了的值用作下一次PID 运算的输入,当输出值超过范围(大于1.0 或小于0.0),那么积分项前值必须根据下列公式进行调整:
MX = 1.0 - (MPn + MDn) 当计算输出Mn > 1.0

MX = - (MPn + MDn) 当计算输出Mn < 0.0
其中
MX 经过调整了的积分和(积分项前值)
MPn 第n 采样时刻的比例项值
MDn 第n 采样时刻的微分项值
Mn 第n 采样时刻的输出值
这样调整积分前值,一旦输出回到范围后,可以提高系统的响应性能。

而且积分项前值也要限制在0.0~1.0 之间,然后在每次PID 运算结束之后,把积分项前值写入回路表,
以备在下次PID 运算中使用。

用户可以在执行PID 指令以前修改回路表中积分项前值。

在实际运用中,这样做的目的是找到由于积分项前值引起的问题。

手工调整积分项前值时,必须小心谨慎,还应保证写入的值在0.0~1.0 之间。

回路表中的给定值与过程变量的差值( ) 是用于PID 运算中的差分运算,用户最好不要去修改此值。

3.11 控制方式
S7–200 的PID 回路没有设置控制方式,只要PID 块有效,就可以执行PID 运算。

在这种意义上说,PID 运算存在一种“自动”运行方式。

当PID 运算不被执行时,我们称之为“手动”方式。

同计数器指令相似,PID 指令有一个使能位。

当该使能位检测到一个信号的正跳变(从0到1), PID指令执行一系列的动作,使PID 指令从手动方式无扰动地切换到自动方式。

为了达到无扰动切换,在转变到自动控制前,必须用手动方式把当前输出值填入回路表中的Mn 栏。

PID 指令对回路表中的值进行下列动作,以保证当使能位正跳变出现时,从手动方式无扰动切换到自动方式:
● 置给定值(SPn) 过程变量(PVn)
● 置过量变量前值(PVn-1) 过程变量现值(PVn)
● 置积分项前值(MX) 输出值(Mn)
PID 使能位的默认值是1,在CPU 启动或从STOP 方式转到RUN 方式时建立。

CPU 进入RUN 方式后首次使PID 块有效,没有检测到使能位的正跳变,那么就没有无扰动切换的动作。

3.12 报警与特殊操作
PID 指令是执行PID 运算的简单而功能强大的指令。

如果其他过程需要对回路变量进行报警等特殊操作,那么可以用CPU 支持的基本指令实现这些特殊操作功能。

3.13 出错条件
如果指令指定的回路表起始地址以及回路号操作数超出范围,那么在编译期间,CPU 令产生编译错误(范围错误),从而编译失败。

PID 指令不检查回路表中的值是否在范围之内,所以必须小心操作以保证过程变量和设定值不超界。

PID 指令不检查回路表中的值是否超界,你必须保证过程变量和设定值(以及偏置和前一次过程变量) 必须在0.0 到 1.0 之间。

如果PID 计算的算术运算发生错误,那么特殊存储器标志位SM1.1 (溢出或非法值) 会被置1,并且中止PID 指令的执行。

(要想消除这种错误,单靠改变回路表中的输出值是不够的,正确的方法是在下一次执行PID 运算之前,改变引起算术运算错误的输入值,而不是更新输出值)。

3.14 回路表
36 个字节的回路表的格式如表9-19 所示
表9-19 回路表格式
3.15 PID 指令编程举例
在本例中,有一水箱需要维持一定的水位,该水箱里的水以变化的速度流出。

这就需要有一个水泵以不同的速度给水箱供水,以维持水位不变,这样才能使水箱不断水。

本系统的给定值是水箱满水位的75% 时的水位,过程变量由漂浮在水面的水位测量仪给出。

输出值是进水泵的速度,可以从允许最大值的0% 变到100%。

给定值可以预先设定后直接输入到回路表中,过程变量值是来自水位表的单极性模拟量,回路输出
值也是一个单极性模拟量,用来控制进水泵速度。

这两个模拟量的范围是0.0~1.0,分辨率为1/32000 (标准化)。

在本系统中,只使用比例和积分控制,其回路增益和时间常数可以通过工程计算初步确定。

但还需要进一步调整以达到最优控制效果。

初步确定的增益和时间常数为:KC是0.25
TS 是0.1 秒
TI 是30 分钟
系统启动时,关闭出水口,用手动控制进水泵速度,使水位达到满水位的75% ,然后打开出水口,同时水泵控制从手动方式切换到自动方式。

这种切换由一个输入的数字量控制,描述如下:
I0.0 位控制手动到自动的切换,0 代表手动;1 代表自动。

当工作在手动控制方式下,可以把水泵速度(0.0~1.0 之间的实数) 写到VD108 (VD108 是回路表中保存输出的寄存器)。

图9-28 是本控制实例的程序
图9-28 PID 回路控制实例
图 9-28 PID 回路控制实例 (续)
图9-28 PID回路控制实例 (续)。

相关文档
最新文档