一、开环控制响应过程
首先,辨识出系统的传递函数,并转化成状态方程
连续系统模型
>> num=[4 9 14 23];den=[2 4 6 10];G=tf(num,den)
G =
4 s^3 + 9 s^2 + 14 s + 23
-------------------------
2 s^3 + 4 s^2 + 6 s + 10
Continuous-time transfer function.
>> [A,B,C,D]=tf2ss(num,den)
A =
-2 -3 -5
1 0 0
0 1 0
B =
1
0
0
C =
0.5000 1.0000 1.5000
D =
2
看一下开环系统阶跃响应曲线:
>> step(G)
可见系统最终是收敛了,但是收敛过程存在振荡
>> eig(A)
ans =
-1.8437 + 0.0000i
-0.0781 + 1.6449i
-0.0781 - 1.6449i
通过lqr控制来解决这种震荡问题
二、LQR闭环控制响应过程
连续系统lqr()函数
[k,P,r]=lqr(A,B,Q,R)
k =
2.7874 4.4596 0.9161
P =
0.2787 0.4460 0.0916
0.4460 2.8796 1.8323
0.0916 1.8323 2.9131
r =
-2.9310 + 0.0000i
-0.9282 + 1.0756i
-0.9282 - 1.0756i
求解闭环反馈矩阵Acl
>> Acl=A-B*k
Acl =
-4.7874 -7.4596 -5.9161
1.0000 0 0
0 1.0000 0
状态空间模型建立:
>> G3=ss(Acl,B,C,D)
G3 =
A =
x1 x2 x3
x1 -4.787 -7.46 -5.916
x2 1 0 0
x3 0 1 0
B =
u1
x1 1
x2 0
x3 0
C =
x1 x2 x3
y1 0.5 1 1.5
D =
u1
y1 2
Continuous-time state-space model.
看一下闭环系统阶跃响应曲线:
>> step(G3)
可见系统最终是收敛了,但是收敛过程除了轻微超调,整个过程还是比较平滑
>> eig(Acl)
ans =
-2.9310 + 0.0000i
-0.9282 + 1.0756i
-0.9282 - 1.0756i
三、将闭环状态方程转化成传递函数
>> G4=tf(G3)
G4 =
2 s^3 + 10.07 s^2 + 15.92 s + 13.33
-----------------------------------
s^3 + 4.787 s^2 + 7.46 s + 5.916
Continuous-time transfer function.
>> step(G4)
① 传递函数和状态方程的阶跃响应都一样;
② 闭环传递函数的极点和闭环状态方程的特征值相同