还剩25页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机控制技术实验指导书(__TLAB版)机电学院杨蜀秦编2012-11-19实验一连续系统的模拟PID仿真
一、基本的PID控制在模拟控制系统中,控制器最常用的控制规律是PID控制模拟PID控制系统原理框图如图1-1所示图1-1模拟PID控制系统原理框图PID控制规律为或写成传递函数的形式Ex1以二阶线性传递函数为被控对象,进行模拟PID控制输入__,仿真时取,采用ODE45迭代方法,仿真时间10s仿真方法一在Simulink下进行仿真,PID控制由SimulinkExtras节点中的PIDController提供仿真程序ex1_
1.mdl,如图1-2所示图1-2连续系统PID的Simulink仿真程序连续系统的模拟PID控制正弦响应结果如图1-3所示图1-3连续系统的模拟PID控制正弦响应仿真方法二在仿真一的基础上,将仿真结果输出到工作空间中,并利用m文件作图仿真程序ex1_
2.mdl,程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中,如图1-4所示m文件作图程序ex1_2plot.mcloseall;plottrinktyoutk;xlabeltimes;ylabelry;
二、线性时变系统的PID控制Ex2设被控对象为,其中,输入__为采用PD控制,取仿真程序ex
2.mdl,如图1-4和图1-5所示图1-4ex2的Simulink程序图1-5Simulink子系统实验二数字PID控制计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量因此连续PID控制算法不能直接使用,需要采用离散化方法在计算机PID控制中,使用的是数字PID控制器
一、位置式PID控制算法按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID位置式表达式式中,,e为误差__(即PID控制器的输入),u为控制__(即控制器的输出)在仿真过程中,可根据实际情况,对控制器的输出进行限幅
二、连续系统的数字PID控制仿真连续系统的数字PID控制可实现D/A及A/D的功能,符合数字实时控制的真实情况,计算机及DSP的实时PID控制都属于这种情况Ex3设被控对象为一个电机模型传递函数,式中J=
0.0067B=
0.1输入__为,采用PD控制,其中采用ODE45方法求解连续被控对象方程因为,所以,另,则,因此连续对象微分方程函数ex3f.m如下functiondy=ex3ftyflagparau=para;J=
0.0067;B=
0.1;dy=zeros21;dy1=y2;dy2=-B/J*y2+1/J*u;控制主程序ex
3.mclearall;closeall;ts=
0.001;%采样周期xk=zeros21;%被控对象经A/D转换器的输出__y的初值e_1=0;%误差ek-1初值u_1=0;%控制__uk-1初值fork=1:1:2000%k为采样步数timek=k*ts;%time中存放着各采样时刻rink=
0.50*sin1*2*pi*k*ts;%计算输入__的采样值para=u_1;%D/AtSpan=[0ts];[ttxx]=ode45ex3ftSpanxk[]para;%ode45解系统微分方程%xx有两列,第一列为tt时刻对应的y,第二列为tt时刻对应的y导数xk=xxend:;%A/D,提取xx中最后一行的值,即当前y和y导数youtk=xk1;%xk1即为当前系统输出采样值ykek=rink-youtk;%计算当前误差dek=ek-e_1/ts;%计算uk中微分项输出uk=
20.0*ek+
0.50*dek;%计算当前uk的输出%控制__限幅ifuk
10.0uk=
10.0;endifuk-
10.0uk=-
10.0;end%更新uk-1和ek-1u_1=uk;e_1=ek;endfigure1;plottimerinrtimeyoutb;%输入输出__图xlabeltimesylabelrinyout;figure2;plottimerin-youtr;xlabeltimesylabelerror;%误差图Ex4被控对象是一个三阶传递函数,采用Simulink与m文件相结合的形式,利用ODE45方法求解连续对象方程,主程序由Simulink模块实现,控制器由m文件实现输入__为一个采样周期1ms的正弦__采用PID方法设计控制器,其中误差初始化由时钟功能实现,从而在m文件中实现了误差的积分和微分控制主程序ex
4.mdl图2-1Simulink仿真程序控制子程序ex4f.mfunction[u]=ex4fu1u2%u1为Clock,u2为图2-1中Sum模块输出的误差__e的采样值persistenterrorierror_1ifu1==0%当Clock=0时,即初始时,ek=ek-1=0errori=0error_1=0endts=
0.001;kp=
1.5;ki=
2.0;kd=
0.05;error=u2;errord=error-error_1/ts;%一阶后向差分误差__表示的误差微分errori=errori+error*ts;%累积矩形求和计算的误差的积分u=kp*error+kd*errord+ki*errori;%由PID算式得出的当前控制__ukerror_1=error;%误差__更新
三、离散系统的数字PID控制仿真Ex5设被控对象为,采样时间为1ms,对其进行离散化针对离散系统的阶跃__、正弦__和方波__的位置响应,设计离散PID控制器其中S为__选择变量,S=1时是阶跃跟踪,S=2时为方波跟踪,S=3时为正弦跟踪求出Gs对应的离散形式,其中Yz和Uz是关于z的多项式,则可以得到其对应的差分表达式仿真程序ex
5.m%PIDControllerclearall;closeall;ts=
0.001;%采样周期sys=tf
5.235e005[
187.
351.047e0040];%被控对象连续传递函数dsys=c2dsystsz;%转换成离散z传递函数的形式[numden]=tfdatadsysv;%提取z传递函数中的分子和分母多项式系数u_1=
0.0;u_2=
0.0;u_3=
0.0;%uk-
1、uk-
2、uk-3的初值y_1=
0.0;y_2=
0.0;y_3=
0.0;%yk-
1、yk-
2、yk-3的初值x=
[000];%比例、微分、积分项的初值error_1=0;%ek-1的初值dispS=1--stepS=2--sinS=3--square%S=1阶跃,S=2方波,S=3正弦S=inputNumberofinputsignalS:%接收输入__代号fork=1:1:1500timek=k*ts;%各采样时刻ifS==1%阶跃输入时kp=
0.50;ki=
0.001;kd=
0.001;%各项PID系数rink=1;%阶跃__输入elseifS==2kp=
0.50;ki=
0.001;kd=
0.001;%各项PID系数rink=signsin2*2*pi*k*ts;%方波__输入elseifS==3kp=
1.5;ki=
1.0;kd=
0.01;%各项PID系数rink=
0.5*sin2*2*pi*k*ts;%正弦__输入enduk=kp*x1+kd*x2+ki*x3;%PID控制__输出uk%控制__输出限幅ifuk=10uk=10;endifuk=-10uk=-10;end%根据差分方程计算系统当前输出ykyoutk=-den2*y_1-den3*y_2-den4*y_3+num2*u_1+num3*u_2+num4*u_3;errork=rink-youtk;%当前误差%更新uk-
1、uk-
2、uk-
3、yk-
1、yk-
2、yk-3u_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;x1=errork;%比例输出x2=errork-error_1/ts;%微分输出x3=x3+errork*ts;%积分输出error_1=errork;%更新ek-1endfigure1;%作图plottimerinrtimeyoutb;xlabeltimesylabelrinyout;Ex6针对于Ex5被控对象所对应的离散系统,设计针对三角波、锯齿波和随机__的位置式响应仿真程序ex
6.m程序中当S=1时为三角波,S=2时为锯齿波,S=3时为随机__如果D=1,则通过pause命令实现动态演示仿真%PIDControllerclearall;closeall;ts=
0.001;sys=tf
5.235e005[
187.
351.047e0040];dsys=c2dsystsz;[numden]=tfdatadsysv;u_1=
0.0;u_2=
0.0;u_3=
0.0;r_1=rand;y_1=0;y_2=0;y_3=0;x=
[000];error_1=0;dispS=1--________S=2--SawtoothS=3--Random%S=1三角,S=2锯齿,S=3随机S=inputNumberofinputsignalS:%接收输入__代号dispD=1--DynamicdisplayD~=1--Directdisplay%D=1动画显示,D~=1直接显示D=inputD=fork=1:1:3000timek=k*ts;kp=
1.0;ki=
2.0;kd=
0.01;ifS==1%________Signalifmodtimek21rink=modtimek1;elserink=1-modtimek1;endrink=rink-
0.5;endifS==2%SawtoothSignalrink=modtimek
1.0;endifS==3%RandomSignalrink=rand;vrk=rink-r_1/ts;%__xspeedis
5.0whileabsvrk=
5.0rink=rand;vrk=absrink-r_1/ts;endenduk=kp*x1+kd*x2+ki*x3;%PIDController%Restrictingtheoutputofcontrollerifuk=10uk=10;endifuk=-10uk=-10;end%Linearmodelyoutk=-den2*y_1-den3*y_2-den4*y_3+num2*u_1+num3*u_2+num4*u_3;errork=rink-youtk;r_1=rink;u_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;x1=errork;%CalculatingPx2=errork-error_1/ts;%CalculatingDx3=x3+errork*ts;%CalculatingIxik=x3;error_1=errork;ifD==1%DynamicSimulationDisplayplottimerinbtimeyoutr;pause
0.000001;endendplottimerinrtimeyoutb;xlabeltimes;ylabelrinyout;Ex7采用Simulink实现PID控制器的设计,如图2-2所示,其中离散PID控制的子系统如图2-3所示,其封装界面如图2-4所示仿真程序ex
7.mdl图2-2离散PID控制的Simulink主程序图2-3离散PID控制的Simulink控制器程序图2-4离散PID控制的封装界面位置式PID控制算法的缺点是,由于采用全量输出,所以每次输出均与过去的状态有关,计算时要对ek量进行累加,计算机输出控制量uk对应的是执行机构的实际位置偏差,如果位置传感器出现故障,uk可能会出现大幅度变化u(k)大幅度变化会引起执行机构未知的大幅度变化,这种情况在生产中是不允许的,在某些重要场合还可能造成重大事故为了避免这种情况的发生,可采用增量式PID控制算法
四、增量式PID控制算法及仿真当执行机构需要的是控制量的增量(例如驱动步进电机)时,应采用增量式PID控制,根据递推原理可得增量式PID控制算法为Ex8设被控对象,采用增量式控制算法,PID控制参数仿真程序ex
8.m%IncrementPIDControllerclearall;closeall;ts=
0.001;sys=tf400
[1500];dsys=c2dsystsz;[numden]=tfdatadsysv;u_1=
0.0;u_2=
0.0;u_3=
0.0;y_1=0;y_2=0;y_3=0;x=
[000];error_1=0;error_2=0;fork=1:1:1000timek=k*ts;rink=
1.0;kp=8;ki=
0.10;kd=10;duk=kp*x1+kd*x2+ki*x3;uk=u_1+duk;ifuk=10uk=10;endifuk=-10uk=-10;endyoutk=-den2*y_1-den3*y_2+num2*u_1+num3*u_2;error=rink-youtk;u_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;x1=error-error_1;%CalculatingPx2=error-2*error_1+error_2;%CalculatingDx3=error;%CalculatingIerror_2=error_1;error_1=error;endplottimerinbtimeyoutr;xlabeltimes;ylabelrinyout;由于控制算法中不需要累加,控制增量Δuk仅与最近k次的采样有关,所以误动作影响小,而且较容易通过加权处理获得比较好的控制效果实验三PID控制的改进算法在计算机控制系统中,PID控制是通过计算机程序实现的,因此灵活性很大一些原来在模拟PID控制器中无法实现的问题,在引入计算机以后,就可以得到解决,于是产生了一系列的改进算法,形成非标准的控制算法,以改善系统品质,满足不同控制系统的需要
一、积分分离PID控制算法在普通PID控制中,积分的目的是为了消除误差提高精度,但在过程的启动、结束或大幅度增减设定是,短时间内系统输出有很大偏差,会造成PID运算的积分积累,致使控制量超过执行机构可能允许的最大动作范围对应的极限控制量,引起系统较大的超调,甚至引起系统较大的振荡,这在生产中是绝对不允许的积分分离控制基本思路是,当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使系统稳定性降低,超调量增大;当被控量接近给定值时,引入积分控制,以便消除静差,提高控制精度其具体实现步骤是1)根据实际情况,人为设定阈值ε0;2)当时,采用PD控制,可避免产生过大的超调,又使系统有较快的响应;3)当时,采用PID控制,以保证系统的控制精度积分分离算法可表示为式中,T为采样时间,β为积分项的开关系数,Ex9设备控对象为一个延迟对象,采样周期为20s,延迟时间为4个采样周期,即80s输入__rk=40,控制器输出限制在[-110110]被控对象离散化为仿真方法一仿真程序ex9_
1.m当M=1时采用分段积分分离法,M=2时采用普通PID控制%IntegrationSeparationPIDControllerclearall;closeall;ts=20;%Delayplantsys=tf
[1]
[601]inputdelay80;dsys=c2dsystszoh;[numden]=tfdatadsysv;u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;error_1=0;error_2=0;ei=0;%M=1分段积分分离,M=2普通PIDdispM=1--UsingintegrationseparationM=2--NotusingintegrationseparationM=inputwhetherornotuseintegrationseparationmethod:fork=1:1:200timek=k*ts;%输出__youtk=-den2*y_1+num2*u_5;rink=40;errork=rink-youtk;ei=ei+errork*ts;%积分项输出ifM==1%使用分段积分分离ifabserrork=30abserrork=40beta=
0.3;elseifabserrork=20abserrork=30beta=
0.6;elseifabserrork=10abserrork=20beta=
0.9;elsebeta=
1.0;endelseifM==2beta=
1.0;endkp=
0.80;ki=
0.005;kd=
3.0;uk=kp*errork+kd*errork-error_1/ts+beta*ki*ei;ifuk=110%控制__限幅uk=110;endifuk=-110uk=-110;endu_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;error_2=error_1;error_1=errork;endfigure1;plottimerinbtimeyoutr;xlabeltimes;ylabelrinyout;figure2;plottimeur;xlabeltimes;ylabelu;仿真方法二采用Simulink仿真初始化程序ex9_2f.mclearall;closeall;ts=20;sys=tf
[1]
[601]inputdelay80;dsys=c2dsystszoh;[numden]=tfdatadsysv;kp=
1.80;ki=
0.05;kd=
0.20;Simulink主程序ex9_2f.mdl,如图3-1所示图3-1Simulink主程序
二、抗积分饱和PID控制算法所谓积分饱和是指若系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构达到极限位置X__x,若控制器输出uk继续增大,阀门开度不可能在增大,此时就称计算机输出控制超出正常运行范围而进入了饱和区一旦系统出现反向偏差,uk逐渐从饱和区推出进入饱和区越深,则退出饱和区所需时间越长在这段时间内,执行机构仍停留在极限位置而不能随偏差反向立即作出相应的改变,这时系统就像失去控制一样,造成控制性能恶化这种现象称为积分饱和现象或积分失控现象抗积分饱和的思路是,在计算uk时,首先判断上一时刻的控制量uk-1是否已超出限制范围若uk-1u__x,则只累加负偏差;若uk-1umin,则只累加正偏差这种算法可以避免控制量长时间停留在饱和区Ex10设被控对象为,采样周期1ms输入rk=30仿真程序ex
10.mM=1时采用抗积分饱和算法,M=2时采用普通PID算法%PIDControlerwithintergrationsturationclearall;closeall;ts=
0.001;sys=tf
5.235e005[
187.
351.047e0040];dsys=c2dsystsz;[numden]=tfdatadsysv;u_1=
0.0;u_2=
0.0;u_3=
0.0;y_1=0;y_2=0;y_3=0;x=
[000];error_1=0;um=6;%控制__限幅值kp=
0.85;ki=
9.0;kd=
0.0;rin=30;%StepSignal%M=1抗积分饱和,M=2普通PIDdispM=1--UsingintergrationsturationM=2--NotusingiintergrationsturationM=inputwhetherornotuseintegrationseparationmethod:fork=1:1:800timek=k*ts;uk=kp*x1+kd*x2+ki*x3;%PIDControllerifuk=umuk=um;endifuk=-umuk=-um;end%Linearmodelyoutk=-den2*y_1-den3*y_2-den4*y_3+num2*u_1+num3*u_2+num4*u_3;errork=rin-youtk;ifM==1%Usingintergrationsturationifuk=umiferrork0alpha=0;elsealpha=1;endelseifuk=-umiferrork0alpha=1;elsealpha=0;endelsealpha=1;endelseifM==2%Notusingintergrationsturationalpha=1;end%ReturnofPIDparametersu_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;error_1=errork;x1=errork;%计算比例项x2=errork-error_1/ts;%计算微分项x3=x3+alpha*errork*ts;%计算积分项xik=x3;endfigure1;subplot311;plottimerinbtimeyoutr;xlabeltimes;ylabelPositiontracking;subplot312;plottimeur;xlabeltimes;ylabelControlleroutput;subplot313;plottimexir;xlabeltimes;ylabelIntegration;
三、不完全微分PID控制算法在PID控制中,微分__的引入可改善系统的动态特性,但也易引入高频干扰,在误差扰动突变时尤其显出微分项的不足若在控制算法中加入低通滤波器,则可使系统性能得到改善具体做法就是在PID算法中加入一个一阶惯性环节(低通滤波器)Tf为滤波器系数可得此时的微分项输出为,其中,,Ts为采样时间,TD为微分时间常数Ex11被控对象为时滞系统传递函数,在对象的输出端加幅值为
0.01的随机__采样周期为20ms采用不完全微分算法,所加的低通滤波器为仿真程序ex
11.mM=1时采用不完全微分,M=2时采用普通PID%PIDControlerwithPartialdifferentialclearall;closeall;ts=20;sys=tf
[1]
[601]inputdelay80;dsys=c2dsystszoh;[numden]=tfdatadsysv;u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;%控制__初值ud_1=0;%uDk-1初值y_1=0;y_2=0;y_3=0;%输出__初值error_1=0;ei=0;fork=1:1:100timek=k*ts;rink=
1.0;youtk=-den2*y_1+num2*u_5;%输出__差分方程Dk=
0.01*rands1;%干扰__youtk=youtk+Dk;%加入干扰后的输出__errork=rink-youtk;ei=ei+errork*ts;%矩形__求和计算的积分项输出kp=
0.30;ki=
0.0055;TD=140;kd=kp*TD/ts;Tf=180;%Q的滤波器系数Q=tf
[1][Tf1];%低通滤波器%M=1选择不完全微分,M=2选择普通PIDdispM=1—UsingPartialdifferentialPIDM=2--UsingPIDControlerwithoutPartialdifferentialM=inputwhetherornotusePartialdifferentialPID:ifM==1%M=1时用不完全微分alfa=Tf/ts+Tf;udk=kd*1-alfa*errork-error_1+alfa*ud_1;uk=kp*errork+udk+ki*ei;ud_1=udk;elseifM==2%M=2时用普通PIDuk=kp*errork+kd*errork-error_1+ki*ei;end%输出限幅ifuk=10uk=10;endifuk=-10uk=-10;end%更新采样值u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;error_1=errork;endfigure1;plottimerinbtimeyoutr;xlabeltimes;ylabelrinyout;figure2;plottimeur;xlabeltimes;ylabelu;figure3;plottimerin-youtr;xlabeltimes;ylabelerror;figure4;bodeQr;dcgainQ;
四、微分前行PID控制算法微分线性的PID控制结构如图3-2所示,其特点是只对输出量yk进行微分,而对给定值rk不进行微分这样,在改变给定值时,输出不会改变,而被控量的变化通常是比较缓和的,它适用于给定值rk频繁升降的场合,可以避免给定值升降时引起的系统振荡,从而改善系统的动态特性图3-2微分先行PID控制结构图令微分部分的传递函数为,式中相当于低通滤波器则有由差分得整理得微分部分的输出其中比例积分部分的传递函数为,其中TI为积分时间常数离散控制算式为Ex12设被控对象为一个延迟对象,采样周期为20s输入__为带有高频干扰的方波__普通PID控制中微分先行PID中=
0.5仿真程序ex
12.mM=1时使用微分先行PID,M=2使用普通PID%PIDControlerwithdifferentialinadvan__clearall;closeall;ts=20;sys=tf
[1]
[601]inputdelay80;dsys=c2dsystszoh;[numden]=tfdatadsysv;u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;ud_1=0;y_1=0;y_2=0;y_3=0;error_1=0;error_2=0;ei=0;%M=1使用微分先行PID,M=2使用普通PIDdispM=1¡ªUsingPIDControlerwithdifferentialinadvan__M=2--UsingcommonPIDControlerM=inputwhetherornotusePIDControlerwithdifferentialinadvan__:;fork=1:1:400timek=k*ts;%Linearmodelyoutk=-den2*y_1+num2*u_5;kp=
0.36;kd=14;ki=
0.0021;rink=
1.0*signsin
0.00025*2*pi*k*ts;rink=rink+
0.05*sin
0.03*pi*k*ts;errork=rink-youtk;ei=ei+errork*ts;ga__=
0.50;Td=kd/kp;c1=ga__*Td/ga__*Td+ts;c2=Td+ts/ga__*Td+ts;c3=Td/ga__*Td+ts;ifM==1%PIDControlwithdifferentialinadvan__udk=c1*ud_1+c2*youtk-c3*y_1;uk=kp*errork+udk+ki*ei;elseifM==2%______PIDControluk=kp*errork+kd*errork-error_1/ts+ki*ei;endifuk=110uk=110;endifuk=-110uk=-110;end%Updateparametersu_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;error_2=error_1;error_1=errork;endfigure1;plottimerinrtimeyoutb;xlabeltimes;ylabelrinyout;figure2;plottimeur;xlabeltimes;ylabelu;
五、带死区的PID控制算法某些系统为了避免控制作用过于频繁,消除由于频繁动作所引起的振荡,可采用带死区的PID控制算法,控制算法为,式中ek为位置跟踪偏差,B为可调的死区参数,具体可根据实际控制对象由试验确定若B太小,会使控制动作过于频繁,达不到稳定被控对象的目的;若B太大,则系统将产生较大的滞后Ex13设被控对象为,采样周期为1ms,对象输出上有一个幅值为
0.5的正态分布的随机干扰__采用积分分离式PID控制算法进行阶跃响应,取=
0.2,死区参数B=
0.1,采用低通滤波器对对象输出__进行滤波,滤波器为仿真程序ex
13.mM=1时,采用一般积分分离式PID控制算法,M=2时采用带死区的积分分离式PID控制算法%PIDControlerwithdeadzoneclearall;closeall;ts=
0.001;sys=tf
5.235e005[
187.
351.047e0040];dsys=c2dsystsz;[numden]=tfdatadsysv;u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;yy_1=0;error_1=0;error_2=0;ei=0;sys1=tf
[1][
0.041];%LowFreqSignalFilterdsys1=c2dsys1tstucsin;[num1den1]=tfdatadsys1v;f_1=0;%M=1选择普通积分分离式PID,M=2选择带死区的积分分离式PID算法dispM=1--UsingcommonintegrationseperationPIDControlerM=2--UsingintegrationseperationPIDControlerwithdeadzoneM=inputwhetherornotuseintegrationseperationPIDControlerwithdeadzone:;fork=1:1:2000timek=k*ts;rink=1;%StepSignal%Linearmodelyoutk=-den2*y_1-den3*y_2-den4*y_3+num2*u_1+...num3*u_2+num4*u_3;Dk=
0.50*rands1;%Disturban__signalyyoutk=youtk+Dk;%Lowfrequencyfilterfiltyk=-den12*f_1+num11*yyoutk+yy_1;errork=rink-filtyk;ifabserrork=
0.20ei=ei+errork*ts;elseei=0;endkp=
0.50;ki=
0.10;kd=
0.020;uk=kp*errork+ki*ei+kd*errork-error_1/ts;ifM==1uk=uk;elseifM==2%UsingDeadzoneifabserrork=
0.10uk=0;endendifuk=10uk=10;endifuk=-10uk=-10;end%----------ReturnofPIDparameters------------rin_1=rink;u_3=u_2;u_2=u_1;u_1=uk;y_3=y_2;y_2=y_1;y_1=youtk;f_1=filtyk;yy_1=yyoutk;error_2=error_1;error_1=errork;endfigure1;subplot211;plottimerinrtimefiltyb;xlabeltimes;ylabelrinyout;subplot212;plottimeur;xlabeltimes;ylabelu;figure2;plottimeDr;xlabeltimes;ylabelDisturban__signal;实验四纯滞后系统的控制算法
一、纯滞后系统的__ith控制算法在工业过程控制中,许多被控对象具有纯滞后的性质__ith提出了一中纯滞后补偿模型,其原理为,与PID控制器并接一个补偿环节,该补偿环节称为__ith预估器被控对象传递函数为,模拟调节器的传递函数为,则系统的闭环传递函数为可见,闭环特征方程中出现了纯滞后环节,使系统稳定性降低,如果滞后时间足够大,系统将不稳定,这就是大延迟过程难于控制的本质针对这一问题,__ith提出在调节器上反向并联一个预估模型,__ith预估控制系统等效图如图4-1所示图4-1带__ith预估器的控制系统Ex14设被控对象为,采用__ith控制方法,在PI控制中,取,输入阶跃__幅值为100仿真程序ex
14.mdl
二、大林控制算法早在1968年,美国IBM公司的大林就提出了一种不同常规PID控制规律的新型算法,即大林控制算法,该算法的最大特点是,将期望的闭环响应设计成一阶惯性加延迟,然后反过来得到能满足这种闭环响应的控制器对于单回路控制系统,Dz为数字控制器,Gz为被控对象广义传递函数,则闭环系统传递函数为则有如果能事先设定系统的闭环响应,则可得到控制器Dz大林之处,通常的期望闭环响应是一阶惯性加纯延迟形式,其延迟时间等于对象的纯延迟时间式中,为闭环系统的时间常数,由此得到的控制率称为大林控制算法Ex15设被控对象为,采样时间为
0.5s期望的闭环响应设计为仿真程序ex
15.mM=1时为采用大林控制算法,M=2时为采用普通PID算法%DelayControlwithDalinAlgorithmclearall;closeall;ts=
0.5;%Plantsys1=tf
[1][
0.41]inputdelay
0.76;dsys1=c2dsys1tszoh;[num1den1]=tfdatadsys1v;%Idealclosedloopsys2=tf
[1][
0.151]inputdelay
0.76;dsys2=c2dsys2tszoh;%DesignDalincontrollerdsys=dsys2/dsys1*1-dsys2;[numden]=tfdatadsysv;u_1=
0.0;u_2=
0.0;u_3=
0.0;u_4=
0.0;u_5=
0.0;y_1=
0.0;error_1=
0.0;error_2=
0.0;error_3=
0.0;ei=0;%选择是否使用大林算法,M=1使用,M=2不使用dispM=1¡ªUsingDalinMethodM=2--UsingcommonPIDControlerM=inputwhetherornotuseDalinMethod:;fork=1:1:50timek=k*ts;rink=
1.0;%TracingStepSignalyoutk=-den12*y_1+num12*u_2+num13*u_3;errork=rink-youtk;ifM==1%UsingDalinMethoduk=num1*errork+num2*error_1+num3*error_2+num4*error_
3...-den3*u_1-den4*u_2-den5*u_3-den6*u_4-den7*u_5/den2;elseifM==2%UsingPIDMethodei=ei+errork*ts;uk=
1.0*errork+
0.10*errork-error_1/ts+
0.50*ei;end%----------Returnofdalinparameters------------u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=uk;y_1=youtk;error_3=error_2;error_2=error_1;error_1=errork;endplottimerinbtimeyoutr;xlabeltimes;ylabelrinyout;PAGE26。