一级直线倒立摆matlab程序.doc
- 文档编号:134687
- 上传时间:2022-10-04
- 格式:DOC
- 页数:7
- 大小:128.50KB
一级直线倒立摆matlab程序.doc
《一级直线倒立摆matlab程序.doc》由会员分享,可在线阅读,更多相关《一级直线倒立摆matlab程序.doc(7页珍藏版)》请在冰豆网上搜索。
非线性作业
一一级直线倒立摆
如图1所示
系统里的各参数变量
M:
小车系统的等效质量(1.096kg);
:
摆杆的质量(0.109kg);
:
摆杆的半长(0.25m);
J:
摆杆系统的转动惯量(0.0034kg*m);
g:
重力加速度(9.8N/Kg);
r:
小车的水平位置(m);
θ:
摆角大小(以竖直向上为0起始位置,逆时针方向为正方向);
:
小车对摆杆水平方向作用力(N)(向左为正方向),’是其反作用力;
:
小车对摆杆竖直方向作用力(N)(向上为正方向),’是其反作用力;
U:
电动机经传动机构给小车的力,可理解为控制作用u’(向左为正方向);
:
摆杆重心的水平位置(m);:
摆杆重心的竖直位置(m)。
1.1一级倒立摆的数学建模
定义系统的状态为[r,r,θ,θ]
经推导整理后可以达到倒立摆系统的牛顿力学模型:
(1)
(2)
因为摆杆一般在工作在竖直向上的小领域内θ=0,可以在小范围近似处理:
,则数学模型可以整理成:
(3)
(4)
系统的状态空间模型为
=+(5)
(6)
代人实际系统的参数后状态方程为:
=+(7)
(8)
1.2滑模变结构在一级倒立摆系统的应用
主要包括切换函数的设计、控制率的设计和系统消除抖振的抑制。
基于线性二次型最优化理论的切换函数设计,定义系统的优化积分指标是:
Q>0,
本文采用指数趋近律:
,其中k和ε为正数。
将其代人S=Cx=0中,可以得到:
(9)
控制率为:
(10)
ε的选取主要是为了抑制系统的摩擦力和近似线性化所带来的误差和参数摄动等因素,从而使得系统具有良好的鲁棒性。
文中k=25,ε=0.8。
取变换矩阵T。
其中T=,
去Q*11=diag([30050350]),Q22=10
关于Riccati方程的解有MATLAB的lqr函数可以解出
二程序
%主程序:
直线一级倒立摆
clearall
closeall
globalCM0F
ts=0.02;%采样时间
T=30;%仿真时间
TimeSet=[0:
ts:
T];
para=[];
%options为解微分函数中的调整参数,reltol和abstol分别是设置相对误差和绝对误差
options=odeset('RelTol',1e-3,'AbsTol',[1e-31e-31e-31e-3]);
%options=[];
x0=[0.5,0.3,0,0];%初始值
[t,xout]=ode45('daolibai2eq',TimeSet,x0,options,para);%固定格式,子程序调用
%返回值
x1=xout(:
1);
x2=xout(:
2);
x3=xout(:
3);
x4=xout(:
4);
s=C
(1)*x1+C
(2)*x2+C(3)*x3+C(4)*x4;%切换函数或切换面
%选择控制器
ifF==1
%fork=1:
1:
T/ts+1
M0=40;
%u(k)=-M0*sign(s(k));
u=-M0*sign(s);
%end
elseifF==2
beta=30;
delta=0;
fork=1:
1:
T/ts+1
u(k)=-beta*(abs(x1(k))+abs(x2(k))+abs(x3(k))+abs(x4(k))+delta)*sign(s(k));
end
end
%绘图
figure
(1);
plot(t,x1,'r');
xlabel('time(s)');ylabel('CartPosition');
figure
(2);
plot(t,x2,'r');
xlabel('time(s)');ylabel('PendulumAngle');
figure(3);
plot(t,s,'r');
xlabel('time(s)');ylabel('s');
figure(4);
plot(t,u,'r');
xlabel('time(s)');
ylabel('u');
end
%子程序
functiondx=DxnamicModel(t,x,flag,para)%自定义动态函数
globalCM0F
%倒立摆经计算后模型
M=1.096;m=0.109;b=0.1;l=0.25;I=0.0034;T=0.005;g=0.98;
k22=-(I+m*l^2)*b/(I*(M+m)+M*m*l^2);
k23=m^2*g*l^2/(I*(M+m)+M*m*l^2);
k42=-m*l*b/(I*(M+m)+M*m*l^2);
k43=m*g*l*(M+m)/(I*(M+m)+M*m*l^2);
b12=(I+m*l^2)/(I*(M+m)+M*m*l^2);
b14=m*l/(I*(M+m)+M*m*l^2);
A=[0,1,0,0;0,k22,k23,0;0,0,0,1;0,k42,k43,0];
b=[0;b12;0;b14];
%Ackermann'sformula
n1=-1;n2=-2;n3=-3;
C=[0,0,0,1]*inv([b,A*b,A^2*b,A^3*b])*(A-n1*eye(4))*(A-n2*eye(4))*(A-n3*eye(4));
s=C*x;
F=2;
ifF==1
M0=40;
u=-M0*sign(s);
elseifF==2
beta=30;
delta=0;
u=-beta*(abs(x
(1))+abs(x
(2))+abs(x(3))+abs(x(4))+delta)*sign(s);
end
%stateequation
dx=zeros(4,1);
f0=0.5;
ft=f0*sin(3*t);
dx=A*x+b*(u+ft);
三仿真结果
图2
图3
图4
图5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一级 直线 倒立 matlab 程序