资源描述
安阳师范学院本科学生毕业论文基于MATLAB的先进PID算法研究 作者 系(院) 物理与电气工程学院 专业电气工程及自动化 年级 2011 级 学号 指导教师 高 相 铭 日期2015年5月 学生诚信承诺书本人郑重承诺:所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。签名:日期:论文使用授权说明本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文.签名:导师签名:日期: 基于MATLAB的先进PID算法研究温 峰(安阳师范学院 物理与电气工程学院 河南 安阳 455002)摘 要: 本文选取积分分离、变速积分和不完全微分三种非标准PID控制算法为代表,简要介绍了先进PID控制算法的原理及实现过程,阐述了常规PID控制算法的局限性,并分析了几种先进PID控制与常规的PID控制的不同。实验验证主要采用MATLAB仿真的方式,使用M语言编程实现各种PID控制进行对比,论证先进PID控制较常规PID控制的优越性。关键词: PID控制;数字控制;饱和现象; 1引言PID控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高的显著优点而广泛应用于过程控制和运动控制中,在工业控制领域中占有非常重要的地位。 随着科技进步,人们对控制品质要求也越来越高。在实际生产现场中,由于受到参数整定方法的限制,常规PID控制器往往整定不良、性能欠佳,对运行工况的适应性很差,这就极大的限制了传统PID控制器的应用。计算机在控制系统中的应用使这种状况有所改变。为了不断满足工业过程控制的各种要求,人们不断利用计算机对PID控制器的算法进行改进,而对常规PID控制算法的改进就称之为先进PID。2 常规PID控制 PID控制系统主要由被控对象和控制器两部分组成.PID控制的过程为:控制系统将输入值与输出值做差,得到系统偏差,对偏差进行比例、积分和微分运算,再将处理后结果相加得到总控制量,再对被控对象进行控制,构成PID控制器。PID控制是基于对偏差“过去”、“现在”和“未来”信息估计的一种线性控制算法.常见模拟PID控制系统如图21所示.微分 积分 被控对象 比例 c(t)r(t)+ + + 图2-1 PID控制方框图 图21中,PID控制器的输出是系统误差分别经过各环节处理后线性组合的关系,表达式如下: (21)其传递函数形式通常为: (2-2)式中,是比例增益,是积分时间常数,是微分时间常数。PID控制器各校正环节的作用如下:比例环节:代表了现在的信息,即时地、成比例地反映控制系统的偏差信号。偏差一旦产生,控制器立即产生控制作用,以减少偏差,使过渡过程反应迅速。缺点是稳定性下降,甚至造成系统的不稳定。 积分环节:代表了过去的信息,通过计算误差信号的积分值并乘以一个积分系数,来纠正信号的偏差。误差值是过去一段时间的误差和。主要用于消除静差、提高系统的无差度,改善系统的稳定性能.缺点就是加入积分调节会使系统稳定性下降,动态响应变慢。 微分环节:代表了未来的信息,计算误差的一阶导,并与微分系数相乘。这个导数表示了误差信号的改变速度,也会对系统的改变作出反应。反映偏差信号的变化趋势,并能在偏差信号值变得太大之前,在系统中引入一个早期的修正信号,从而加快系统的动作速度,减少调节时间。缺点就是对噪声干扰有放大作用。在实际设计PID控制器时,通常是在微控制器中实现的。要用计算机实现连续系统中的模拟PID控制规律,就要对其进行离散化处理,变成数字PID控制器。在采样周期远小于信号变化周期时,可作如下近似: (2-3) 式中,T为采样周 期;k为采样序号,k=1,2,k 这时,控制器的输出与输入之间的关系为: (24)其中:、分别为比例系数、积分时间常数、微分时间常数;T为采样周期;k为采样序号,k=0,1,2,;为第k次采样输出值,为第k次采样输出偏差值,为第k -1次采样输出偏差值。 其控制系统如图22所示: PID控制算法D/A被控对象执行机构yd(t)+ 图22 数字PID控制系统方框图 这种PID控制被称为位置式PID控制算法。位置PID控制算法具有出明显的缺陷:当前采样时刻的输出与过去的各个状态有关,计算时要对进行累加,计算量很大,而且由于输出控制量对应执行机构的实际位置偏差,如果位置传感器出现故障,就会出现大的波动,造成设备的损坏,这是在实际控制中必需避免的情况.为此人们在位置式的基础上发明了增量式PID控制算法。对数字PID位置式取增量,即数字控制器输出的是相邻两次采样时刻所计算的位置值之差。由式(2-4)递推可得,第k-1次采样时: (25)将式(2-4)与式(2-5)两式相减得: (2-6)则增量算式为 (2-7)式中:为积分时间常数,为微分时间常数。由于式(27)得出的是数字PID控制器输出控制量的增量值,因此,称之为增量式数字PID控制算法。它只需要保持三个采样时刻的偏差值。上递推算式可以写成如下形式: (28) 式中 , 与位置式数字PID控制算法相比,增量式数字PID控制算法有明显的优点:它是增量输出控制,增量的确定仅与此前最近的三次采样值有关,所以机器发生故障时影响范围小、不会严重影响生产过程;在手动一自动切换时冲击小,控制方式转换时可以平稳过渡。 可是增量控制也有不足的方面:积分截断效应大,有静态误差,溢出的影响大。所以我们选择的的时候不可一概而论,如果精度要求高、动作比较快的场合用位置算法,如电力电子变换器的控制;如果执行的时间比较长,如电机控制等,则选择增量式。常规PID控制器普遍存在积分饱和、超调量大以及由于微分作用对高频干扰的敏感而导致的系统失稳等缺点。PID控制是通过计算机程序实现的,具有很大的灵活性.许多原来在模拟PID控制器中无法解决的问题,运用计算机就可以解决。于是产生了一系列的改进算法,形成了非标准的控制算法,比如对积分项的改进,积分分离法、变速积分法、遇限削弱积分法等;对微分环节进行改进,不完全微分法、微分先行法、带死区的法等.这些算法解决了常规PID控制的不足.积分分离法和变速积分法解决了积分饱和的问题,明显降低了系统的超调量;不完全微分法可以滤掉系统中的高频噪声信号,对系统的动态特性有了很高的提升,适用于精度较高的系统。3对积分项的改进在实际控制系统中,由于执行元件自身物理特性的约束,执行器的完全可控只能在一定的范围内,因此要求计算输出的控制量及其变化率在一定的范围内,应满足 (3-1)式中, 为控制器允许输出变化率的最大值。 (3-2)式中,和分别为控制器允许输出的最小值和最大值。在普通PID控制中,积分的作用在于消除稳态误差以提高控制精度.当有较大的扰动或给定值发生很大跃变时,由于短时间内系统输出较大偏差,而系统本身有惯性及滞后,会造成PID运算的积分积累,致使控制量越限,使超调量过大,造成系统超调量增大,调节滞后,以致控制量越限,执行元件进入饱和区,使系统暂时暂时调节功能,即所谓积分饱和现象。 在数字PID控制中,位置式PID控制就存在积分饱和的问题。3。1 积分分离PID控制算法 积分分离PID控制算法主要应用于有较大惯性及滞后的系统。 积分分离PID算法基本设计思想是当偏差值大于一定值时,不进行积分而采用PD控制,避免过大的超调,又使系统有较快的响应.而当偏差值小于一定值时,恢复积分采用PID控制,以消除系统的静态误差,保证控制精度。 积分分离PID控制的具体实现步骤是: 根据实际情况,设定阈值,; 当时,采用PD控制,可避积分积累; 当时,采用PID控制,保证控制精度。 积分分离算法可表示为: (3。1-1)式中,T为采样时间,为积分项的开关系数, 仿真实例设备控对象为一个延迟对象,采样周期为20s,延迟时间为4个采样周期,即80s.输入信号yd(k)=40,控制器输出限制在-110,110。;被控对象离散化为: 仿真程序见附录.采用分段积分分离PID控制仿真结果如图3-1,采用普通PID控制仿真结果如图32。 图31 积分分离式PID输入输出信号 图3-2普通PID输入输出信号 结论积分作用使系统稳定性降低,超调量增大。当被控量与设定值偏差较大时,删除积分作用,以使不至过大。只有当较小时方引入积分作用,以消除静差,提高控制精度。需要说明的是,为保证引入积分作用后系统的稳定性不变,在输入积分作用时比例系数可进行相应变化。此外,值应根据具体对象及要求而定,若过大,则达不到积分分离的目的;过小,则会导致无法进入积分区。如果只进行PD控制,会使控制出现余差.3.2 变速积分PID控制算法积分分离运用的是一种类似于开关的控制方法,即有积分和没有积分两种状态,而在实际生产过程中,为了更加精确地控制对象,我们往往需要积分作用随着偏差的慢慢增大而逐渐小,直至完全没有。基于这种要求,我们提出了变速积分PID控制算法.变速积分PID算法与积分分离法很类似,但调节方式不同.变速积分法的基本思路是设法改变积分项的累加速度,使其与偏差的大小相适应:偏差较大时,积分作用减弱,偏差较小时,积分作用增强.具体实现为: 设置一系数 ,它是当前偏差的函数,其关系可以是线性的也可以是非线性的,现设为: (3.2-1)式中,以 A,B 为积分区间.变速积分 PID 算法为: (3。2.2)的值在区间内变化,当偏差大于所给分离区间(A + B)后,,不再对当前偏差进行继续累加; 当偏差小于B时,加入当前值,即积分项变为: (3.23) 与一般 PID 积分项相同,积分达到最高速; 而当偏差在 B到( A + B) 之间时,则累积记入的是部分当前值,其值在0和e(k)之间,随e(k)的大小而变化,其速度在与之间。 变速积分PID算法为: (3。2-4) 这种算法对A,B两个参数的要求不精确,参数整定较容易.实际中,A,B 的值可做一次性整定, 当 A,B 的值选得越大, 变速积分对积分饱和抑制作用就越弱,反之则越强,一般来说,最好取A=30%,B=20%为宜。 仿真实例设被控对象为一延迟对象:采样时间为20s,延迟时间为4个采样时间,即80s,取。仿真程序见附录。变速PID控制仿真结果如图33,普通PID控制仿真结果如图34. 图33 变速积分PID输入输出信号 图3-4 普通PID输入输出信号 结论 如果与积分分离PID控制算法相比较可以得出,积分分离算法的上升时间较短,而变速积分算法用比例消除大误差,用积分消除小误差,可完全消除积分分离现象,各参数容易整定,调节时间较短,最大超调量较小,振荡次数较少。4对微分项的改进增量式PID算法由于没有积分累积,所以不会出现积分饱和现象,但可能出现比例和微分饱和现象.当给定值发生很大跃变时,比例项和微分项计算出的控制增量可能较大,甚至越限,这样就使一部分增量信息没有执行,造成控制效果不理想,这就是比例和微分饱和。与积分饱和不同,比例和微分饱和的表现不是超调,而是动态过程变慢。抑制比例和微分饱和的办法之一是“积累补偿法”,其基本思想是把那些因饱和而未能执行的增量信息保存到累加器中,当控制量脱离饱和区之后,再补充执行。但是累加器有积分作用,可能造成积分饱和。抑制比例和微分饱和的另一种办法是采用不完全微分,即将过大的控制量分多次执行,以避免出现饱和现象。采用不完全微分控制还可以增强系统对干扰的抑制能力.4.1不完全微分PID控制算法微分作用的引入,主要是为了改善控制系统的动态性能,使控制信号的相位超前,提高系统的相位裕度,增加系统的稳定性,提高系统的响应速度,但由于对于干扰特别敏感,同时也会放大系统噪声,从而导致系统控制过程振荡,降低了调节品质。标准数字PID中的微分作用为 (4.1-1)对应的Z变换为 (4.12)当偏差为阶跃变化,即为单位阶跃函数时,由Z变换有 (4.1-3) 代入式(4.1-2)可得 (4.14) 标准数字PID控制器的微分环节的输出序列为 (4。15) 由式(4.1-5)可知,标准数字PID控制器中只在第一个采样周期控制器微分项有输出,后面的采样周期控制器微分项输出为零.对于时间常数T较大的系统,几乎起不到微分作用,因而不能达到超前控制误差的目的。如果微分系数取的比较大,第一个采样周期微分项的输出很大,很容易造成计算机中数据的溢出,这样不利于系统的稳定,甚至系统会出现大幅的振荡。为了克服上述缺点,通常在微分项上加入一阶惯性环节(低通滤波器)其中为滤波系数。 不完全微分PID控制其结构图如图41所示。 U(s)E(s) 图41 不完全微分法一结构图其传递函数为: (4。16)将上式离散化为: (4。1-7)现在推导的表达式: (4。18)将其写成微分方程: (4。19)假设采样时间为Ts,将上式离散化为: (4。110)令则有: (4.1-11)其中。标准PID控制为: (4.1-12)两式对比可知:不完全微分多了一项,原来的微分系数由降为。若输入为单位阶跃,,k=0,1,2,则 (4.1-13) 因为,则输出是按照指数形式衰减的曲线,可以保证由于被控对象的滞后作用而起到超前调节的目的。 仿真实例 被控对象为时滞系统传递函数,在对象的输出端加幅值为0。01的随机信号.采样周期为20ms。采用不完全微分算法,。所加的低通滤波器为。仿真程序见附录。不完全微分PID控制仿真结果如图4-2,普通PID控制仿真结果如图43: 图4-2 不完全微分PID控制输入输出信号 图43 普通PID控制输入输出信号 结论对比较m=1与m=2的图可得知,常规PID控制的调节时间、超调量等都高于不完全微分PID控制系统,采用不完全微分PID控制能有效地克服偏差干扰带来的不良影响。在标准PID算式中,当有阶跃信号输入时,微分项输出急剧增加,容易引起调节过程的震荡,导致品质因数下降。不完全微分的PID算法中,其微分作用逐渐下降,微分输出信号按指数规律逐渐衰减到零,因而系统变化比较缓慢,不容易引起振荡。微分控制可以改善动态特性,如超调量减少,调节时间缩短,使稳态误差减少,提高控制精度。5结语 本文对积分分离、变速积分和不完全微分三种先进PID控制算法进行了深入的剖析,并通过MATLAB仿真实验验证了这三种由常规PID改进而来非标准PID控制算法切实解决了常规PID控制难以解决的饱和问题,充分显示了先进PID控制较常规PID控制的先进性。 实际的工业控制过程中,为了提高被控系统的控制性能,一般不使用单一的控制算法,往往是几种PID控制算法相结合才能达到更好的控制效果,满足系统的控制要求,比如在使用不完全微分PID控制算法的同时,往往结合变速积分的PID控制算法,来减小超调量和稳态误差,从而提高系统的控制性能。参考文献1胡寿松.自动控制原理M。北京:科学出版社,2001.2陶永华.新型PID控制及其应用M.北京:机械工业出版社,2002。3刘金馄。先进PID控制MATLAB仿真(第三版)M.北京:电子工业出版社,2011.4张德丰。控制系统设计与仿真M.北京:电子工业出版社。2009,65张德江.计算机控制系统M。北京:机械工业出版社.2011,16王超,杨莲红,刘红.基于MATLAB的不完全微分PID控制的设计与仿真J洛阳理工学院学报(自然科学版)2013年12月第23卷第4期Advanced PID simulation based on MATLAB Wenfeng(School of physics and electrical engineering, Anyang Normal University ,Anyang ,Henan455002)Abstract: In this paper, the integral separation, selection of speed change integral and incomplete differential PID control algorithm of three kinds of non - standard as the representative, briefly introduced the principle and implementation of advanced PID control algorithm, discusses the limitations of the conventional PID control algorithm, and analysis of the advanced PID control algorithm with the conventional PID control algorithm with different。 Experiments using MATLAB simulation, using the M programming language to achieve a variety of PID control comparison, demonstration of advanced PID control compared with the conventional PID control superiority。Keywords: PID control; digital control; saturation;附录积分分离PID控制仿真程序如下:(当M=1时采用积分分离PID控制,M=2时采用普通PID控制)%Integration Separation PID Controller积分分离PID控制器clear all; %清除掉所有文件close all; %关闭所有文件ts=20; %定义时间%Delay plant定义延迟函数sys=tf(1,60,1,inputdelay,80); %定义系统传递函数dsys=c2d(sys,ts,zoh); %转化成dz函数num,den=tfdata(dsys,v); %获得Z传递函数的分子分母u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; %清0,使系统初始化y_1=0;y_2=0;y_3=0;error_1=0;error_2=0;ei=0; for k=1:1:200 %采样比,在1200,且跨幅为1之间采样time(k)=kts; 定义time(k)函数%Delay planty(k)=-den(2)*y_1+num(2)u_5; 输出函数I separation积分分离yd(k)=40; 给定输入值error(k)=yd(k)-y(k); 差分方程ei=ei+error(k)ts; %误差累加M=2;if M=1 Using integration separation当M=1时的积分分离的使用 if abs(error(k)=30&abs(error(k))=10abs(error(k))=20 beta=0.9; %判断:如果error(k)的绝对值在10-20之间,,则把0.9赋给beta else beta=1.0; %判断:如果error(k)的绝对值不在以上这些数值之间时,则把1赋给beta endelseif M=2 beta=1.0; %Not using integration separation当M=2时的积分分离的使用endkp=0。80;ki=0.005;kd=3.0; %定义ki、kp、kd值u(k)=kp*error(k)+kd*(error(k)error_1)/ts+betaki*ei; 定义u(k)函数if u(k)=110 Restricting the output of controller限制输出 u(k)=110;end % 判断u(k)函数值,如果u(k) =110,就令u(k)=110if u(k)=110 u(k)=110;end 判断u(k)函数值,如果u(k)=110,就令u(k)=-110u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yd(k);error_2=error_1;error_1=error(k);end 重新赋参数值figure(1); 图1plot(time,yd,r,time,y,k,linewidth,2); 画图xlabel(time(s));ylabel(yd,y); %x轴表示time(s),y轴表示yd,yLegend(Ideal position signal,position tracking);figure(2); 图2plot(time,u,r,linewidth,2); 画图xlabel(time(s);ylabel(control input); %x轴表示time(s),y轴表示控制信号变速PID控制仿真程序如下:(当M=1时采用变速积分PID控制,M=2时采用普通PID控制)PID Controller with changing integration rate 变速PID控制器clear all; 清除掉所有文件close all; %关闭所有文件%Big time delay Plant定义延迟函数ts=20; 定义时间sys=tf(1,60,1,inputdelay,80); 定义系统传递函数dsys=c2d(sys,ts,zoh); 转化成dz函数num,den=tfdata(dsys,v); 获得Z传递函数的分子分母u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; 清0,使系统初始化y_1=0;y_2=0;y_3=0;error_1=0;error_2=0;ei=0;for k=1:1:200 采样比,在1200,且跨幅为1之间采样time(k)=k*ts; 时间函数yd(k)=1.0; Step Signal阶跃信号%Linear model线性模型y(k)=den(2)*y_1+num(2)u_5; %输出函数error(k)=yd(k)-y(k); 差分方程kp=0.45;kd=12;ki=0。0048; 定比例系数Kp、微分系数Kd、积分系数Ki的值A=0.4;B=0。6; 定义A、B值T type integrationei=ei+(error(k)+error_1)/2ts; 偏差叠加M=2;if M=1 %Changing integration rate改变积分速度if abs(error(k))=Bf(k)=1; 判断:偏差小于等于B时,f(k)=1elseif abs(error(k)Babs(error(k))=10 u(k)=10;end %判断:偏差u(k)大于等于10,u(k)=10if u(k)=10 u(k)=-10;end %判断:偏差u(k)小于等于10,u(k)=10%Return of PID parameters返回PID参数u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); %重新定义新参数y_3=y_2;y_2=y_1;y_1=y(k); error_2=error_1;error_1=error(k);end 交换偏差值figure(1); %图1plot(time,yd,r,time,yd,k,linewidth,2); %画图xlabel(time(s));ylabel(yd,yd); % x轴表示time(s),y轴表示yd,yLegend(Ideal position signal,position tracking);figure(2); 图1plot(time,f,r,linewidth,2); %画图xlabel(time(s));ylabel(Integration rate f); % x轴表示time(s),y轴表示Integration rate f不完全微分PID控制仿真程序:(取M=1时采用不完全微分PID控制,M=2时采用普通PID控制)%PID Controler with Partial differentialclear all;close all;ts=20;sys=tf(1,60,1,inputdelay,80);dsys=c2d(sys,ts,zoh);num,den=tfdata(dsys,v);u_1=0;u_2=0;u_3=0;u_4=0;u_5=0; 控制信号初值ud_1=0; %uD(k1)初值y_1=0;y_2=0;y_3=0; 输出信号初值error_1=0;ei=0;for k=1:1:100time(k)=k*ts;yd(k)=1.0; yd(k)=den(2)*y_1+num(2)*u_5; 输出信号差分方程D(k)=0.01rands(1);%干扰信号yd(k)=yd(k)+D(k); %加入干扰后的输出信号error(k)=yd(k)yd(k);ei=ei+error(k)ts; 矩形面积求和计算的积分项输出kp=0。30;ki=0.0055;TD=140;kd=kp*TD/ts; Tf=180; Q的滤波器系数Q=tf(1,Tf,1); 低通滤波器M=2;if M=1 %M=1时用不完全微分 alfa=Tf/(ts+Tf); ud(k)=kd*(1-alfa)(error(k)error_1)+alfa*ud_1; u(k)=kp*error(k)+ud(k)+ki*ei; ud_1=ud(k);elseif M=2 %M=2时用普通PID u(k)=kp*error(k)+kd(error(k)error_1)+ki*ei;end %输出限幅if u(k)=10 u(k)=10;endif u(k)=10 u(k)=10;end %更新采样值u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=yd(k);error_1=error(k);endfigure(1);plot(time,yd,r,time,yd,k,linewidth,2);xlabel(time(s));ylabel(yd,y);Legend(Ideal position signal,position tracking);figure(2);plot(time,u,r,linewidth,2,);xlabel(time(s));ylabel(u);figure(3);plot(time,ydy,r,linewidth,2);xlabel(time(s);ylabel(error);figure(4);bode(Q,r);dcgain(Q);
展开阅读全文