我是靠谱客的博主 火星上麦片,最近开发中收集的这篇文章主要介绍Matlab 仿真——单自由度倒立摆(2)系统分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 0. 受控对象与设计要求
      • 0.1 受控对象
      • 0.2 设计要求
    • 1. 开环冲激响应
    • 2. 开环阶跃响应
    • 3. 引用

0. 受控对象与设计要求

这里列出上一篇文章的结果

0.1 受控对象

P p e n d ( s ) = Φ ( s ) U ( s ) = m l q s s 3 + b ( I + m l 2 ) q s 2 − ( M + m ) m g l q s − b m g l q [ r a d N ] P_{pend}(s) = frac{Phi(s)}{U(s)}=frac{frac{ml}{q}s}{s^3+frac{b(I+ml^2)}{q}s^2-frac{(M+m)mgl}{q}s-frac{bmgl}{q}} qquad [ frac{rad}{N}] Ppend(s)=U(s)Φ(s)=s3+qb(I+ml2)s2q(M+m)mglsqbmglqmls[Nrad]
P c a r t ( s ) = X ( s ) U ( s ) = ( I + m l 2 ) s 2 − g m l q s 4 + b ( I + m l 2 ) q s 3 − ( M + m ) m g l q s 2 − b m g l q s [ m N ] P_{cart}(s) = frac{X(s)}{U(s)} = frac{ frac{ (I+ml^2)s^2 - gml } {q} }{s^4+frac{b(I+ml^2)}{q}s^3-frac{(M+m)mgl}{q}s^2-frac{bmgl}{q}s} qquad [ frac{m}{N}] Pcart(s)=U(s)X(s)=s4+qb(I+ml2)s3q(M+m)mgls2qbmglsq(I+ml2)s2gml[Nm]
其中:
q = [ ( M + m ) ( I + m l 2 ) − ( m l ) 2 ] q=[(M+m)(I+ml^2)-(ml)^2] q=[(M+m)(I+ml2)(ml)2]

0.2 设计要求

对于倒立摆,当小车受到1Nsec的冲激响应的时候:

  1. θ的稳定时间 < 5s
  2. |θ-θ0| < 0.05 radians

对于整个系统,当小车收到0.2m的阶跃信号的时候:

  1. x 与 θ 的稳定时间 < 5s
  2. x 的上升时间 < 0.5s
  3. |θ-θ0| < 0.05 radians (也就是20°)
  4. 对于x和θ来说,稳态误差 < 2%

1. 开环冲激响应

首先定义我们的系统

M = 0.5;
m = 0.2;
b = 0.1;
I = 0.006;
g = 9.8;
l = 0.3;
q = (M+m)*(I+m*l^2)-(m*l)^2;
s = tf('s');

P_cart = (((I+m*l^2)/q)*s^2 - (m*g*l/q))/(s^4 + (b*(I + m*l^2))*s^3/q - ((M + m)*m*g*l)*s^2/q - b*m*g*l*s/q);

P_pend = (m*l*s/q)/(s^3 + (b*(I + m*l^2))*s^2/q - ((M + m)*m*g*l)*s/q - b*m*g*l/q);

sys_tf = [P_cart ; P_pend];

inputs = {'u'};
outputs = {'x'; 'phi'};

set(sys_tf,'InputName',inputs)
set(sys_tf,'OutputName',outputs)

先看一下该系统的冲激响应

linearSystemAnalyzer('step',sys_tf,0:0.1:5)

在这里插入图片描述
可以看得出系统不收敛(要注意的是我们之前进行过小角度假设,因此这张阶跃响应图片只在小范围内等效于实际运动情况,所以基本上大于1.5弧度之后的运动已经没有参考价值了),我们再看一下零极点位置
在这里插入图片描述
在这里插入图片描述
正如我们观察到的一样,果然两个系统都有极点在虚轴右边,因此系统不稳定。

2. 开环阶跃响应

Matlab可以让我们求取LTI系统任意输入的输出,现在我们看看一个阶跃输入的输出长什么样子(你也可以通过上面的分析工具直接查看)

t = 0:0.05:10;
u = ones(size(t));
[y,t] = lsim(sys_tf,u,t);
plot(t,y)
title('Open-Loop Step Response')
axis([0 3 0 50])
legend('x','phi')

输出
在这里插入图片描述
看一下系统的开环性能

step_info = lsiminfo(y,t);
cart_info = step_info(1)
pend_info = step_info(2)

在这里插入图片描述
系统也是不稳定,因此这里我们必须要设计控制器来稳定这个系统。

3. 引用

https://ctms.engin.umich.edu/CTMS/index.php?example=InvertedPendulum&section=SystemAnalysis

最后

以上就是火星上麦片为你收集整理的Matlab 仿真——单自由度倒立摆(2)系统分析的全部内容,希望文章能够帮你解决Matlab 仿真——单自由度倒立摆(2)系统分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部