1、序言
工业自动化现场,恒压供水,恒温控制,恒转速等技术要求的应用经常会碰到,在自动控制理论中,要实现这些技术,必须要用到的技术就是闭环控制。闭环控制是根据控制对象输出反馈来进行校正的控制方式,它是在测量出实际与计划发生偏差时,按定额或标准来进行纠正的。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。提到闭环控制算法,不得不提PID,它是闭环控制算法中最简单的一种。PID是比例 (Proportion) 积分 ,(Integral) 微分 ,(Differential coefficient) 的缩写,分别代表了三种控制算法。通过这三个算法的组合可有效地纠正被控制对象的偏差,从而使其达到一个稳定的状态。
2、PID控制原理
PID控制原理如下图所示:
PID控制的实质就是根据输入的偏差值,按照比例、积分、微分的函数关系进行运算,运算结果用以控制输出。其连续控制数学模型和离散控制数学模型如下:
在PLC控制中,一般我们通过通讯或者模拟量采集的方式获取数据,而这些数据的采集都需要一定的时间,因此数据内容都是离散的,也无法获取连续的数据参数,接下来我们以离散公式来介绍PID三个控制算法的原理(当然本文介绍的原理仅为作者个人理解的内容,与实际PID控制原理可能有较大偏差,所以仅供参考学习)。
首先假设需要设定几个参数及函数关系:
设定值:需要达到的目标值,记为A,目标值设定后一般调整周期不做变化,是常数;
实际值:当前系统实际的数据,记为B(k),实际值是系统根据传感器采集而来的数据,当PID控制开始运行时,实际值随时间变化而变化;
偏差:设定值A与实际值B(k)之间的偏差,记为e(k)=A-B(k);
其他参数则用公式中的表达式。
2.1、比例控制
比例控制的离散数学模型为u(k)=Kp*e(k),u(k)为输出结果,表示实际值B(k)的变化量,通过一个阶跃响应的例子可以更加清楚的了解比例控制的过程;
初始实际位置在0点,即B(0)=0,设定值A=1,那么偏差值e(0)=1,u(0)=Kp;当PID控制器开始运行时,每个调整周期的偏差值就可以计算出来,例如:第一个周期B(1)=B(0)+u(0)=Kp;e(1)=1-Kp;u(1)=Kp*(1-Kp);第二个周期B(2)=B(1)+u(1)=2Kp-Kp^2;e(2)=(1-Kp)^2;u(2)=Kp*(1-Kp)^2;以此类推,则调整周期内各参数值如下表所示:
闭环调整的最终目的是实际值=设定值,即偏差e(k)=0,根据表格可得,偏差e(n)=(1-Kp)^n,通过数学关系分析,当n趋于无穷大时,e(n)的状态有3种(因为是比例控制,因此可以不考虑Kp=0的情况):
a、Kp>2或者Kp<0,此时1-Kp的绝对值>1,e(n)趋于正无穷大或负无穷大,即实际值与设定值偏差越来越大,调整失败;
b、Kp=2时,1-Kp=-1,则e(n)在1与-1之间震荡,实际值永远到不了设定值;
c、0<Kp<2时,1-Kp的绝对值<1,e(n)趋于0,实际值在误差范围内可以达到设定值。
通过以上分析我们可以得出第一个结论:比例系数在调整过程中需要设定在合理的范围内,否则a和b的情况下会产生震荡,永远无法达到设定值。
在工业现场,很多情况是不允许出现超调,即实际值不能超过设定值,以防出现过载损坏设备的情况,因此,我们在选择比例参数时,只能控制在0和1的区间内。即
e(n)=(1-Kp)^n,(0<Kp<=1)
先来讨论0<Kp<1的情况,根据函数关系,可以得出,Kp值越大,e(n)接近0的趋势就越快,但是这个趋势不能完全使e(n)=0,当然在实际应用中,满足误差精度要求即可达到控制任务。这样我们就能得出比例参数在pid调节中的作用:比例参数大,可以加快调节,能迅速反应误差,从而减小稳态误差。但是,比例控制不能消除稳态误差。过大的比例系数,使系统的稳定性下降,甚至造成系统的不稳定。
再来讨论下Kp=1的情况,当Kp=1时,e(n)=0,这是非常理想的状态,即一步调整到位。但在实际应用中,根本无法做到,如果可以实现,也就不需要用控制器去闭环调节了,比如锅炉的温度,以目前的技术还从30°直接到90°,,再比如电机的转速,也无法从300rpm直接升至2000rpm等等。
比例参数的调整需要根据实际系统控制量与被控制量的关系来设定,如线性关系,非线性关系,正比例关系,反比例关系等,无法用确定的数值来套用,只能根据实际先设定一个数值,再根据反馈结果调整比例参数。
2.2、积分控制
积分控制的离散数学模型为:
首先,单纯从公式分析,在积分时间Tk内,有K个T周期,即T/Tk=1/k,而求和公式则是将Tk时间周期内的所有偏差值求和,记为sum(k),sum(k)/k就是算数平均值的计算方法,记为avg(k),那么积分控制的模型就可以转换为u(k)=Kp*avg(k);
在数理统计中,算数平均值是计算误差的一个重要参数,因此积分控制的作用我们就不难理解了:消除系统的静态误差。
再看其参数值的影响,当积分时间越小,如,Tk=1,那么我们可以发现u(k)=Kp*e(k),就成了一个比例控制,而整体上看,积分控制就是对于偏差平均值的一个比例控制,当积分与比例叠加时,如果积分时间很小,就可以将其近似的看成一个比例控制,而比例系数2*Kp,而在比例控制中我们分析过,比例参数的影响,即当2*Kp过大时,产生较大超调甚至出现震荡等现象,在术语上,可将其定义为积分饱和,因此积分时间不宜过小。
当积分时间趋于无穷大时,T/Tk趋于0,而根据比例控制的分析,在合理的比例参数下,e(n)的值趋于0,所以sum(k)会趋于一个恒定值,所以当Tk值选择无穷大时,avg(k)=0,即u(k)=0,积分作用就很小,甚至没有。
所以,积分参数的作用是消除系统的静态误差,但积分时间的选取不能过小,过小会导致积分饱和,引起响应过程的过大超调。积分时间又不能过大,过大则无法消除系统静态误差,影响系统调节精度。当然,在某些理想状态下,不存在系统静态误差,则可以不用积分控制。
2.3、微分控制
微分控制的离散数学模型为:
首先我们需要理解微分的含义,e(k)是当前周期的偏差值,e(k-1)是上个周期的偏差值,而T是一个周期,(e(k)-e(k-1))/T就可以理解为单位周期内偏差值的变化,即偏差值变化速度的定义,用连续模型可以更直观的理解,d(e(t))/dt就是速度的计算方法。那么有了微分控制,系统调节过程中的变化速率就可以进行调整了。这就是微分控制的作用:改善系统的动态特性,在响应过程中抑制偏差变化方向的改变。
再看其参数的影响,微分作用是在产生误差之前,预先发现有产生误差的趋势时就开始调节,是提前控制,可以最大限度地减少动态误差,使系统控制效果更好。但是微分作用只能作为比例和积分控制的一种补充作用不能起到主导作用。微分作用也不能太强,当微分时间Td过大时,会使系统提前制动,延长调整时间,甚至也会引起系统的不稳定而产生振荡。
3、综述
通过以上内容,我们对PID离散模型有了一个基本的概念,各PID参数的作用分析如下:
a、比例参数的作用:增加系统的响应速度,提高系统的调节精度,但比例参数需要在合理区间内,在区间内,比例系数越大,反应越快,精度越高。在区间外的比例参数会导致系统震荡,不稳定。且比例控制无法消除静态误差,如果系统中存在静态误差,需要配合积分控制使用。
b、积分参数的作用:消除系统的静态误差。但积分时间的选取不能过小,过小会导致积分饱和,引起响应过程的过大超调。积分时间又不能过大,过大则无法消除系统静态误差,影响系统调节精度。
c、微分参数的作用:改善系统的动态特性,微分作用也不能太强,会使系统提前制动,延长调整时间,甚至也会引起系统的不稳定而产生振荡。微分作用只能作为比例和积分控制的一种补充作用不能起到主导作用。
d、三个参数中,比例参数起最主要的作用,但在实际应用中,需要2-3个参数配合,且3个参数各自都需要在合理的范围内,因此在调节时需要根据系统情况和调整曲线不断调整参数,以达到需要的曲线。也就是说我们在调PID参数的过程也是一个PID的控制,是不是很意外呢。
e、关于PID的调整方法,网上有不少的内容,也存在各自的差异,但综合第一步都是先调好比例控制,再去调整积分和微分,这也符合比例参数的主导地位。具体的调整方法需要根据系统和响应,再结合个人经验去试验,说难听点属于凑参数,嘿嘿。
4、备注
以上是作者对于离散PID数学模型的分析,鉴于个人学识和使用经验有限,对这个数学模型的理解可能有些片面,甚至有较大偏差,希望可以跟大家多多交流,也希望有深入研究的大佬批评指正!!接下来我将通过Codesys对以上理解的内容进行验证和仿真,预计下周可以出结果,希望大家多多支持,谢谢!!