基于Matlab的吊车-双摆系统控制1.ppt
上传人:yy****24 上传时间:2024-09-10 格式:PPT 页数:22 大小:4.4MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于Matlab的吊车-双摆系统控制1.ppt

基于Matlab的吊车-双摆系统控制1.ppt

预览

免费试读已结束,剩余 12 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于Matlab的吊车-双摆系统控制一、吊车-双摆系统控制的描述二、吊车-双摆系统状态空间表达式建立三、应用Matlab对系统性能进行分析1、可控性2、可观测性四、控制系统综合设计和最优控制设计一、吊车-双摆系统控制的描述吊车-双摆系统是一个非线性、多变量的复杂系统,是检验各种控制理论的理想模型。实际的吊车需要将货物尽可能快地运送到目的地,并在移动过程中不能有大的晃动,这就要求吊车在移动过程中保持上下摆角平稳而且小车本身又要达到指定的位置,这些要求可通过电机的控制来实现。双摆实验控制系统双摆计算机控制系统结构图图中所标参数:M为吊车质量;m1为上摆质量;m2为下摆质量;β为下摆角;α为上摆角;L1为上摆杆长度;L2为下摆杆长度;F为拉小车的力。二、状态空间表达式的建立以控制力为输入建立双摆系统的数学模型吊车—双摆摆系统是一个单输入多输出系统,输入是一个电压值,表示小车的目标位置;6个输出对应于状态空间方程的6个状态量分别表示小车的实际位置、小车的响应速度、上摆摆杆的角度、上摆摆杆的响应角速度、下摆摆杆的角度和下摆摆杆的响应角速度。吊车—双摆系统是具有三个自由度的机械系统,其第一个自由度的广义驱动力由力矩电机产生,第二、三个自由度均为摆杆相对于铰链的自由摆动,广义力为零。建立系统的拉格朗日方程如下:可得关于小车、上摆角、下摆角的状态方程:将参数带入状态方程,可得到吊车—双摆系统状态方程为:三、应用Matlab分析控制系统性能(可控性、可观测性)可控性判别>>A=[0,1,0,0,0,0;0,-58.1558,-13.3099,0,0,0;0,0,0,1,0,0;0,-73.7445,-112.7311,0,79.6748,0;0,0,0,0,0,1;0,73.7445,112.7311,0,-247.1962,0];B=[0;9.48888;0;46.275;0;-46.275]>>M=ctrb(A,B),N=rank(M)(M称为可控性矩阵)M=1.0e+009*00.0000-0.00000.0000-0.00180.10550.0000-0.00000.0000-0.00180.1055-6.105800.0000-0.00000.0000-0.00220.12880.0000-0.00000.0000-0.00220.1288-7.36800-0.00000.0000-0.00000.0021-0.1248-0.00000.0000-0.00000.0021-0.12487.0214N=6四、控制系统综合设计和最优控制设计仿真结果连续系统的控制器采用连续系统的S函数来实现。在S函数中,只采用初始化和输出函数,即mdlInitializeSizes函数和mdlOutputs函数。在输出中实现控制器,其中S=1时为线性二次型最优控制(LQR控制)。S函数嵌入在Simulink程序中。在Simulink仿真结果中,角度通过弧度值乘以得到度的表示形式。仿真程序由三部分组成:主程序;Simulink程序仿真模型;S函数程序。主程序:cdp.m%controlforCraneDoublePendulumclearall;closeall;globalKA=[01.00000000;0-58.1558-13.3099000;0001.000000;0-73.7445-112.7311079.67480;000001.0000;073.7445112.73110-247.19620]B=[0;9.48888;0;46.275;0;-46.275]C=[100000;010000;001000;000100;000010;000001]D=[000000]'Q=[100000000;010000;00100000;000100;00001000;000001];R=[0.1];K=lqr(A,B,Q,R);cdpsim;Simulink程序仿真模型S函数程序:cdps.m%S-functionforcontinuousstateequationfunction[sys,x0,str,ts]=s_function(t,x,u,flag)switchflag,%Initialization初始化case0,[sys,x0,str,ts]=mdlInitializeSizes;%Outputscase3,sys=mdlOutputs(t,x,u);%Unhandledflagscase{1,2,4,9}sys=[];%Unexpectedflagsotherwiseerror(['Unhandledflag=',nu