PID控制原理
PID算法是最早发展起来的控制策略之一,由于其算法简单、鲁棒性(系统抵御各种扰动因素——包括系统内部结构、参数的不确定性,系统外部的各种干扰等的能力)好及可靠性高而被广泛地应用于过程控制和运动控制中。尤其是随着计算机技术的发展,数字PID控制被广泛地加以应用,不同的PID控制算法其控制效果也各有不同。
将偏差的比例(Proportion)、积分(Integral)和微分(Differential)通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器称PID控制器。
模拟PID控制原理
在模拟控制系统中,控制器最常用的控制规律是PID控制。 常规的模拟PID控制系统原理框图如图所示。
比例 + r(t) + e(t) + 积分
u(t) 被控对象 y(t) - + 微分
模拟PID控制系统原理图
该系统由模拟PID控制器和被控对象组成。图中, r(t)是给定值, y(t)是系统的实际输出值,给定值与实际输出值构成控制偏差e(t)
(te) = r(t) ? y(t)(式1-1)
e (t)作为PID控制的输入,u(t)作为PID控制器的输出和被控对象的输入。所以模拟PID控制器的控制规律为
u(t) =Kp [e(t) +dt+Td](式1-2)
其中:Kp――控制器的比例系数
Ti--控制器的积分时间,也称积分系数 Td――控制器的微分时间,也称微分系数
1、比例部分
比例部分的数学式表示是:Kp*e(t)
在模拟PID控制器中,比例环节的作用是对偏差瞬间作出反应。偏差一旦产生控制器立即产生控制作用,使控制量向减少偏差的方向变化。控制作用的强弱取决于比例系数Kp,比例系数Kp越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是Kp越大,也越容易产生振荡,破坏系统的稳定性。故而,比例系数Kp选择必须恰当,才能过渡时间少,静差小而又稳定的效果。
2、积分部分
积分部分的数学式表示是:
从积分部分的数学表达式可以知道,只要存在偏差,则它的控制作用就不断的增加;只有在偏差e(t)=0时,它的积分才能是一个常数,控制作用才是一个不会增加的常数。可见,积分部分可以消除系统的偏差。
积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数Ti越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数会减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。当Ti较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定Ti。
3、微分部分
微分部分的数学式表示是:Kp*Td
实际的控制系统除了希望消除静态误差外,还要求加快调节过程。在偏差出现的瞬间,或在偏差变化的瞬间,不但要对偏差量做出立即响应(比例环节的作用),而且要根据偏差的变化趋势预先给出适当的纠正。为了实现这一作用,可在PI控制器的基础上加入微分环节,形成PID控制器。
微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波。 微分部分的作用由微分时间常数Td决定。Td越大时,则它抑制偏差e(t)变化的作用越强;Td越小时,则它反抗偏差e(t)变化的作用越弱。微分部分显然对系统稳定有很大的作用。 适当地选择微分常数Td,可以使微分作用达到最优。
数字式PID控制算法可以分为位置式PID和增量式PID控制算法。
1.位置式PID算法
由于计算机控制是一种采样控制,它只能根据采样时刻的偏差计算控制量,而不能像模拟控制那样连续输出控制量量,进行连续控制。由于这一特点(式1-2)中的积分项和微分项不能直接使用,必须进行离散化处理。离散化处理的方法为:以T作为采样周期,作为采样序号,则离散采样时间对应着连续时间,用矩形法数值积分近似代替积分,用一阶后向差分近似代替微分,可作如下近似变换:
t=kT (k=0,1,2······)
上式中,为了表示的方便,将类似于e(kT)简化成ek等。 将上式代入(式1-2),就可以得到离散的PID表达式为 (式2-2)
或
(式2-3)
其中 k――采样序号,k=0,1,2,??;
――第k次采样时刻的计算机输出值; ――第k次采样时刻输入的偏差值;
――第k-1次采样时刻输入的偏差值; ――积分系数,; ――微分系数,;
如果采样周期足够小,则(式2-2)或(式2-3)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。
(式2-2)或(式2-3)表示的控制算法式直接按(式1-2)所给出的PID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法。 这种算法的缺点是:由于全量输出,所以每次输出均与过去状态有关,计算时要对进行累加,工作量大;并且,因为计算机输出的对应的是执行机构的实际位置,如果计算机出现故障,输出的将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实生产际中是不允许的。
2.增量式PID算法
所谓增量式PID是指数字控制器的输出只是控制量的增量。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式PID控制算法进行控制。 开始
k) =K P+ KI+ K D ?u ( 数据初始化 u (k )=u (k - 1) +? u ) (k采集系统输出 计算系统偏差 Y u( k) >= u max? u (k )=umax e( k)
N KP= k p×[ e( k) -e ( k- 1) ] Y u( k) < = u min? u (k )=umin
N KI= k i×e( k )
u( k- 1 )=u (k )
KD= k d×[ e( k ) - 2e ( k - 1) +e ( k -2 ) ] 返回
增量式PID控制算法可以通过(式2-2)推导出。由(式2-2)可以得到控制器的第k-1个采样时刻的输出值为: (式2-4)
将(式2-2)与(式2-4)相减并整理,就可以得到增量式PID控制算法公式为:
(式2-5)
增量式PID控制算法与位置式PID算法(式2-2)相比,计算量小的多,因此在实际中得到广泛的应用。
而位置式PID控制算法也可以通过增量式控制算法推出递推计算公式:
(式2-6)
(式2-6)就是目前在计算机控制中广泛应用的数字递推PID控制算法。
在MCGS工控组态软件(是北京昆仑通态自动化软件科技有限公司研发的一套基于Windows平台的,用于快速构造和生成上位机监控系统的组态软件系统,主要完成现场数据的采集与监测、前端数据的处理与控制,可运行于Microsoft Windows 95/98/Me/NT/2000/xp等操作系统。)中对应的脚本程序如下:
偏差2=偏差1 '上上次偏差 偏差1=偏差 '上次偏差 偏差=设定值-测量值 '本次偏差 比例=比例系数*(偏差-偏差1) '比例作用 if 积分时间=0 then '积分作用 积分=0 else
积分=比例系数*采样周期*偏差/积分时间 endif
微分=比例系数*微分时间*(偏差-2*偏差1+偏差2)/采样周期 '微分作用 增量=比例+积分+微分 '增量输出 位置=前次位置+增量 '位置输出 if 位置>=位置最大值then 位置=位置最大值 '超出位置最大值,位置=位置最大值 if 位置<=位置最小值then 位置=位置最小值 '超出位置最小值,位置=位置最小值 前次位置=位置 '为下循环准备
3. 带死区的PID控制(SPID)算法
在控制系统中为了避免控制动作过于频繁,设置一个可调的参数e0,当系统偏差
e 时,控制量的增量 u ( k ) ? 0,即此时控制系统维持原来的控制量;当系统偏差 e( k ) ?0时,控制量的增量 e ( k ) 0 依据增量式标准PID算法给出。 ? eu(k)在MCGS工控组态软件中对应的脚本程序如下:
偏差2=偏差1 '上上次偏差 偏差1=偏差 '上次偏差 偏差=设定值-测量值 '本次偏差 if 偏差>-0.5 and 偏差<0.5 then '偏差小于阈值 增量=0 '增量为零 else
比例=比例系数*(偏差-偏差1) '否则计算比例作用 if 积分时间=0 then
积分=0 '如果积分时间=0,则无积分作用 else
积分=比例系数*采样周期*偏差/积分时间 '否则计算积分作用 endif
微分=比例系数*微分时间*(偏差-2*偏差1+偏差2)/采样周期'计算微分作用 增量=比例+积分+微分 '增量输出 endif
位置=前次位置+增量 '位置输出
if 位置>=位置最大值then 位置=位置最大值 '超出位置最大值,位置=位置最大值 if 位置<=位置最小值then 位置=位置最小值 '超出位置最小值,位置=位置最小值 前次位置=位置 '为下循环准备
4.积分分离 PID控制(IPID)算法
e(k)??积分分离PID算法是人为地设定一个阈值?,当系统偏差 时,即系统的偏差较大时,只
采用PD控制,这样可以避免较大的超调,又使系统有较好的快速性;当 时,即系统的e(k)??偏差较小时,加入积分作用,采用PID控制,可保证系统有较高的精度。 在MCGS工控组态软件中对应的脚本程序如下:
偏差2=偏差1 '上上次偏差 偏差1=偏差 '上次偏差 偏差=设定值-测量值 '本次偏差 比例=比例系数*(偏差-偏差1) '比例作用
if 积分时间=0 or 偏差>1 or 偏差<-1 then '如果积分时间=0或偏差太大 积分=0 '无积分作用 else
积分=比例系数*采样周期*偏差/积分时间 '否则计算积分作用 endif
微分=比例系数*微分时间*(偏差-2*偏差1+偏差2)/采样周期 '微分作用 增量=比例+积分+微分 '增量输出 位置=前次位置+增量 '位置输出
if 位置>=位置最大值then 位置=位置最大值 '超出位置最大值,位置=位置最大值 if 位置<=位置最小值then 位置=位置最小值 '超出位置最小值,位置=位置最小值 前次位置=位置 '为下循环准备
5.不完全微分PID控制(DPID)算法
不完全微分PID控制算法时为了避免误差扰动突变时微分作用的不足。其方法是在PID算法 1G(s)?中加入一个一阶惯性环节(低通滤波器) f ,即构成不完全微分PID控制算法,
1?Tfs
在此基础上进行离散化后可得出其递推公式。
在MCGS工控组态软件中对应的脚本程序如下:
偏差2=偏差1 '上上次偏差 偏差1=偏差 '上次偏差 偏差=设定值-测量值 '本次偏差 比例=比例系数*(偏差-偏差1) '比例作用
if 积分时间=0 then '如果积分时间=0无积分作用 积分=0 else
积分=比例系数* 采样周期*偏差/积分时间 '否则计算积分作用 endif
if 微分时间=0 then '如果微分时间=0无微分作用 微分=0