PID控制的基本原理PLC实现.docx
《PID控制的基本原理PLC实现.docx》由会员分享,可在线阅读,更多相关《PID控制的基本原理PLC实现.docx(19页珍藏版)》请在冰豆网上搜索。
PID控制的基本原理PLC实现
关于PID控制
一、PID控制的结构
在工程实际中,应用最为广泛的调节器控制规律为比例积分微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近60年的历史了,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制主要和可靠的技术工具。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它设计技术难以使用,系统的控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象﹐或不能通过有效的测量手段来获得系统的参数的时候,便最适合用PID控制技术。
PID控制包含比例、积分、微分三部分,实际中也有PI和PD控制器。
PID控制器就是根据系统的误差利用比例积分微分计算出控制量,图1.1中给出了一个PID控制的结构图:
图1.1 PID控制的结构图
控制器输出和控制器输入(误差)之间的关系在时域中可用公式(1.1)表示如下:
(1.1)
公式中,
表示误差,也是控制器的输入,
是控制器的输出,
、
与
分别为比例系数、积分时间常数及微分时间常数。
(1.1)式又可表示为:
(1.2)
公式中,
和
分别为
和
的拉氏变换,
、
、
分别为控制器的比例、积分、微分系数。
1.1比例(P)控制
比例控制是一种最简单的控制方式。
其控制器的输出与输入误差信号成比例关系。
当仅有比例控制时系统输出存在稳态误差(Steady-stateerror)。
1.2积分(I)控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(SystemwithSteady-stateError)。
为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取关于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分(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.1PID参数的调整
在PID参数进行整定时如果能够有理论的方法确定PID参数当然是最理想的方法,但是在实际的应用中,更多的是通过凑试法来确定PID的参数。
增大比例系数P一般将加快系统的响应,在有静差的情况下有利于减小静差,但是过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏。
增大积分时间I有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长。
增大微分时间D有利于加快系统的响应速度,使系统超调量减小,稳定性增加,但系统对扰动的抑制能力减弱。
在凑试时,可参考以上参数对系统控制过程的影响趋势,对参数调整实行先比例、后积分,再微分的整定步骤。
首先整定比例部分。
将比例参数由小变大,并观察相应的系统响应,直至得到反应快、超调小的响应曲线。
如果系统没有静差或静差已经小到允许范围内,并且对响应曲线已经满意,则只需要比例调节器即可。
如果在比例调节的基础上系统的静差不能满足设计要求,则必须加入积分环节。
在整定时先将积分时间设定到一个比较大的值,然后将已经调节好的比例系数略为缩小(一般缩小为原值的0.8),然后减小积分时间,使得系统在保持良好动态性能的情况下,静差得到消除。
在此过程中,可根据系统的响应曲线的好坏反复改变比例系数和积分时间,以期得到满意的控制过程和整定参数。
如果在上述调整过程中对系统的动态过程反复调整还不能得到满意的结果,则可以加入微分环节。
首先把微分时间D设置为0,在上述基础上逐渐增加微分时间,同时相应的改变比例系数和积分时间,逐步凑试,直至得到满意的调节效果。
2.2PID控制回路的运行
在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.1PID回路指令
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使用STEP7-Micro/WIN32中的PID向导
STEP7–Micro/WIN32提供了PID向导指导你定义一个闭环控制过程的PID算法。
选择菜单命令Tools>InstructionWizard,然后从指令向导窗口中选择PID指令。
3.3PID算法
PID控制器调节输出,保证偏差(e)为零,使系统达到稳定状态,偏差(e)是给定值(SP)和过程变量(PV)的差。
PID控制的原理基于下面的算式:
输出M(t)是比例项积分项和微分项的函数。
其中
M(t)PID回路的输出是时间的函数
KcPID回路的增益
ePID回路的偏差(给定值与过程变量之差)
MinitialPID回路输出的初始值
为了能让数字计算机处理这个控制算式,连续算式必须离散化为周期采样偏差算式,才能用来计算输出值数字。
计算机处理的算式如下:
其中
Mn在第n采样时刻PID回路输出的计算值
KcPID回路增益
en在第n采样时刻的偏差值
en–1在第n-1采样时刻的偏差值(偏差前项)
KI积分项的比例常数
MinitialPID回路输出的初值
KD微分项的比例常数
从这个公式可以看出,积分项是从第1个采样周期到当前采样周期所有误差项的函数,微分项是当前采样和前一次采样的函数,比例项仅是当前采样的函数。
在数字计算机中,不保存所有的误差项,其实也不必要。
由于计算机从第一次采样开始,每有一个偏差采样值必须计算一次输出值,只需要保存偏差前值和积分项前值。
利用计算机处理的重复性,可以化简以上算式为:
其中
Mn在第n采样时刻PID回路输出的计算值
KcPID回_____路增益
en在第n采样时刻的偏差值
en–1在第n-1采样时刻的偏差值(偏差前项)
KI积分项的比例常数
MX积分项前值
KD微分项的比例常数
CPU实际使用以上简化算式的改进形式计算PID输出。
这个改进型算式是:
其中
Mn第n采样时刻的计算值
MPn第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第n采样时刻的过程变量值
PVn–1第n-1采样时刻的过程变量值
为了下一次计算微分项值,必须保存过程变量,而不是偏差在第一采样时刻,初始化为PVn-1=PVn
3.6回路控制类型的选择
在许多控制系统中,只需要一种或二种回路控制类型。
例如只需要比例回路或者比例积分回路。
通过设置常量参数,可先选中想要的回路控制类型。
如果不想要积分回路,可以把积分时间设为无穷大。
即使没有积分作用,积分项还是不为零,因为有初值MX。
如果不想要微分回路,可以把微分时间置为零。
如果不想要比例回路,但需要积分或积分微分回路,可以把增益设为0.0,系统会在计算积分项和微分项时,把增益当作1.0看待。
3.7回路输入的转换和标准化
每个PID回路有两个输入量,给定值(SP)和过程变量(PV)。
给定值通常是一个固定的值,比如是设定的汽车速度。
过程变量是与PID回路输出有关,可以衡量输出对控制系统作用的大小。
在汽车速度控制系统中,过程变量可以是测速仪的输入(衡量车轮转速高低)。
给定值和过程变量都可能是现实世界的值,它们的大小、范围和工程单位都可能不一样。
PID指令在对这些量进行运算以前,必须把他们转换成标准的浮点型实数。
转换的第一步是把16位整数值转成浮点型实数值。
下面的指令序列提供了实现这种转换的方法:
XORDAC0,AC0//清空累加器
MOVWAIW0,AC0//把待变换的模拟量存入累加器
LDW>=AC0,0//如果模拟量为正
JMP0//则直接转成实数
NOT//否则
ORD16#FFFF0000,AC0//先对AC0中值进行符号扩展
LBL0
DTRAC0,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之间的实数。
通常用在第一步转换之后:
/R64000.0,AC0//累加器中的标准化值
+R0.5,AC0//加上偏置使其落在0.01.0之间
MOVRAC0,VD100//标准化的值存入回路表
3.8回路输出值转换成刻度整数值
回路输出值一般是控制变量,比如,在汽车速度控制中,可以是油阀开度的设置。
同时,输出是0.0~1.0之间的标准化了的实数值,在回路输出驱动模拟输出之前,必须把回路输出转换成相应的16位整数。
这一过程,是给定值或过程变量的标准化转换的反过程。
该过程的第一步把回路输出转换成相应的实数值,公式如下:
RScal=(Mn-Offset)*Span
其中:
Rscal回路输出的刻度实数值
Mn回路输出的标准化实数值
Offset单极性为0.0双极性为0.5
Span值域大小可能最大值减去可能最小值
单极性为32,000(典型值)
双极性为64,000(典型值)
这一过程可以用下面的指令序列完成:
MOVRVD108,AC0//把回路输出值移入累加器
–R0.5,AC0//仅双极性有此句
*R64000.0,AC0//在累加器中得到刻度值
下一步是把回路输出的刻度转换成16位整数,可通过下面的指令序列来完成:
ROUNDAC0AC0//把实数转换为32位整数
MOVWAC0,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.15PID指令编程举例
在本例中,有一水箱需要维持一定的水位,该水箱里的水以变化的速度流出。
这就需要有一个水泵以不同的速度给水箱供水,以维持水位不变,这样才能使水箱不断水。
本系统的给定值是水箱满水位的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-28PID回路控制实例
图9-28PID回路控制实例(续)
图9-28PID回路控制实例(续)