您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 5.9基于欠驱动系统解耦算法的滑模控制
5.9基于欠驱动系统解耦算法的滑模控制桥式吊车、PendulumRobot、AcrobatRobot、倒立摆系统和VTOL飞行器都是典型的欠驱动系统。下面介绍一种欠驱动系统解耦算法,可解决欠驱动系统控制输入的解耦问题,从而可以设计滑模控制算法。5.9.1欠驱动系统解耦算法对于如下耦合欠驱动系统111112222222,,qppfqpgquqppfqpgqu(5.70)其中12qqq,12ppp。针对如式(5.70)所示的耦合欠驱动系统,R.O.Saber提出一种通用的解耦算法,该算法很好地解决了结构如式(5.70)的欠驱动系统耦合问题[12,13]。解耦算法如下[12]:21110212212221222qgszqdsgsgqzppgqqp(5.71)则解耦后,耦合系统式(5.70)变为1211212222122222,zzggzfpfggfqpgqu(5.72)对解耦算法分析如下:由于12zz,解耦算法的实质为在2z中消除u,即112122221111222221112222=ggzpppggggfgupfguggggfpfgg5.9.2倒立摆动力学系统的解耦对于典型一级倒立摆,小车质量为M,摆的质量为m,小车位置为x,摆的角度为。l为摆长L的一半,u为控制输入。在平衡点附近,有sin,cos1,线性化后的单级倒立摆方程为2222222()()()()()mmMglmludtMmIMmlMmIMmlmglImlxudtMmIMmlMmIMml(5.73)其中213Iml为摆杆围绕其重心的转动惯量,dt为控制扰动。控制的目标是通过给小车底座施加一个力u,使小车停留在零位置,并使杆不倒下,即闭环控制的平衡点为0,0,0x和0x。为了采用滑模控制,需要对式(5.73)进行解耦。设1q,2qx,则1p,2px。取112(),()mmMglfqpqMmIMml,122()mlgqMmIMml,22212,()mglfqpqMmIMml,2222()ImlgqMmIMml,则21222222()()mlgqmlMmIMmlImlgqImlMmIMml。采用标准解耦算法式(5.71),则解耦算法为21111220212212122221222qgsmlzqdsqqgsImlgqmlzppppgqImlqp(5.74)则倒立摆平衡点0,0x,0,0x等价于10z,20z,10,20。倒立摆模型式(5.73)最后的解耦结果为122221222122222122()()()+()()zzmmMglmlmglzqMmIMmlImlMmIMmlmglImlqudtMmIMmlMmIMml(5.75)取221222()T()()mmMglmlmglMmIMmlImlMmIMml,2222T()mglMmIMml,232T()ImlMmIMml,则上式可写为12211122213TTT+zzzqqudt(5.76)由于1121114122TmlmlqzqzzImlIml,其中42TmlIml,则上式变为12211141122212413TTTTTTT+zzzzzudt(5.77)5.9.3滑模控制器的设计针对欠驱动系统式(5.77)设计滑模控制律,取122121,zzμ,设计滑模面为12Cμ(5.78)其中123cccC。则122124132TTTT+zudtCμCμ设计控制律为21241231TTTsgnTuzhCμ(5.79)其中hdt。取Lyapunov函数为212V则sgn0hdt由上式可知,存在滑动模态,取到达时间为st,当stt时,有120Cμ,即12Cμ。5.9.4滑模参数C的设计当stt时,有221114111221222TTT=+=+zzμAAμACAμ(5.80)其中1001A,2114010T0TT000A。滑模参数C的设计原则为使12ACA为Hurwitz,以保证20μ,从而120Cμ。由122121,zzμ可知,当t时,有10z,20z,20,20。,即控制目标为0,0,0x和0x。12123114114114123123010+001+T0TT000000010010000T0TTT0TT000cccccccccACA则可通过下式设计12ACA的极点121141233231412141332321411411310+=TTTTTTTT=TT+TTT+T0sssccscscsccsscscscsccIACA由30sk得3223330sksksk,0k,可得满足极点为k的如下关系式322141314113=3TTT=3TT+T=ckckcck而得到使12ACA为Hurwitz的滑模参数C为321214313114=33+T=TTT=TTckkckcc(5.81)5.9.5仿真实例被控对象取式(5.73),物理参数取1M,0.10m,=0.50L,初始条件取(0)10,(0)0,(0)0.20x,(0)0x,干扰取=sindtt。仿真中,采用控制律式(5.79),滑模参数C按式(5.81)设计,取5k,1.5h,采用饱和函数方法,取边界层厚度为0.01,仿真结果如图5.23至图5.25所示。图5.23倒立摆的角度和角速度图5.24小车的位置和速度图5.25控制输入信号仿真程序:(1)Simulink主程序:chap5_11sim.mdl05101520-0.2-0.100.10.2time/(s)angleth05101520-0.200.20.40.60.8time/(s)anglespeeddth05101520-0.100.10.20.3time/(s)cartpositionx05101520-0.6-0.4-0.200.2time/(s)cartspeeddx02468101214161820-8-7-6-5-4-3-2-1012time(s)controlinputu(2)控制器S函数程序:chap5_11ctrl.mfunction[sys,x0,str,ts]=s_function(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case3,sys=mdlOutputs(t,x,u);case{1,2,4,9}sys=[];otherwiseerror(['Unhandledflag=',num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=4;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=[];str=[];ts=[00];functionsys=mdlOutputs(t,x,u)g=9.8;M=1.0;m=0.1;L=0.5;I=1/12*m*L^2;l=1/2*L;T4=-m*l/(I+m*l^2);T2=-m^2*g*l^2/[(m+M)*I+M*m*l^2];T3=(I+m*l^2)/[(m+M)*I+M*m*l^2];T1=m*(M+m)*g*l/[(M+m)*I+M*m*l^2]-T4*T2;th=u(1);dth=u(2);x=u(3);dx=u(4);q1=th;q2=x;p1=dth;p2=dx;z1=q1+m*l/(I+m*l^2)*q2;z2=p1+m*l/(I+m*l^2)*p2;kesi1=q2;kesi2=p2;miu1=kesi2;miu2=[z1z2kesi1]';%%%%%%%%%%%%%%%%%%%%%%;k=5;c3=-3*k;c2=-(3*k^2+T1)/(T1*T4);c1=-(k^3-T1*c3)/(T1*T4);C=[c1c2c3];%%%%%%%%%%%%%%%%%%%%%%%sigma=miu1-C*miu2;dmiu2=[z2;T1*z1+T1*T4*kesi1;kesi2];h=1.5;fai=0.01;ifabs(sigma)=faisat=sigma/fai;elsesat=sign(sigma);endut=1/T3*(-T2*z1-T2*T4*kesi1+C*dmiu2-h*sat);sys(1)=ut;(3)被控对象S函数程序:chap5_11plant.mfunction[sys,x0,str,ts]=spacemodel(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case3,sys=mdlOutputs(t,x,u);case{2,4,9}sys=[];otherwiseerror(['Unhandledflag=',num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=4;sizes.NumDiscStates=0;sizes.NumOutputs=4;sizes.NumInputs=1;sizes.DirFeedthrough=0;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=[-10/57.3,0,0.20,0];%x0=[0.01,0,0.020,0];str=[];ts=[00];functionsys=mdlDerivatives(t,x,u)%SingleLinkInvertedPendulumParametersg=9.8;M=1.0;m=0.1;L=0.5;I=1/12*m*L^2;l=1/2*L;t1=m*(M+m)*g*l/[(M+m)*I+M*m*l^2];t2=-m^2*g*l^2/[(m+M)*I+M*m*l^2];t3=-m*l/[(M+m)*I+M*m*l^2];t4=(I+m*l^2)/[(m+M)*I+M*m*l^2];ut=u(1);sys(1)=x(2);sys(2)=t1*x(1)+t3*(ut+sin(t));%ddthsys(3)=x(4);sys(4)=t2*x(1)+t4*(ut+sin(t));%ddxfunctionsys=mdlOutputs(t,x,u)sys(1)=x(1);%thsys(2)=x(2);sys(3)=x(3);%xsys(4)=x(4);(4)作图程序:cha
本文标题:5.9基于欠驱动系统解耦算法的滑模控制
链接地址:https://www.777doc.com/doc-2893203 .html