PID控制算法时工业控制中广为运用的一种算法,已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象﹐或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制,实际中也有PI和PD控制。PID控制就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制。
调节作用快,系统一出现偏差,调节器立即将偏差放大1/P倍输出。缺点是系统存在余差比例带越大,过渡过程越平稳,但余差越大,比例带越小,过渡过程易振荡,比例带太小时,就可能出现发散振荡。
比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。
积分调节作用的输出变化与输入偏差的积分成正比,积分调节作用的输出不仅取决与偏差信号的大小,还取决于偏差存在的时间,只要有偏差存在,尽管偏差可能很小,但它存在的时间越长,输出信号就越大,只有消除偏差,输出才停止变化。
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
微分调节的输出是与被调量的变化率成正比。在比例微分调节作用下,有时尽管偏差很小,但其变化速度很快,则微分调节器就有一个较大的输出。
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
数字PID算法时相对于模拟PID控制而言的,它是连续控制系统中技术成熟、应用广泛的一种控制算法。一方面由于已成典型结构,且参数整定方便,结构改变灵活,对于难以得到精确数学模型的对象也具有较满意的适应性;另一方面此种算法易于通过单片机等微控制器实现[3]。
数字PID控制算法分为位置式PID控制算法和增量式PID控制算法。
位置式PID控制算法的连续表达式为:
将式离散化即可以用差分方程课的在采样时刻t=kT的表达式:
式中:
K为采样序号
u(k)为第k次采样的输出值
e(k)为第k次采样的偏差量
T为采样周期
根据z变换的性质
将式进行z变换可得:
由式得到数字式PID控制器的Z传递函数为
在位置式PID控制系统中,计算机的输出量u(k)直接去控制执行机构u(k)和执行机构的位置式一一对应的。采用数字控制方法进行实现是就要求采样周期T和系统时间常数比较充分小,采样的周期越短,那么数字模拟就越精确,控制效果就越能够接近于连续控制。然而在实际的控制系统中采样周期收到采样芯片的速度限制,同时由于是全量输出,每次的输出均与过去的状态有关,计算时需要对采样数据进行大量的运算和存储,这个在嵌入式控制系统中很难实现,而且由于输出量与控制量是一一对应关系,一旦程序出现问题将引起控制系统的巨大波动。为了解决这个问题出现了增量式PID控制算法。
增量式PID算法的控制算式为:
又
式可以进一步简化得:
式中:
由增量式的PID表达式可知,增量式PID算法的控制增量只与过去的三组误差量有关。因此在程序的实现上就容易很多。同时需要存储和处理的数据量也大大降低,对处理器的处理速度和存储要求也就大大降低,因此增量式PID控制算法是嵌入式控制系统中普遍使用的一种算法。
在本课题中由于CPLD内部没有硬件乘法器,不适合进行大规模的运算因此主要的算法由STM32来实现。由于采用PWM进行控制,因此需要对多个周期的数据求平均值之后才能得到稳定的AD值。在设计中AD的采样速率为144K,PWM的频率为12K,综合采样精度和系统的灵敏度要求,选择采样128次求平均输出,这样实际STM32能够读取到的AD值更新频率为1125Hz,能够满足系统反应灵敏度的要求,同时由于CPLD内部没有硬件乘法器,128次求平均只需要将最后的累加结果丢掉低七位即可,避免使用了乘法器,减小了对CPLD的使用。在STM32的程序设计中,PID控制在中断实现,由于AD值的更新频率为1125Hz,因此设置定时器进入中断频率为1KHz,进入中断后读取CPLD中存储的AD值,根据PID参数计算出占空比参数的增量,将占空比参数重新CPLD完成一次PID控制。算法流程图如图 5.1所示。
PID参数整定是控制系统设计的核心内容。它是根据被控对象的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID的参数整定方法有很多,主要分为两大类:第一大类是理论计算正定方法,通过控制系统的数学模型,经过理论计算确定控制系统。第二大类是工程整定的方法,此方法主要以来工程经验,直接在系统的实验调试中进行,通过大量的测试来逐步确定控制参数。
在实际应用中很多时候很难直接确定被控系统的数学模型,而且由于控制方式的不同和受实际控制装置的影响无法通过理论计算直接确定控制参数,因此在实际工程应用中多采用工程整定的方法来确定控制参数,在本课题中也使用这种方法。
PID参数工程整定方法的基本原则为:
(1) 在输出不震荡时,增大比例增益P。
(2) 在输出不震荡时,减小比例增益Ti。
(3) 在输出不震荡时,增大比例增益Td。
根据以上原则,实际实施过程如下:
(1) 确定采样周期,先进行简单跟随控制。可以通过示波器测量PWM波占空比的波形来观察调节情况,也可以通过串口输出PWM参数进行观察,在实际调试中这两种方法同时采用。
(2) 在实现上一步的基础之上,加入P控制,通过实验确定一个能够不让系统失调的P参数。
(3) 在实现上一步的基础之上,逐步小范围增大P参数,直至系统失调或震荡,再逐步减小P参数,直至系统恢复闭环控制状态,记下此时的P参数,设定系统的比例增益P为当前记录值的60%~70%,至此完成P参数调节。
(4) P参数确定后用同样的方法测试Ti参数,设定积分时间常数为恢复调节时Ti参数值的150%~180%,完成积分时间常数Ti调节。
(5) 用同样的方法确定微分时间常数,值取不振荡时的30%。
(6) 以上参数确定后对系统进行空载和不同负载下进行连调,根据调节效果对参数进行微调。
至此,完成了PID控制参数的确定,实际应用中由于控制对象的变化和干扰误差的存在,在更换控制对象时需要对系统进行参数整定。
带死区的PID控制算法是为了解决控制动作过于频繁,消除由于频繁动作引起的震荡而设计,器主要控制思想为控制量小于一定范围时忽略此控制量,大于一个上限时保持为一个定量,响应的控制算式为:
死区和是一个可调的参数,需要根据系统的实际测试进行调节若太小则系统的控制动作过于频繁容易形成震荡,达不到稳定控制被控对象的目的,反之则系统将产生较大的滞后。太小则会降低系统响应的灵敏度,如果太大当系统中出现干扰时,容易造成失控。带死区的PID控制算法在程序实现上较为简单,只需要对控制量进行简单判断即可,同时合适的参数配置可以改善系统的控制效果,增强系统的抗干扰能力,是本课题中最先使用的一种改进算法。
PID控制算法中引入积分的目的是为了消除静态误差,提高控制精度。但是由于在工业控制系统中一方面由于干扰的存在另一方面在控制系统的启动、结束或者大幅度调整时,短时间会有很大的偏差,此偏差并不能反应控制量的实际状态但是根据积分作用仍然会进行积分累积,引起系统的超调甚至震荡,这在本课题中是绝对不允许的,因此在原有PID控制算法的基础之上引入积分分离PID控制算法。
积分分离控制的基本原理是,当控制量与设定值偏差较大时,取消积分作用,以免由于积分作用是系统稳定性降低,超调量增大;当被控量接近给定值时,引入积分控制,以便消除静差,提高控制精度[17]。积分分离控制算法可以表示为:
控制算法的程序框图如图 5.2所示。
在PID控制系统中,引入微分信号来改善系统的动态特性,加快系统的动作速度,减少调节时间,但也易引入高频干扰。同时由于微分项的输出仅在一个周期内起到激励作用,对于时间常数较大的系统,其调节作用较小,不能够达到反应变化趋势提前控制误差的目的。同时由于干扰等因素的存在,信号变化速率过快时容易造成数据溢出,对执行机构造成不利的影响,为了克服以上缺点,在PID算法中加一个低通滤波器将低通滤波器加载微分环节上,构成不完全微分PID控制[18]。
将式离散化可得:
写成微分方程为:
将式离散化可得
式中T为采样时间为滤波器系数,和分布为积分时间常数和微分时间常数,令,则;则,不完全微分项为:
由式即可得到不完全微分PID控制的算法表达。从式中也可以看出,不完全微分项在原有的基础之上有一个的衰减,同时加入了上一周期的微分项,有效解决了原有微分项的不足。