《控制系统仿真》
(实验/学习总结)报告
题目:XXXXXXXXXXXX
院 系: 电子信息与控制工程系
专 业: 测控技术与仪器专业
授课教师: 陈政强,石玉秋
本 科 生: X X X
班 级: 测控081,082
学 号:
完成时间: 2010.X.X
1. 实验内容
2. 系统数学模型的建立(实验四可选)
(2.1双摆系统数学模型的推导
为了简化系统分析,在模型的建立过程中,忽略空气流动阻力以及各种次要的摩擦力。这样,可将双摆系统抽象成小车和两个匀质刚性杆组成的系统,如图2-1所示。
图2-1 简化后的双摆系统
本系统内部各相关参数定义如下:
M ——小车的质量
x ——小车的位置
F ——加在小车上的力
, —— 左右两个摆杆的质量
2,2——左右两个摆杆的长度
,——左右两个摆杆的转动惯量
,——左右两个摆杆与竖直向上方向的夹角
对小车和摆杆分别进行受力分析,应用牛顿定律建立系统的动力学方程。小车的受力情况见图2-2。其中,和分别为左右两个摆杆对小车作用力的水平分量。
图2-2 小车的受力情况 图2-3 摆杆的受力情况(以左杆为例)
根据牛顿第二定律有:
(2-1)
左右两个摆杆的受力情况大致相同,下面以左边的摆杆为例进行分析(用下标1、2来区分左、右摆杆),其受力情况如图2-3所示。其中,、分别是小车对摆杆作用力在x轴方向的分量和y轴方向的分量。摆杆的质心B点相对于A点转动,相对线速度的大小为,而A点本身随小车以速度运动,所以B点相对于地面的速度在x轴方向的分量为:, 由此可得B点在x轴方向的加速度为 , 因此有方程:
(2-2)
B点相对于地面的速度在y轴方向的分量为:,所以B点在y轴方向的加速度为 ,因此有方程:
(2-3)
摆杆的惯量= 。在、的作用下摆杆绕B点转动,有方程:
(2-4)
同理,对于右边的摆杆可得方程组:
(2-5)
(2-6)
(2-7)
对上述7个方程进行整理,消去中间变量,整理成只含有和F以及、、x及其导数的形式。把式(2-2)和(2-5)带入(2-1)得:
(2-8)
把(2-2)式代入(2-4)解出,再代入(2-3)得方程
(2-9)
把(2-5)式代入(2-7)解出,再代入(2-6)得方程
(2-10)
以上(2-8)、(2-9)、(2-10)式便是双摆系统的精确的数学模型。若使用MATLAB 中的simulink对其进行仿真,我们需要对其进行适当的变形,使每个等式只含有一个最高阶导数项(这里二阶导数是最高阶导数),并且放到等号左面,右面不再含最高阶导数。这样处理是为了避免仿真时出现代数环错误。关于代数环,我们在后面3.1节中有较详细的说明。
2.2双摆系统数学模型的线性化
为了便于分析和计算,当、〈10度时,可以作近似处理: ,,,,,,将上述条件代入方程组(2-8)、(2-9)、(2-10),进行线性化处理之后的微分方程组为:
(2-11)
(2-12)
(2-13)
由(2-12)和(2-13)式分别解出 和 代入(2-11)式得
(2-14)
从中解得
(2-15)
将其分别代入式(2-12)和(2-13)得:
(2-16)
(2-17)
可以设状态变量为:、、 、、、,由(2-15)、(2-16)、(2-17)式易得状态空间表达式为:
其中
)
3.MATLAB仿真试验结果
(以上推导过程中,用了很多近似条件,因此,上一节所建立的模型是否可信还有待我们去验证。这里采用MATLAB对其进行软件仿真,除了用它验证数学模型之外,还可以研究系统的一些性质,例如稳定性、能控性等。
3.1 精确模型的验证
首先对线性化之前的模型即(2-8)、(2-9)、(2-10)式进行验证。我们仅忽略了空气阻力,即使在外力作用下摆角变化很大,该模型也应该较精确。
下面,我们采用MATLAB中的simulink工具箱以及模块封装技术对其进行仿真,步骤如下:
1.在命令窗口中输入simulink后回车,或单击MATLAB工具栏中的 simulink图标则可打开simulink模型库窗口。在File菜单中选择new/model,打开一个新的空白窗口,命名为“shuangbai.mdl”。
2.按图3-1编辑双摆系统的模型。
图3-1 在simulink下编辑的双摆系统的精确模型
其中,Integrator是积分器模块。双击该模块,可以在弹出的对话框中对积分的初始值进行修改,缺省值为0。
设第一行最左边的节点表示的变量为,则经过积分后变为和,同理可以得到、、以及、和。由于在simulink下显示特殊符号很困难,这里用“THETA”来注释,这不会影响仿真结果 。
我们用输入点模块(In)表示该系统的输入变量F,用3个输出点模块(Out)表示输出变量、和。
Fcn是函数计算模块,能够实现大部分初等函数运算。但它只有一个输入端和一个输出端,若要实现形如的运算,必须和聚合模块(mux)配合使用,聚合模块包含在signal Routing模块库中,可以把多路信号按照向量的形式混合成一路信号。
例如,Fcn1描述的是(2-9)式的函数关系,它的输入端就接有一个聚合模块,双击它之后弹出一个对话框,可以设置输入变量的个数。由(2-9)式易得
= (3-1)
我们把和作为聚合模块的输入,Fcn1的输出接,双击Fcn1模块,弹出对话框,见图3-2。Fcn栏提示了输入表达式的格式。可见,只能用u来表示输入的变量,例如u[1]表示输入向量的第一个分量,即聚合模块上数第一个输入量,而u[2]表示,所以在Parameters的Expression中输入的表达式应为(g*sin(u[2])-cos(u[2])*u[1])/(l1*4/3) 。同理,我们用Fcn3描述(2-10)式的函数关系,但输入的表达式同上。
图3-2 双击Fcn模块后弹出对话框
用Fcn2描述(2-8)式的函数关系,由(2-8)式易得:
=
(3-2)
那么,能否按上述方法,把、、、、、、F作为输入量,作为输出量,再把(3-2)式按照所要求的格式输入到Fcn2中呢?
注意:对于(3-2)式,这样做可能导致仿真时出错。若点击菜单栏simulation/parameters,在出现的对话框中把代数环(algebraic loop)作为错误检查的内容,见图3-3,那么在第4步仿真时就会提示出现代数环错误。
代数环,简单的说就是在求取某一个输出量的过程中又需要已知该输出量,其实质是一种隐式迭代。当表达式简单时,如(3-1)式,系统采取默认的算法可以解决这类问题,但当表达式很复杂时,如(3-2)式,包含大量非线性运算并且右边出现很多高阶导数,仿真就会出错。避免代数环错误的方法之一是对(3-2)式进行恒等变形,使表达式只含有一个最高阶导数项,并且放到等号左面(这里选择),右面不再含其它最高阶导数。例如,把(3-1)代入(3-2)式就可消去,同理消去,解出得:
=
(3-3)
输入变量为、、、、F,再把(3-3)式按照所要求的格式输入到Fcn2中即可避免代数环。
图3-3 simulation parameters对话框中设置错误检查的内容
3. 采用模块封装技术把双摆的精确模型封装成一个标准模块
模块封装是复杂系统建模和仿真时常用的方法之一。这样做有很多好处:首先,它使系统的结构更加清晰、简洁。其次,模型的通用性提高了。它可以存入自己的模块库里,使用时和simulink中其它的标准模块一样,只需双击,并在弹出的对话框中输入具体的参数值即可,而不必考虑它是如何实现的。由于内部结构被封装了起来,可以避免一些误操作,使用起来更方便。我们把双摆系统封装起来作为一个整体,在设计控制器时就可以直接调用了,作为自动控制系统的被控对象。
选中图3-1所示系统的所有模块,在菜单栏选择Edit/Create Subsystem,即可建立一个子系统。用鼠标选中该子系统,再选择Edit/Mask Subsystem,弹出如图3-4、3-5所示的模块封装设计界面。
图3-4 模块封装设计界面Icon选项卡
图3-5 模块封装设计界面Parameters选项卡
Icon选项卡按图3-4设置,Parameters选项卡按图3-5设置,表Dialog Parameters中填入需要外部输入的参数名(Variable)、参数描述(Prompt)、类型(Type)等。其它选项按缺省值设置。
注意:这里的参数名必须和步骤2中表达式里的参数名相同,另外,simulink对参数名不区分大小写。
封装好之后的模块见图3-6。此时,双击该模块,显示参数输入对话框,见图3-7,可以输入所有参数值。
图3-6 封装好后的模块
图3-7 模块参数输入对话框
如果要修改其内部结构,可以右键点击该模块,在快捷菜单中选择Look under mask菜单项,便出现图3-1所示的结构框图,并可以对其进行修改。
4.对系统进行仿真
按照图3-8,添加阶跃信号作为输入(正负两个方向的阶跃信号叠加还可以构成脉冲信号),添加示波器,利用聚合模块可以同时观测几路信号的仿真结果。这里又利用了输出点模块(Out),它把仿真结果通过矩阵tout传递到工作空间(workspace),再利用plot等绘图命令就可以方便的做出曲线。
图3-8 精确模型的仿真框图
我们在模块参数输入对话框中输入参数:M=1,==0.5,==0.6,g=9.8,F=5(阶跃信号),两个摆角的初始值为180度(3.14弧度),即竖直向下, 位移x的初始值设为0。仿真的结果见图3-9。
图3-9 精确模型的阶跃响应曲线(初始摆角为180度)
可见,位移曲线加速增长,而两个摆角的响应曲线重合,在某个大于180度的角度附近作等幅振荡。这是两个摆杆的参数相同,而又不计空气阻力所造成的结果(相当于两个相同的一阶倒立摆)。在考虑空气阻力的情况下,摆角应该做减幅振荡,最终稳定在某个大于180度(3.14弧度)的角度。从图中可以读出摆角的最大值和最小值分别为约3.64弧度和3.14弧度,平均值为3.39弧度,而利用牛顿定律可以求出在这一特殊条件下,稳态时摆杆的摆角约为3.391367弧度,这说明前面所建立的精确模型是可信的。
3.2 线性化之后的模型的验证
下面分别用精确模型和线性化之后的模型分别求系统的阶跃响应(摆角的初始值为0度(竖直向上),见图3-10、3-11。其中,M=1,==0.5,==0.6,F=0.2(阶跃信号)。
图3-10 精确模型的阶跃响应曲线(初始摆角为0度)
图3-11 线性化之后的模型的阶跃响应曲线(初始摆角为0度)
从中可知在摆角变化不大(摆角〈10度时),精确模型和线性化之后的模型的阶跃响应基本相同,但角度越大,后者的误差就越大。但是,两者都反映出当初始摆角为0度时,该系统是不稳定的。
后者的仿真结果是通过建立M文件(state.m)求得的,程序如下:
% —————— state.m ——————
% 双摆系统状态方程及开环阶跃响应
% 输入相关参数
M =1; m1 = 0.5; m2 =0.5; g = 9.8; l1=0.6; l2=0.6;
q = 4*M+m1+m2;
% 输入状态方程并显示
A =
[0 1 0 0 0 0;
0 0 -3*m1*g/q 0 -3*m2*g/q 0;
0 0 0 1 0 0;
0 0 3*g/(4*l1)+9*m1*g/(4*l1*q) 0 9*m2*g/(4*l1*q) 0;
0 0 0 0 0 1;
0 0 9*m1*g/(4*l2*q) 0 3*g/(4*l2)+9*m2*g/(4*l2*q) 0]
B = [ 0; 4/q; 0; -3/(l1*q); 0; -3/(l2*q) ]
C = [1 0 0 0 0 ; 0 0 1 0 0 0; 0 0 0 0 1 0]
D = [0; 0; 0]
p=eig(A) %求开环系统的极点
f=rank([B A*B A^2*B A^3*B A^4*B A^5*B ]) % 求系统的能控矩阵的秩
% 求开环系统的阶跃响应并显示
T = 0:0.005:5;
U = 0.2*ones(size(T));
[Y,X] = lsim(A,B,C,D,U,T);
plot(T,Y(:,1),':',T,Y(:,2),'-')
hold on
h=plot(T,Y(:,3),'-');
set(h,'linewidth',4*get(h,'linewidth'));
axis([0 3 -10 10])
% —————— end ——————
当然,这完全可以用simulink仿真,但是利用程序还可以精确的求出系统的极点和系统的能控矩阵的秩,程序的执行结果如下:
系统的极点为p =0,0,4.4272,3.5000,-4.4272,-3.5000,可见有两个不稳定的极点。
系统的能控矩阵的秩f = 4〈6,说明此系统状态不完全能控。
利用该程序可以方便的修改参数并求取线性化之后的系统的阶跃响应曲线。
3.3利用线性化之后的模型讨论系统的能控性
当M=1,==0.5,=0.7,=0.6,F=0.2(阶跃信号)时,执行程序,对线性化之后的模型的仿真结果如下。图3-12为阶跃响应曲线。
图3-12 ≠时的仿真结果
系统的极点p = 0, 0, 4.2866,3.3466,-4.2866, -3.3466。
系统的能控矩阵的秩f = 6,说明此系统状态完全能控。
改变和的值,通过大量仿真试验,发现只要≠,系统的能控矩阵的秩f = 6,系统状态完全能控;而=时,f = 4 < 6 ,系统状态不完全能控,改变其它参数时不影响这一结论。虽然这只是有限次的仿真结果,但该结论在理论上是可以证明的,由于篇幅所限,我们不进一步探讨了。)
4.结论
(通过前面的讨论可以得到下述结论:
(1) 我们所建立的模型在一定的条件下可以较精确的描述实际的双摆系统。其中,线性化之前的模型精度较高些,它仅忽略了次要的空气阻力和摩擦力,对于大范围的摆角变化都适用,和实际情况更接近些。但是,它是非线性的,分析起来不太方便。线性化之后的模型仅在摆角变化不大时才适用,但通过它可以近似的分析系统的性能如稳定性和能控性,便于进一步利用我们所学的理论设计控制器。设计好之后的控制规律可以再用线性化之前的模型(已经封装成模块,便于随时调用)进行仿真,得到的结果进而可以应用到实物仿真甚至实际系统中去。
(2) 双摆系统显然是不稳定的,从线性化之后的模型得到的仿真结果看有两个不稳定的极点。
(3) 系统的能控性只与两个摆的摆长有关,只要≠,系统的能控矩阵的秩f = 6,系统状态完全能控;而=时, f=4〈 6 ,系统状态不完全能控。虽然这不是严格证明,但这是用软件仿真得到结论,比理论证明更方便,更快,并且它对设计系统仍然具有很大的指导意义。
(4) 对于形状不规则的“摆杆”而言,、应理解为“摆杆”的质心到转动轴的距离,则上述能控性的结论仍是适用的。)