文章目录

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

0. 受控对象与设计要求

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

0.1 受控对象

  1610872416(1)   其中:   1610872451(1)  

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

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')
  输出   微信图片_20210117163543   看一下系统的开环性能  
step_info = lsiminfo(y,t);
cart_info = step_info(1)
pend_info = step_info(2)
  1610872568(1)   系统也是不稳定,因此这里我们必须要设计控制器来稳定这个系统。  

3. 引用

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