文章目录
-
- 0. 受控对象与设计要求
-
- 0.1 受控对象
- 0.2 设计要求
- 1. 开环冲激响应
- 2. 开环阶跃响应
- 3. 引用
0. 受控对象与设计要求
这里列出上一篇文章的结果
0.1 受控对象
其中:
0.2 设计要求
对于倒立摆,当小车受到1Nsec的冲激响应的时候:
- θ的稳定时间 < 5s
- |θ-θ0| < 0.05 radians
对于整个系统,当小车收到0.2m的阶跃信号的时候:
- x 与 θ 的稳定时间 < 5s
- x 的上升时间 < 0.5s
- |θ-θ0| < 0.05 radians (也就是20°)
- 对于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§ion=SystemAnalysis