环形倒立摆Adams与Matlab联合仿真实例文档格式.docx
- 文档编号:20186046
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:21
- 大小:443.80KB
环形倒立摆Adams与Matlab联合仿真实例文档格式.docx
《环形倒立摆Adams与Matlab联合仿真实例文档格式.docx》由会员分享,可在线阅读,更多相关《环形倒立摆Adams与Matlab联合仿真实例文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
CAUTION,changedbaseofdirectionofarm
%Suc.
clearall
closeall
%---------------------------------
Ma=0.21;
Mp=0.062;
la=0.133;
lp=0.068;
La=0.25;
Lp=0.19;
Ja=5E-3;
Jp=5.65E-4;
Ca=5.52E-3;
Cp=1.69E-4;
kt=0.0419;
g=9.8;
%------------------continuousstateequation--------------------
ce=[1000;
0100;
00Mp*La^2+JaMp*La*lp;
00Mp*La*lpJp];
ca=[0010;
0001;
-(Mp*la+Mp*La)*g0-(Ca+Cp)Cp;
0Mp*g*lpCp-Cp];
cb=[0;
0;
kt;
0];
CA=inv(ce)*ca;
CB=inv(ce)*cb;
C=[1000;
0100];
%---------------------------------------------------------------
Q=diag([100,10,1,1]);
R=1;
[f,s,e]=lqr(CA,CB,Q,R);
dt=0.005;
%samplingtime
th_a=0.1%accdd('
Initialangleofarm'
0.1);
caution,clockdi
%rection
th_p=pi;
%=accdd('
Initialangleofpendulum'
pi);
caution,clockdir
%ection+
d_th_a=0.0;
%
d_th_p=0.0;
%initialvaluesofstates
dd_th_a=0.0;
dd_th_p=0.0;
u=0.0;
z=0.0;
energy=0.0;
i=1;
%--------------------------inputparameter---------------------
alpha=30.0;
%alpha=accdd('
DesignParameteralpha'
30.0);
energy_d=1.5*Mp*g*lp;
%accdd('
DesiredEnergy'
1.5*Mp*g*lp);
zeta=1%accdd('
DampingFactor'
1.0);
wc=1%accdd('
CutOffFrequency'
flag=0;
%--------------------------startingloop----------------------
fori=1:
6.0/dt
th_a_0=th_a;
th_p_0=th_p;
d_th_a_0=d_th_a;
d_th_p_0=d_th_p;
dd_th_a_1=dd_th_a;
dd_th_p_0=dd_th_p;
ifcos(th_p)>
=cos(0.2);
flag=1;
end
ifflag==0%-----------------------swimpingup------------------
dd_th_a=z-(2*zeta*wc*d_th_a+wc^2*th_a);
ydd_temp=-Mp*La*lp*cos(th_a-th_p)*dd_th_a+Mp*La*lp*d_th_a^2*sin(th_a-th_p);
dd_th_p=(ydd_temp+Mp*g*lp*sin(th_p)+Cp*d_th_a-Cp*d_th_p)/Jp;
d_th_a=d_th_a_0+dd_th_a*dt;
d_th_p=d_th_p_0+dd_th_p*dt;
th_a=th_a_0+d_th_a_0*dt+dd_th_a*dt^2*0.5;
th_p=th_p_0+d_th_p_0*dt+dd_th_p*dt^2*0.5;
else
eq_1_1=-Mp*La*lp*d_th_p^2*sin(th_a-th_p)-(Mp*la+Mp*La)*g*sin(th_a);
eq_1_2=-(Ca+Cp)*d_th_a+Cp*d_th_p+kt*u;
eq_1_left=eq_1_1+eq_1_2;
eq_2_1=Mp*La*lp*d_th_a^2*sin(th_a-th_p)+Mp*lp*g*sin(th_p);
eq_2_2=Cp*d_th_a-Cp*d_th_p;
eq_2_left=eq_2_1+eq_2_2;
%--------------------------calculationofinversematrix-------------
M11=Mp*La^2+Ja;
M12=Mp*La*lp*cos(th_a-th_p);
M21=Mp*La*lp*cos(th_a-th_p);
M22=Jp;
M=[M11M12;
M21M22];
MI=inv(M);
%-------------------calculationofparameters------------------
dd_th_a=MI(1,1)*eq_1_left+MI(1,2)*eq_2_left;
dd_th_p=MI(2,1)*eq_1_left+MI(2,2)*eq_2_left;
d_th_a=d_th_a_0+dd_th_a*dt;
d_th_p=d_th_p_0+dd_th_p*dt;
th_a=th_a_0+d_th_a_0*dt+dd_th_a*dt^2*0.5;
th_p=th_p_0+d_th_p_0*dt+dd_th_p*dt^2*0.5;
energy=0.5*Jp*d_th_p^2+Mp*g*lp*cos(th_p);
%energyofpendulum
potential=Mp*g*lp*cos(th_p);
kinetic=0.5*Jp*d_th_p^2;
%------------------------------------------------------------------------
ifflag==0
error=energy-energy_d;
u1=(Mp*La^2+Ja)*dd_th_a+Mp*La*lp*cos(th_a-th_p)*dd_th_p+(Ca+Cp)*d_th_a;
u2=Mp*La*lp*d_th_p^2*sin(th_a-th_p)+(Ma*la+Mp*La)*g*sin(th_a)-Cp*d_th_p;
u=(u1+u2)/kt;
z=alpha*d_th_p*cos(th_p)*error;
u=-f*[th_a;
th_p;
d_th_a;
d_th_p];
%-----------------Limitinput--------------
ifu>
=4.995
u=4.995;
elseifu<
=-4.995
u=-4.995;
end
%----------------------------savedata----------------------------
accel_th_a(i)=dd_th_a;
accel_th_p(i)=dd_th_p;
veloc_th_a(i)=dd_th_a;
veloc_th_p(i)=dd_th_p;
angle_th_a(i)=th_a;
angle_th_p(i)=th_p;
Energy1(i)=energy;
Energy2(i)=kinetic;
Energy3(i)=potential;
input(i)=u;
t(i)=i*dt;
%----------------------------endloop-------------------------------
subplot(221);
plot(t,angle_th_a);
xlabel('
time[sec]'
);
ylabel('
AngleofArm[rad]'
grid
subplot(222);
plot(t,angle_th_p);
AngleofPendulum[rad]'
subplot(223);
plot(t,input);
Input'
subplot(224);
plot(t,Energy1,t,Energy2,'
:
'
t,Energy3,'
--'
EnergyofPendulum'
控制模型的如图2所示:
图2控制模型
控制曲线如图3所示:
图3控制曲线
三、ADAMS建模及参数设置处理
1.建模
此处为了更为清晰的建模,将电机驱动以及连杆、摆杆的模型简化。
通过Adams建立的模型效果整体图如图4所示:
图4倒立摆模型
2.模型参数化设置
(1)首先需要对整体模型进行重力参数设置,即在本实验中取消重力。
然后添加相关的旋转副以及驱动力。
(2)新建状态变量,此题中需要新建5个状态变量。
包括:
1个输入驱动力,连杆的角度、角速度,摆杆的角度、角速度。
新建状态变量时注意命好相关的名字,以免混淆。
新建相关的状态变量如下图5所示:
图5新建状态变量
(3)建立测量量。
对于输入变量—力矩。
需要设定它的function参数,具体做法如图6所示:
图6力矩function方程
对于连杆的角速度和摆杆的角速度同样也需要进入bulid—systemelement—statevariable—modify进行设置。
具体见图7所示:
图7设置测量变量
在建立连杆的角度和摆杆的角度测量时需要建立marker点,本例中的marker点都建立在地面上。
通过杆上的两点加上地面上的一个点来建立角度的测量。
如图8和图9所示即为一个角度测量的建立过程:
图8建立角度测量
图9角度测量取点
本例中四个输出变量为如图10-a,10-b,10-c,10-d所示。
在状态变量与测量量一一相对应的情况下,即可在controls—plantExplot中输出如图11所示(1个输入变量,4个输出变量):
图10-a连杆的角速度图10-b连杆的角度
图10-c摆杆的角速度图10-d摆杆的角度
图11输出模块
四、Matlab仿真分析
1.在Adams建立Controls_Plant_1文件之后,即可开启Matlab,
2.Matlab中第一步先设置导入路径,I:
\daolibai,command窗口中输入文件名:
Controls_Plant_1。
第二步:
输入:
adams_sys。
此刻commond窗口出现如下程序:
>
Controls_Plant_1
ans=
16-Mar-201216:
59:
13
%%%INFO:
ADAMSplantactuatorsnames:
1VARIABLE_liju
ADAMSplantsensorsnames:
1VARIABLE_3
2VARIABLE_baiganjiaodu
3VARIABLE_baiganjiaosudu
4VARIABLE_lianganjiaosudu
adams_sys
Warning:
Loadingmodel'
adams_sys_template'
generatedwithanewerversion(7.3)of
Simulink.
Inadams_sysat86
adams_sys_template.mdl,line32:
block_diagramdoesnothaveaparameternamed
SampleTimeAnnotations'
.
adams_sys_template.mdl,line41:
ShowSignalResolutionIcons'
adams_sys_template.mdl,line72:
CovModelRefEnable'
adams_sys_template.mdl,line73:
CovExternalEMLEnable'
adams_sys_template.mdl,line131:
Value'
Nonadaptive'
isincompatibleto
parameter'
ZeroCrossAlgorithm'
adams_sys_template.mdl,line524:
BlockRotation'
adams_sys_template.mdl,line525:
BlockMirror'
adams_sys_template.mdl,line821:
AdamsPlantblock(mask)doesnothavea
parameternamed'
MaskPortRotate'
adams_sys_template.mdl,line964:
ToWorkspaceblockdoesnothaveaparameter
named'
3.在程序运行一段时间后即可出现PID控制模块如图12所示:
图12控制模块
为了验证改控制模块的功能,可以新建一个分析界面,同时开始采取输入值为定常量,加入simulink模块,加入定常量1。
观察四个输出的结果。
新建的分析界面如图13所示
图13新建控制模块
单击运行后,即可观察到四个输出变量分别如图14-a、14-b、14-c、14-d所示:
图14-a连杆的角速度图14-b连杆的角度
图14-c摆杆的角速度图14-d摆杆的角度
4.结论:
分析对比matlab中得到的运动图像和admas中的图像基本吻合,但也存在一定的误差,此属于正常范围。
因此可以看到此次admas和matlab联合仿真成功。
5.改变输入变量参数模型,将上一步运用的定常量1换为正弦输入,整体效果如图15:
图15正弦输入图
单击运行后,即可观察到四个输出变量分别如图16-a、16-b、16-c、16-d所示:
图16-a连杆的角速度
(2)图16-b连杆的角度
(2)
图16-b摆杆的角速度
(2)图16-b摆杆的角度
(2)
由以上图可以知道,matlab仿真的效果与adams的模拟比较接近。
两者模拟仿真结合还算比较成功。
5、总结
通过本次环形倒立摆实验的操作,我感觉自己收获很大。
基本掌握了Adams的建模、参数化设置以及Matlab的控制模块的建立。
通过这个实验,可以说是达到真正意义上的Adams和Matlab的联合仿真。
本次操作过程获得几点感悟:
(1)Adams中参数设置时建立角度测量量时,三个marker点的选取不能有错,需要仔细分析。
(2)Adams中将状态方程与function测量一一对应时需要有清晰的思维,否则很容易出错,导致后面运行结果的不正常。
(3)Adams中文件导入Matlab中时需要考虑路径、并且设置为连续运行变量,否则影响运行结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 环形 倒立 Adams Matlab 联合 仿真 实例