第8章控制系统应用设计与仿真实例8.1汽车运动控制系统的设计8.2跷跷板控制系统的设计8.3直流(DC)电机调速系统的计算机辅助设计8.4电磁驱动水压伺服机构的根轨迹设计8.1汽车运动控制系统的设计8.1.1问题提出考虑图8.1所示的汽车运动控制系统。如果忽略车轮的转动惯量,并且假定汽车受到的摩擦阻力大小与运动速度成正比,方向与汽车运动方向相反,则该系统可以简化成简单的质量阻尼系统。图8.1其中,u为汽车的驱动力。假定m=1000kg,b=50N·s/m,u=500N。mbuy(8.1)根据牛顿运动定律,该系统的模型表示为8.1.2模型描述为了得到系统的传递函数,对式(8.1)进行Laplace变换。假定系统的初始条件为零,则动态系统的Laplace变换式为msV(s)+bV(s)=U(s)Y(s)=V(s)(8.2)既然系统输出是汽车的运动速度,用Y(s)替代V(s),得到msY(s)+bY(s)=U(s)(8.3)相应的程序代码为m=1000;b=50;u=500;num=[1];den=[mb];我们也可以建立方程(8.1)的状态方程模型,相应的程序代码为m=1000;b=50;u=500;A=[-b/m];B=[1/m];C=[1];D=0;该系统的传递函数为()1()YsUsmsb(8.4)图8.2汽车运动控制系统的开环阶跃响应曲线8.1.3PID控制器设计PID控制器的传递函数为2IDPIpDKKsKsKKKsss(8.5)其中,KP、KI和KD分别称为比例系数、积分系数和微分系数。首先我们来看看比例控制器的设计。闭环系统的传递函数为()()()PPYsKUsmsbK(8.6)比例控制器可以减小系统的上升时间。现在假定KP=100,我们来观察系统的响应:kp=100;m=1000;b=50;u=10;num=[kp];den=[mb+kp];t=0:0.1:20;step(u*num,den,t)axis([020010])得到图8.3所示的系统阶跃响应。图8.3比例控制器作用下的汽车阶跃响应从图8.3中可以看到,所设计的比例控制器不满足稳态误差和上升时间的设计要求。当然,也可以通过提高控制器的比例增益系数来改善系统的输出。下面将KP提高到10000,重新计算系统的阶跃响应,如图8.4所示。图8.4KP=10000时的系统阶跃响应这时的系统稳态误差接近零并且系统上升时间也降到0.5s以下,虽然满足了系统的性能要求,但实际上上述控制过程是不现实的,因为一个实际的汽车控制系统不可能在0.5s以内将速度从0加速到10m/s。解决上述问题的方法是改用比例积分控制器。比例积分控制系统的闭环传递函数为2()()()PIPIYsKsKUsmsbKsK(8.7)在控制器中增加积分环节的目的是减小系统的稳态误差。假设KI=1,KP=600,相应的程序代码为kp=600;ki=1;m=1000;b=50;u=10;num=[kpki];den=[mb+kpki];t=0:0.1:20;step(u*num,den,t)axis([020010])如果选择直接从开环传递函数计算系统的闭环传递函数,则可以输入kp=600;ki=1;m=1000;b=50;u=10;num=[1];den=[mb];num1=[kpki];den1=[10];num2=conv(num,num1);den2=conv(den,den1);[numc,denc]=cloop(num2,den2,-1);t=0:0.1:20;step(u*numc,denc,t)axis([020010])运行上述程序,可以得到如图8.4所示的系统阶跃响应曲线。调节控制器的比例和积分系数,以满足系统的性能要求。当调节积分增益的大小时,最好将比例增益设置成较小的值,因为过大的比例增益又可能会导致系统不稳定。当KI=40,KP=800时,得到的阶跃响应曲线如图8.5所示。可以看出,这时的系统已经满足系统设计要求。图8.5KI=40,KP=800时比例积分控制系统的阶跃响应曲线在这个例子中,控制器没有包含微分项,然而对于有些实际系统,往往需要设计完整的PID控制器。PID控制系统的闭环传递函数为22()()()()()nPIDPIYsKsKsKUsmKsbKsK(8.8)假设KI=1,KP=1,KD=1,输入下面的程序kp=1;ki=1;kd=1;m=1000;b=50;u=10;num=[kdkpki];den=[m+kdb+kpki];t=0:0.1:20;step(u*num,den,t)axis([020010])8.1.4根轨迹设计方法前面我们针对系统的设计要求利用试凑的方法设计了PID控制器。然而这种方法需要设计人员对PID控制系统的性能变化非常熟悉,并且具备参数调节的丰富经验,该方法多用于控制系统简单的现场设备调试中。设计SISO系统控制器更为有效的方法是采用根轨迹方法来确定所需要的控制器参数。下面首先利用根轨迹方法重新设计该系统的比例控制器。比例控制器的闭环传递函数见式(8.6)。根据经典控制理论,SISO系统的性能指标之间的关系满足22()1.8,1()PnPrInMInMT(8.9)其中,ωn、ξ、MP和Tr分别为系统的自然频率、阻尼系数、最大超调量和上升时间。根据要求的上升时间小于5秒,可以知道系统的自然频率应大于0.36。而10%的最大超调量使得系统的阻尼系数应大于0.6。根据上面的分析,输入相应的程序如下:holdoff;m=1000;b=50;u=10;numo=[1];deno=[mb];figurehold;axis([-0.60-0.60.6]);rlocus(numo,deno),sgrid(0.6,0.36)[Kp,poles]=rlocfind(numo,deno)figurehold;numc=[Kp];denc=[m(b+Kp)];t=0:0.1:20;step(u*numc,denc,t),axis([020010])运行上述程序,得到的系统根轨迹图如图8.6所示。两条虚直线代表的是阻尼系数为0.6时的极点位置。虚直线内部的区域表示阻尼系数大于0.6;而虚直线外部的区域表示阻尼系数小于0.6。图中的半椭圆代表0.36的自然频率。在椭圆内部,自然频率小于0.36;而在椭圆外部,系统的自然频率则大于0.36。图8.6系统的根轨迹图在程序执行过程中可以发现MATLAB提示用户在根轨迹图中选择需要的闭环极点位置。基于以上分析,我们在两条虚直线之间(满足阻尼系数大于0.6)和半椭圆的外部(满足自然频率大于0.36)区域选择闭环极点,得到的闭环系统阶跃响应如图8.7所示(根据闭环极点所选位置不同而有所变化)。仿真曲线显示,虽然系统的最大超调量和上升时间满足系统性能指标的设计要求,但是系统的稳态误差超过了系统的设计要求。因此,需要改变控制器的结构。图8.7根据根轨迹图设计得到的闭环系统阶跃响应曲线为了减小系统的稳态误差,加入相位滞后控制器。它的传递函数为00()sZGssP这样,整个系统的闭环传递函数就变成02000()()()()PPPPYsKsKZUsmsbmPKsbPKZ滞后控制器的零极点应设计成紧靠在一起,这样闭环系统的稳态误差将减小Z0/P0倍。根据上面的分析,将Z0设计成-0.3,而P0等于-0.03。相应的程序代码如下:holdoff;m=1000;b=50;u=10;Zo=0.3;Po=0.03;numo=[1Zo];deno=[mb+m*Pob*Po];figurehold;axis([-0.60-0.40.4]),rlocus(numo,deno),sgrid(0.6,0.36)[Kp,poles]=rlocfind(numo,deno),figure,t=0:0.1:20;numc=[KpKp*Zo];denc=[mb+m*Po+Kpb*Po+Kp*Zo];axis([020012]),step(u*numc,denc,t)运行该程序,得到如图8.8所示的根轨迹图。图8.8加入滞后控制器后的系统根轨迹图8.2跷跷板控制系统的设计8.2.1系统模型跷跷板系统的结构如图8.10所示,它主要由放置在横梁上的小球和驱动转盘组成。随着转盘的转动,横梁的倾斜角度也随之变化。小球在重力的作用下将沿横梁自由滚动。控制的目的是使小球可以停留在横梁的任意位置上。图8.9加入滞后控制器后的闭环阶跃响应曲线图8.10跷跷板系统的结构示意图忽略横梁与小球之间的滚动摩擦,系统各部分符号的含义和取值分别为M:小球的质量(0.11kg)R:小球的半径(0.015m)d:杠杆臂的偏移(0.03m)g:重力加速度(9.8m/s2)L:横梁的长度(1.0m)J:小球的瞬时惯量(9.99e-6kg·m2)R:小球的位置坐标α:横梁的倾斜角度θ:侍服齿轮的角度系统设计要求:·稳定时间小于3秒。·超调量不超过5%。...22()sin()0JmrmgmrrR(8.10)将上式在α=0处线性化,得到小球的线性化运动方程..2()JmrmgR(8.11)横梁的倾斜角度与侍服齿轮的角度具有如下的近似线性关系dL(8.12)将上式代入式(8.11)得到..2()JdmrmgRL(8.13)1)传递函数假设系统的初始条件为零,将上式进行Laplace变换,得到下面的方程22()()()JdmRssmgsRL(8.14)从而得到系统的传递函数描述22()1()()RsmgdJssLmR(8.15)注意到该系统属于双积分器系统,属于临界稳定系统。下面的程序用于在MATLAB环境中创建该系统的传递函数模型:m=0.111;R=0.015;g=-9.8;L=1.0;d=0.03;J=9.99e-6;K=(m*g*d)/(L*(J/R^2+m));%传递函数的增益num=[-K];den=[100];printsys(num,den)2)状态空间描述该系统的线性化模型也可以使用状态空间模型进行描述。将小球的位置坐标(r)和小球运动的速度(rdot)作为系统的状态变量。于是,系统的状态方程可以写成200100()rrmgdJrrLmR在这个例子中,将通过控制α的二阶导数而不是侍服齿轮的角度来达到控制小球位置的目的。从而得到如下的系统方程:...2...0100000()00000000rmgrJmR..1000rry(8.16)在这个例子中,没有用到侍服齿轮和杠杆臂,而是通过安装在横梁中心的电机对横梁施加适当的力矩,来控制小球的位置。相对于系统的原始模型,我们将该模型称为力矩控制模型。下面的程序在MATLAB中创建式(8.16)所示的状态方程模型:m=0.111;R=0.015;g=-9.8;J=9.99e-6;H=-m*g/(J/(R^2)+m);A=010000H000010000];B=[0;0;0;1];C=[1000];D=[0];8.2.2全状态反馈控制器的设计下面我们为系统设计全状态反馈控制器。控制系统示意图如图8.11所示。全状态反馈控制系统的闭环特征多项式为(sI-(A-BK)),在本例中,A和B*K都是4×4矩阵,因此系统应该具有4个极点。设计全状态反馈控制器的目标就是将这些极点移动到期望的位置。根据系统的设计要求,计算出期望的主导极点位置位于-2+2i和-2-2i处,其它的极点应该远离主导极点,我们假设它们分别位于-20和-80处。随后通过MATLAB的place命令可以计算出控制器的增益矩阵。以下是相应的程序代码:图8.11p1=-2+2i;p2=-2-2i;p3=-20;p4=-80;K=place(A,B