基于Matlab和admas的倒立摆课程设计

这是基于Matlab和admas的倒立摆课程设计。
文档的链接:链接:https://pan.baidu.com/s/1M9QaT1EfHjd2kcSePQX4WA
提取码:9999

课程设计
目录

一、 研究背景 2
二、 技术的发展与分析 2
三、 原理分析 4
四、 物理模型与数学模型的建立 4
1物理模型的建立 4
2数学模型的建立 5
五、 基于MATLAB的系统时域、频域分析及系统校正 6
六、 建立ADAMS物理模型 11
七、 MATLAB与ADAMS联合仿真 15
1 matlab的仿真 15
二 adams的仿真 17
八、 所遇到的问题: 18
心得体会 20
参考文献 21

倒立摆系统建模及仿真
一、研究背景
倒立摆系统在人们的不断研究拓展之后已经从一级发展到了二级、三级、四级乃至更多级,并且产生了平面倒立摆、平行倒立摆、环形倒立摆等多样式倒立摆,其控制手段也是多种多样的。倒立摆系统是一个典型的快速、多变量、非线性、绝对不稳定系统,是检验各种控制理论的理想模型。倒立摆的研究不仅有其深刻的理论意义,同时还有很重要的工业、军事和经济背景。例如机器人的的站立和行走正是类似于双倒立摆系统;同时对火箭、卫星等飞行器的姿态的控制、用消除震动来提高侦察卫星皮摄图片的质量,也是应用倒立摆系统;还有进来在人们生活中广泛应用的时尚的电动平衡车的原理也是类似倒立摆系统;亦或是为防止单级火箭在拐弯时断裂而诞生的柔性火箭(多级火箭),其飞行姿态的控制也可以用多级倒立摆系统进行研究,相关的科研成果已经应用到航天科技和机器人学等诸多领域,由于倒立摆系统在军工、航天、机器人领域和一般工业过程中中具有重要的应用作用。控制理论在当前的工程技术界主要是如何面向工程实际、面向工程应用的问题,一项工程的实施也存在一种可行性的试验问题,用一套较好的、较完备的试验设备,将其理论及方法进行有效的检验,倒立摆就可以为此提供一个从控制理论通往实践的桥梁。通过倒立摆实验,可以对控制理论和控制方法的正确性以及实用性加以验证,对各种方法进行快捷、有效、生动的比较,是一种有效的物理证明方法。因此,研究倒立摆系统具有的挑战意义不仅仅是由于级数的增加而产生的控制难度,并且由于他的本身所具有的复杂性、不稳定性以及非线性的特点进而不断研究拓展的新的理论方法,以应用到新的控制对象中,提供更好的实验理论和实验平台。
对于我国甚至世界的科学技术的进步具有非常大的理论意义和实际意义,具有非常广阔的研究前景。
二、技术的发展与分析
我国对倒立摆系统的研究从一九六零年就开始了,最开始我国科学家按照经典控制的理论和当代控制的理论运用极点配置的方法,构造一个模拟控制器。然后从八十年代我国研究倒立摆取得了比较大的进步,例如:1985年,伊征琦等人利用模拟调节器实现了对二级倒立摆的控制。九十年代,以程福雁为带头人的科研组和以程福雁为带头人的科研组在对倒立摆的研究上取得了一定的成果。随着时间的不断发展当然还有科研工作者的不断努力、反复研究,我国在研究倒立摆系统中也取得了世界瞩目的成就,2001年李洪兴等人利用’变论域自适应模糊控制理论"成功的实现了三级倒立摆的实物系统控制并在2002年在世界上第一次成功实现了四级倒立摆的实物控制系统。在2005年7月以北京师范大学数学系教授李洪兴为带头人的科研组成功的实现了平面运动三级倒立摆实物控制,正是他们的不断研究,反复实验在世界倒立摆研究史上留下创新。目前我国研究倒立摆的对象大都集中在高级院校,例如中国的北京师范大学、北京航空航天大学以及中国科技大学,这些大学成为我国研究倒立摆系统的主要阵地,同时我国各高校采用的研究倒立摆的系统主要是香港固高公司和加拿大Quanser公司生产的系统,所以我国对于倒立摆的研究现在仍在进行中。早在上个世纪五六十年代,国外也开始了倒立摆的研究。在60年代后期。由于倒立摆具有典型的不稳定,非线性和快速性系统的控制能力,受到世界各国许多科学家的重视,都在寻找不同的控制方法实现对倒立摆的控制,1966年 Schaefer 和 cannon应用bang-bang控制理论,将一个曲轴稳定与倒置位置,实现了单级倒立摆的稳定控制。目前。倒立摆的控制方法有以下几类:线性理论控制方法、预测控制和变结构控制方法、智能控制方法的神经网络控制和模糊控制、仿人智能控制、云模型控制、鲁棒控制方法。线性理论控制方法是将倒立摆系统的非线性模型就行近似线性化处理获得系统在平衡点附近的线性化模型。然后再利用各种线性系统控制器设计方法得到期望的控制器。比如1976年 Mori etc '发表的研究论文。首先把倒立摆系统在平衡点附近线性化利用状态空间方法设计出比例微分控制器。1980年,Furuta等人基于线性化方法,实现了二级倒立摆的控制。1984年。Furuta等人首先实现双电机三级倒立摆实物控制。1984年,wates研究了LQR方法,这种方法对一,二级倒立摆(线性化误差小,模型较简单)控制时可以解决常规倒立摆的稳定控制问题。但对于像非线性较强。模型较为复杂的多变量系统(三,四级以及多级倒立摆)线性系统的设计方法的局限性就十分明显。由于线性控制理论与倒立摆系统多变量,非线性之间的矛盾使人们意识到针对多变量,非线性对象,采用具有非线性特性的多变量控制解决多变量,非线性系统的必由之路,人们先后展开了预测控制,变结构控制和自适应控制的研究,预测控制是一种优化控制方法。强调实模型的功能而不是结构。变结构控制是一种非连续控制,可使控制对象从任意位置控制到滑动曲面上。仍然保持系统的稳定性和鲁棒性。但是系统存在颤动。预测控制、变结构控制和自适应控制在理论上有加号的控制效果。但是由于控制方法复杂。成本也高。不易于在快速变化的系统上实时实现。与此同时在二十世纪八十年代,由于神经网络的理论取得了突破性进展,引起了控制界的密切关注和浓厚兴趣,很多学者提出用神经网络理论来研究性系统。利用神经网络的自适应能力、并行处理和高度鲁棒性,采用神经网络方制系统将具有更快的速度、更强的适应能力和更强的鲁棒性。但是神经网络控主要问题是缺乏一种专门适合于控制问题的动态神经网络,而且多层网络的层数元的数量、激发函数类型的选择缺乏指导性原则等,模糊控制理论产生于二十世纪六十年代,是美国加利福尼亚U.C.Berkkley学校的自动控制理论专家L.A.扎德(Zadeh)教授最先提出的,主要是为了克服过程本身的不确定性、不精确性,因此在处理复杂系统的大时滞、时变及非线性方面显示了极大的优越性。1974年,英国的Mamdani首先把模糊理论应用于工业控制,取得了良好的控制效果。目前,众多学者对常规模糊控制进行了一些改进,并发展了自适应模糊控制、自学习模糊控制、神经网络模糊控制、专家模糊控制等,而且其中的很多算法在仿真和实际工业控制中取得了较好的控制效果。常规的模糊控制器的设计方法有很大的局限性,首先难以建立一组比较完善的多维模糊控制规则,即使能凑成这样一组不完整的粗糙的模糊控制规则,其控制效果也是难以保证的。但是模糊控制结合其他控制方法就可能产生比较理想的效果。例如:北京师范大学已经采用模糊自适应控制理论成功的研制了三级倒立摆装置并对四级倒立摆系统做了仿真结果,2005年7月,北京师范大学李洪兴教授在世界上第一个成功实现了平面运动三级倒立摆的实物系统控制。仿人智能控制的基本思想是通过对人运动控制的宏观结构和手动控制行为的综合模仿,把人在控制中的“动觉智能”模型化,提出了仿人智能控制方法。研究结果表明,仿人智能控制方法解决复杂、强非线性系统的控制具有很强的实用性。云模型控制利用云模型实现对倒立摆的控制,用云模型构成语言值,用语言值构成规则,形成一种定性的推理机制。这种拟人控制不要求给出被控对象精确的数学模型,仅仅依据人的经验、感受和逻辑判断,将人用自然语言表达的控制经验,通过语言原子和云模型转换到语言控制规则器中,就能解决非线性问题和不确定性问题。
三、原理分析
倒立摆按运动形式分类有直线倒立摆,环形倒立摆,平面倒立摆和复合倒立摆等,按级数来分:有一级倒立摆、两级倒立摆、三级倒立摆和四级倒立摆,一级倒立摆常用于控制理论的基础实验,多级倒立摆常用于控制算法的研究,倒立摆的级数越高,其控制难度更大,目前,可以实现的倒立摆控制最高为四级倒立摆。此时课程设计,我研究的是一级倒立摆。首先小车能够自由地在限定的轨迹上左右移动,小车上的倒立摆一端被绞链在小车上面,另一端能够在小车轨道所在的垂直平面,上自由转动,然后施加一个力使得小车左右作直线运动,同时使倒立摆因为自身的惯性通过自身的摆动与小车的运动存在滞后性,所以摆杆能够平衡小车的运动,使得小车逐渐停止运动并静止在某一处。其工作原理跟高楼大厦的阻力器工作原理相识,利用能量守恒和惯性等抵消外界因素引起大厦的晃动。
基于此工作原理,所以我以小车所受外力F为系统的输入,小车的位移X和摆杆摆动的角度Q为输出,首先利用物理模型建立其对应的数学模型,然后参考之前的实验一去求整个系统时域响应、频域相应,并判断系统的能控性、能观性、收敛性。最后利用PID调节方式对模型进行优化,同时借助ADAMS与MATLAB 联合仿真,得到最终的仿真结果。
四、物理模型与数学模型的建立

1物理模型的建立
我在省略不必要的空气阻力,各种摩擦之后,结合前面的原理分析与自己网上查询的结果,把倒立摆的物理模型抽象成小车和匀质杆组成的系统,并通过CAD软件将所想模型画出,最终模型如图1所示,所设参数如表1所示。

在这里插入图片描述

图1 CAD所画的物理模型
表1一级倒立摆的参数设置
物理量 数值
小车质量 M1=1KG
摆杆质量 M2=0.5KG
小车与摆杆的摩擦系数 u=0.1
摆杆的长度的一半 L=1M
摆杆在数值方向所受的力 N
小车受到的推力 F=10N
摆杆相对竖直方向的偏移角度 X=1M
摆杆的转动惯量1/3M(2L)^3 Q=(pi/6)
摆杆的转动惯量 I=1/6KGM2^2
小车与摆杆之间的摩擦力 f=u
N=0.5N
2数学模型的建立
在忽略空气阻力,将系统抽象成小车和匀质刚性杆组成的系统;,忽略摆杆与支点之间等的各种次要摩擦阻力之后,很容易就通过牛顿运动定律对系统进行受力分析。
首先对小车进行受力分析,水平方向有:
M1*=F-u*-f (1)
因为摆杆在摆动过程中受到的阻尼有:空气的阻尼,转轴与轴承间的摩擦阻尼,但是我们忽略了空气阻尼,转轴与轴承间的摩擦阻尼不可忽视,所以要加上。
再对摆进行受力分析,水平方向有:
=M2*+M2L**SIN(Q)-M2LSIN(Q) (2)
然后将式子1和2进行合并得到系统的一个运动方程:
M1*+u*+M2*+M2*L
SIN(Q)-M2L**SIN(Q) (3)
为了推出系统的第二个运动方程,我就对摆杆垂直方向上的合力进行分析,可以得到下面方程:
=-M2
LSIN(Q)+* (4)
对倒立摆应用动量矩定理,以Q顺时针方向旋转为正,设摆绕着质心的转动惯量为I ,则有:
NLSIN(Q) -fL* =I* (5)
然后将式子4和5进行合并得到式子6:
M2*L
+(I+M2L^2)-M2gLSIN(Q)=0 (6)
式子6和式子3整合得到系统的方程组:
M1
+u*+M2*+M2L**SIN(Q)-M2LSIN(Q)
0=M2*L
+(I+M2L^2)-M2gLSIN(Q) (7)
由方程组可知该系统是明显的非线性系统。为便于控制器的设计,需要将系统在工作点( Q=O)进行线性化处理。当摆杆与垂直向上方向之间的夹角与1(单位是弧度)相比很小(即g<<1)时,则可以进行近似处理: cos0= -1,sin0=-Q,(dQ/dt)^2=0。为了与控制理论的表达习惯相统一,用F表示被控对象的输入力F,经线性化处理后系统的数学模型成为如下微分方程表达式:
(I+M2
L^2)-M2LQ=M2L*
M1*+M2*+u*+M2L=F (8)
然后利用微分方程表达式进行拉普拉斯变化得到以下方程组:
(M1+M2)X(s)s2+u*X(s)*s-M2*L*Q(s)*s2=U(s)
(I+M2
L2)*Q(s)*s2-M2
LgQ(s)=M2*LX(s)s^2 (9)
然后得到:
X(s)=[(I+M2
L2)/M2*L-g/s2]*Q(s) (10)
把式子10带入式子9,经整理后得到以输入力u为输入量,以摆杆摆角Q为输出量的传递函数如图2所示,以小车位移X为输出量的传递函数如图3所示:

图2传递函数1

图3传递函数2
同时利用式子8求出状态空间方程与传递函数可以进行比对,看所算式子是否正确,状态空间方程如图4所示。

图4状态空间方程

五、基于MATLAB的系统时域、频域分析及系统校正
1基于MATLAB的系统时域、频域分析
根据自己建立的传递函数1、2在matlab里面编写相应的代码代码如下:
M1=1;%小车重力
M2=0.5;%摆杆重力
u=0.1;%小车与摆杆的摩擦系数
L=1;%摆杆的长度的一半
N=5;%摆杆的重力
F=10;%小车受到的推力
X=10;%小车的位移
Q=(pi/6);%摆杆相对竖直方向的偏移角度
I=1/6;%摆杆的转动惯量1/3M2L^3
q=(M1+M2)(I+M2L2)-(M2*L)2;
g=9.8;
num1=[M2L/q 0 0]
den1=[1 u
(I+M2L^2)/q -(M1+M2)M2gL/q -uM2gL/q 0];%输入F,输出角度
num2=[(I+M2
L^2)/q 0 -M2gL/q];
den2=[1 u*(I+M2L^2)/q -(M1+M2)M2gL/q -uM2g*L/q 0];%输入F,输出位移
sys1=tf(num1,den1)
sys2=tf(num2,den2)
subplot(4,2,1);step(sys1)
subplot(4,2,2);step(sys2)
subplot(4,2,3);bode(sys1);
subplot(4,2,4);bode(sys2);
subplot(4,2,5);nyquist(sys1)
subplot(4,2,6);nyquist(sys2)
subplot(4,2,7);pzmap(sys1)
subplot(4,2,8);pzmap(sys2)
这里我将系统的时域响应、伯德图、奈斯图、零极点图的代码都写出来,并得到以摆杆角度、小车的位移的传递函数1和2,传递函数1和2如图5所示,时域响应、伯德图、奈斯图、零极点图如图6所示,并对传递函数2的奈斯图放大方便判断稳定性。

(a)摆杆角度的传递函数1 (b)小车位移的传递函数2
图5传递函数1和传递函数2

图6时域响应、伯德图、奈斯图、零极点图

图7 传递函数2的奈斯图放大
结论:由上图的时域响应相应的图像可知,摆杆和小车都是发散的,都是随着时间,其摆动角度和位移不断增加,并不稳定。
由两个函数的伯德图可知,正幅值裕度与y=0轴的交点比正相位裕度与y=180°的交点大,所以系统并不稳定。
由两个函数的奈斯图可知,两个奈斯图都包围(-1.0)点,所以不稳定。
由两个函数的零极点图可知,×代表零点,○代表极点,两个传递函数的奈斯图的极点在[s]平面的左右两边,说明两个传递函数都不是稳定的。
由于我不确定自己的传递函数是否正确,所以我利用自己前面求得状态空间方程进一步判断传递函数的正确性,排除系统的不稳定是因为我传递函数求错的情况,并判断系统的能控性与能观性,状态空间代码如下:
M1=1;%小车重力
M2=0.5;%摆杆重力
u=0.1;%小车与摆杆的摩擦系数
L=1;%摆杆的长度的一半
N=5;%摆杆的重力
F=10;%小车受到的推力
X=10;%小车的位移
Q=(pi/6);%摆杆相对竖直方向的偏移角度
I=1/6;%摆杆的转动惯量1/3M2L^3
q=(M1+M2)(I+M2L2)-(M2*L)2;
g = 9.8;
p = I*(M1+M2)+M1M2L^2;
A=[0 1 0 0;0 -(I+M2L^2)u/p (M22*g*L2)/p 0;0 0 0 1;0 -(M2Lu)/p M2gL*(M1+M2)/p 0]
B=[0;(I+M2L^2)/p;0;M2L/p]
C=[1 0 0 0;0 0 1 0]
D=[0;0]
sys=ss(A,B,C,D)
sys1=zpk(sys)
step(sys1)
M=[B,AB,A2*B,A3B,A^4B]
rankM=rank(M)
N=[C,C
A,CA2,C*A3,CA^4]
rankN=rank(N)
运行代码得到传递函数如图8所示,并与图5的传递函数进行比较,看是否相同,系统的能控性与能观性结果如图9所示。

图8状态空间方程所得的传递函数

图9 系统的能控性与能观性
结论:状态空间所得传递函数与图5传递函数相同,说明我求得的传递函数正确,分析方向没有错,并且系统是可观可控的。
2基于SIMULINK的系统矫正
由系统的时域响应、伯德图、奈斯图、零极点图可知,系统并不稳定,所以需要一定条件使得系统稳定,所以我采用simulink的PID调节来使得系统稳定。但是怎么建立simulink模型困扰我很久,然后我通过查找资料和翻阅之前的控制工程与基础,并结合题意建立出对应的simulink模型,因为只对摆杆的角度Q分析的话,因为角度Q的变化率说明输入值为simulink模型思路如图10所示,simulink模型如图11所示。

图10 simulink模型思路构建

图11 simulink模型
首先,先断开PID的回路,运行模型得到的角度与位移图像如图12所示,此图像与之前matlab的时域响应图像完全重合,表明simulink模型没有问题。

图12 PID调节之前的函数图
验证模型之后,进行PID的调节,先调对应角度Q的PID调节器,我先输入P值,看图像的偏移量是向上还是向下,如果向下就增大P,如果向上就减小P,待曲线在波动之后,调节I、D值,I的作用是使整个曲线更加收敛靠近与Y=0这条线,D的作用是使得这个曲线的波动变化,减少噪声,结合PID公式的原理不断的调试PID三个数值最后得到稳定的图像,表示系统此时处于稳定,角度和位移的PID数值图像如图11所示,角度和位移的稳定图像如图13所示。

(a)角度的PID数组 (b)位移的PID数组
图13 角度和位移的PID数组
角度的PID数组的P、I、D分别是300、800、100,位移的PID数组的P、I、D分别是-80、-1、-65.

图14角度和位移的稳定图像
六、建立ADAMS物理模型
首先,把adams与matlab的单位统一,点击settings的units,在弹出的界面中的length设置为meter。然后点击bodies区的regidbody建立一个中心在原点的长宽高都是20cm的方块代表小车,并重名为car,方便后期选定等等,建立小木块过程如图15所示。

图15 小木块参数
然后点击bodies区的regidbody建立一个长为2m、宽为2cm、高为2cm的长杆代表摆杆,并且摆杆的下端与小木块的中心重合,建立参数如图16所示。

图16摆杆参数
然后点击bodies区的construction的点和forces区的flexible connection的弹簧,在小木块底部的中点建立一个地,并以这个地点向右拉一个弹簧表示小车在受到里的作用后通过弹簧模拟小车的来回摆动,我的地点的位置是(0,-0.1m,0),弹簧的刚度为0,阻尼系数为0.1,弹簧的参数和所建模型如图17所示。

图17 弹簧的参数和所建模型
然后点击connections区的joints的revoluto joint,在小木块与摆杆的连接处建立一个转动副,点击connections区的joints的translationsal joint,在小木块底部中点与地之间建立一个相对于地水平移动的移动副,所建转动副与移动副如图18所示。

图18 所建转动副与移动副
然后点击forces区的applied forces的forces,在小木块和摆杆的连接处也就是小木块的中心施加一个,我施加了一个100N的力,如图19所示。

图19 对小木块施加力
然后就是对摆杆,小木块定义他们的质量和转动惯量,分别点击小木块和摆杆,在所弹出的Modify body界面的define mass by后面选择uear input,分别输入小木块和摆杆的质量0.5和1,同时,我建立的摆杆是宇Y轴重合,所以摆杆摆动的时候是绕全局坐标轴Z转,饶局部坐标轴Y转,所以在Y轴的框里面填上摆杆的转动惯量,木块与摆杆的参数设置如图20所示。这时可以进行仿真,看所建模型是否有错误,就能够提前的发现。

(a)木块的参数设置 (b)摆杆的参数设置
图20 木块与摆杆的参数
此时仿真结果是系统整体向右移动,同时摆杆绕木块中心一直旋转。
然后就是创建关于角度、位移的状态变量,位移的测量最好选在木块和弹簧的连接形成的maker点,因为木块的位移变化最直观也最容易测量,如果选择其他点,容易出现误差和错误。然后点击elements区的system elements的X符号,表示创建状态变量;并把名字设为A,在F(time)区新建dispeacement函数的angle aboutZ,表示在Z轴为全局坐标为参考建立一个测量角度变化的函数,然后点击assist,在form marker区选择木块与摆杆的转动副所涉及的两个点中的木块的marker点,在to marker去选择摆杆的marker点,摆杆角度测量的状态变量已经建立好了。然后就是移动副的状态变量的建立,同样,然后点击elements区的system elements的X符号,重命名为X,表示位移,在F(time)区新建dispeacement函数的distance along Z,在to marker和along marker选择移动副所涉及的两个点中的地的marker点,在form marker区选择木块的marker点,小车移动测量的状态变量也已经建立好了。最后建立小车所受外力的状态变量F,同样的步骤,重命名为F,在F(time)区填入0.0,小车所受外力的状态变量也已经建立好了。摆杆角度的状态变量建立流程图如图21所示,小车移动的状态变量建立流程图如图22所示。

图21摆杆角度的状态变量建立流程图

图22 小车移动的状态变量建立流程图
然后将图17所建的力进行修改,因为这个力是matlab仿真结束之后返回的值,点击力,在弹出的方块的function处选择data elemrnt的algebraic variable vaule,然后再点assist选择之前建立的F状态变量,表示作用在小车上的F是根据matlab的返回值而变化的。F的修改流程图如图23所示。

图23 F的修改流程图
此时再一次进行仿真,因为力已经没有了,所以正确仿真结果应该是不动,如果出现其他异常的仿真情况,那说明自己所建的模型存在错误,可以及时修改。
最后就是导出相关的状态模型和参数文件,点击plugins区的control的plant export,在new control plant和file prefix栏命名为daolibai,在input signal和output signal框分别选择F和A、X,在target software选择matlab,analysis type选择non_linear,并在在input signal和output signal框的F和A、X分别加上.xiaoshijie201931761313.,最后点击确定。就可以在自己之前所设定的地址查看生成的四个文件,我的分别是aviewAS、daolibai.adm、daolibai命令脚本文件、daolibai.m,生成的文件如图24所示。

图24生成的四个文件
七、MATLAB与ADAMS联合仿真
1 matlab的仿真
在adams成功生成所需要的文件后,打开matlab,首先将matlab的工作区换成adams生成文件的区域如图25所示,然后点开生成的daolibai.m后缀为.m的文件,这是adams仿真生成所用的代码文件,然后在matlab的工作区输入adams的文件,我的是daolibai,然后就在编辑器里面运行daolibai.m文件的代码,在工作区输入adams_sys,然后弹出adams_sys的对话框,如图26所示,adams_sub已经设置了输入、输出信息。然后将adams_sub复制到自己所建的仿真模型里面去,并点击adams_sub,弹出内部函数关系图,再点击msc software,在弹出框的Adams Solver type部分选择fortran,Animation mode部分选择interactive,Simulation mode选择continuous,所有的仿真的调节已经全部准备完毕。仿真模型的思路如图27所示,仿真模型如图28所示。

图25 更换matlab的工作目录

图26 adams_sys生成adams_sub

图27 matlab和adams联合仿真的模型构建思路

图28 matlab和adams联合仿真的模型
接着就是对系统进行PID调节,因为PID三个参数没有任何借鉴,所以我的思路是对应角度Q的PID调节器,我先输入P值,看图像的偏移量是向上还是向下,如果向下就增大P,如果向上就减小P,待曲线在波动之后,调节I、D值,I的作用是使整个曲线更加收敛靠近与Y=0这条线,D的作用是使得这个曲线的波动变化,减少噪声,根据之前自己调节PID总结的规律,我先改变摆杆角度的PID,这个很容易就调出来,然后再调跟位移有关的PID,同样的原理,先输入P值,看图像的偏移量是向上还是向下,如果向下就增大P,如果向上就减小P,待曲线在波动之后,调节I、D值,我在调了两个小时后,成功使得曲线由波动趋于平稳,其中角度的PID数值分别是250、0、85,位移的PID数值分别是1、0、19,最终两个PID的参数如图29所示,最终仿真结果图如图30所示,并录制matlab的仿真结果视频。

图29 两个PID参数值

图30 matlab和adams联合仿真的结果图
二 adams的仿真
打开adams,然后打开之前建立的xiaoshijie201931761313.bin文件,然后点击file→impot,在弹出的“File Import”对话框中,选择“File Type”后下拉列表中的“Adams/Solver Analysis ( * . req,.gra, . res) ”。然后导入matlab反正生成的.res后缀文件,并把modelname改成daolibai。然后点击results的postprocessor,然后再左上角点击选择animation,然后在界面中右击鼠标选择load animation,在弹出的界面点击daolibai,模型已经下载好了,再点击界面上方的播放,录制adams最终仿真视频,然后查看matlab的仿真结果,在左上角选择plotting,,选择Source”后下拉列表中的Result Sets。.选择Simulation列表中的daolibai。分别选择Result Set列表中的A、F、X,再选择Component列表中的Q。单击Add Curves按钮,生成变量A、F、X的仿真曲线,与MATLAB中角度、位移、力的scope的仿真结果一致。变量A、F、X的最终仿真曲线如图31所示。

图31 A、F、X的最终仿真曲线
3 添加模型
因为adams查看到了matlab对力F仿真的结果,所以在simulink模型中添加属于力的scope,并运行显示力的变化,力的曲线如图32所示。Matlab力的曲线刚好与adams的F的曲线相对应。

图32力的曲线
八、所遇到的问题:
1、最开始对倒立摆的运动原理并不是很清楚,然后在网上搜索倒立摆的相关原理与分析,确定倒立摆是怎么运动的,网上有一些用matlab设计倒立摆的文章,我找了一些都看了看,理解这些文章是怎么做的,然后就自己利用之前所得实验一和实验二的经验开始做课程设计。
2、在建数学模型的时候,对于小车水平的受力分析存在问题,因为我看到一些文章加了一个摩擦系数u小车的速度,一些文章没有加,同时也不理解u的含义,便查找资料,因为摆杆在摆动过程中在与小车的连接点有转轴与轴承间的摩擦阻尼,而这个阻尼正是摆杆抵消小车运动产生的惯性,使得小车在受到力的作用后,运动一段距离就会静止在某一个位置上,所以我就在小车水平的受力分析方程中加上了u*。
3、在建立simulink模型对matlab的系统校正时,由于对整个系统的输入输入的确定不是很清楚,然后回归课本和相关文章,重新分析了倒立摆系统整体的工作原理,利用一些确定的因素,例如:在没有力的作用下,倒立摆的输入r(s)=0,就可以将控制流程图进行改变,最后将整体的控制框图确定。为什么倒立摆系统的输入为0呢,还是在网上搜寻,因为我们希望倒立摆在尽可能地抵抗干扰力F,从而保持平衡在垂直位置,但是F不属于倒立摆系统的输入,这个倒立摆系统本身就是平衡的,只是在某一个瞬间收到一个力F的短暂作用后,倒立摆自身去抵消力F施加给小车的惯性,所以倒立摆系统的输入为0,只是有干扰的输入。而且这种0输入,抵抗干扰的控制问题一般统称为 Regulator problem。
4、在建立adams模型的时候,虽然有大体的引导,但是还是出了几个严重的问题。
a、首先adams的长度单位与matlab的长度单位不一样,adams是cm,matlab是m,使得我在进行联合仿真的时候,simulink的adams_sub模块与matlab我定义的一些参数冲突,仿真直接失败。
b、初期的建模仿真,因为一直点击仿真按钮,使得报出错误,后续返回等待就好了。
c、在进行状态变量设定的时候,marker点的选取错误,因为这个点的选择是由从那个点开始,到作用到那个点的原则,但是没有确定好木块与摆杆因为转动副、移动副而确定marker点,后来找到简便方法,点击所要的转动副、移动副右键选择joint,然后弹出选择info,就会显示这个固定副与两个所连接的物体的点。例如移动副选取效果如图33所示。

图33 移动副的选取效果
d、在生成状态变量文件的时候,选择的input signal与output signal的F、A、X没有这个项目的名称,使得生成的文件无效,如果手动加上就没有问题。无效选择与有效选择的状态变量如图34所示。

图34无效选择状态变量

图34 有效选择的状态变量
e、紧接上一个问题,当出现无效选择的时候,生成的文件不会保存到开始选择的目录下,而是保存到了adams默认的工作目录下了,所以右键adams,选择属性,找到adams的起始位置,然后在网盘当中复制起始位置,就能看到修改状态变量后生成有效的文件了。
f、在开始进行matlab仿真的时候,要先运行adams生成的.m文件,在输入adams_sys,相关参数才能输入到adams_sub当中,不然后续仿真是没有反应的,因为adams_sub中没有任何信息。
g、最耗费时间的就是matlab仿真模型中的PID参数调整,最开始我只有自己总结的经验,先调对应角度Q的PID调节器,我先输入P值,看图像的偏移量是向上还是向下,如果向下就增大P,如果向上就减小P,待曲线在波动之后,调节I、D值,I的作用是使整个曲线更加收敛靠近与Y=0这条线,D的作用是使得这个曲线的波动变化,减少噪声。不过等我已经调好了才发现一个口诀,PID的调节口诀如图35所示,最后联合仿真时,控制系统输出分为线型与非线性。

如图35 PID的调整口诀
h、adams_sub里的msc software的Adams Solver type应该选用FORTRAN,如果选择C++那么仿真的时候,就算仿真没有任何问题但是仿真的动画是无响应的。
心得体会
经历本次课程设计,首先,我对matlab与adams的联合仿真流程更加熟悉,而且我对matlab的适用范围也有了新的认识,对PID的调节与PID每个参数的含义也更加清楚。现在对adams的使用也更加熟悉,之前全是跟到书上的流程一眼一板的做,但是对很多步骤这样设置的原因或者是为什么要这样设置完全不懂,我也发现adams可以在新版老版之间相互切换,有些设置就能更加轻松的找到。之前实验二的跷跷板是有文件提供的,但是这次没有,这次的参数、状态变量设置跟倾向于现实,因为实验二只是建立控制系统接口,但在这次课程设计当中是实把实得设置木块、摆杆一些根据我自己设定的参数,这样我就能通过这次课程设计解决更多的时间问题,而不是还停留在跟到书操作的水平,我对于adams的提升大于matlab。因为这次求时域响应、频域相应等等都比较简单,比实验一简单多了,所以做起来得心应手,像时域响应的step、bode、nyquist,零极点的pzmap函数,状态空间的ss函数做起来毫无压力,不需要翻书,因为我之前用matlab做过识别,所以对这些代码也相对熟悉一点。同时,我还发现一个现象,最开始我调出稳定的曲线对应的PID值的时候,忘记保存了,同时我也没有记住这组数据,后面我又开始调,调出的数值与第一次完全不同,但是都能达到问题,曲线也相差不大,所以明白,一个系统PID数值并不是固定的,或是只存在一个区间里面,而是有很多组,通过P、I、D三个数值再根据PID的公式得到一个相同效果的调节曲线,所以我们可以不断的去尝试数据,我就得到了4组相差比较大,但是调节效果差不多的数据。我还通过倒立摆这种典型的0输入、抵抗干扰的控制问题了解到了这一系列的问题,对于这类问题的解决方法、控制流程图的建立也更熟悉。同时因为这次课程设计,我感觉对自己的情绪自控能力也提升了很多,在这次设计过程中,建立了不下五层的adams模型,调了至少4到5小时的PID参数,几次都恼火的莫法,明明就相差不大或者自己没有变动好大,按照自己的逻辑建模等等问题,但是就是出现了很多奇葩并且没有见过的问题,不过这些问题对于现在的我来说已经没有意义了,我已经跨过了,就如我之前文实验室老师,考研和读研恼火吗,老师说现在来看也就那样,因为他已经跨过并且成功找到了不错的工作,现在我也更能体会他所说的话,同时也对我后面考研有了很大的力量,不管好难,自己一步一步、一点一点的解决,任何难题也就那样,也就是过程更长、复杂而已。
总的来说,这次课程设计我的能力又提升了一大截,如果说通过实验一我对这门课程的全部作业应该没有问题了,而这次课程设计使得我能够完整、独立的完成一些没有任何提示的生活例子设计,受益匪浅。

参考文献
[1]韩复健.倒立摆系统的发展研究以及意义[J].山东工业技术,2014(17):144.DOI:10.16640/j.cnki.37-1222/t.2014.17.153.
[2]应再恩,平雪良,陈鲁刚.基于ADAMS和MATLAB的双回路PID控制倒立摆联合仿真[J].机械传动,2012,36(08):64-67.DOI:10.16578/j.issn.1004.2539.2012.08.011.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值