4. Simulink中实现状态反馈极点配置
二阶对象与状态反馈结构
本例针对一个标准二阶对象 G(s)=1/(s²+2s+1),其状态空间实现取能控标准型:
A = [0 1; -1 -2], B = [0; 1], C = [1 0], D = 0
开环极点为 s₁=s₂=-1(临界阻尼、响应偏慢)。目标是配置闭环极点到 s₁,₂=-4±j3,对应自然频率 ωₙ=5、阻尼比 ζ=0.8,使超调约 1.5%、调节时间约 1 s。状态反馈律为 u = -Kx + r,闭环矩阵 A-BK 的特征值即为期望极点。
Ackermann 公式计算反馈增益
Ackermann 公式适用于单输入能控系统:K = [0 … 0 1] · C⁻¹ · φ(A),其中 C = [B AB … Aⁿ⁻¹B] 为能控性矩阵,φ(A) 为期望特征多项式在 A 处的取值。
期望特征多项式:φ(s) = (s+4−j3)(s+4+j3) = s² + 8s + 25,因此 φ(A) = A² + 8A + 25I。
逐步计算:
A² = [0 1; -1 -2]·[0 1; -1 -2] = [-1 -2; 2 3]
8A = [0 8; -8 -16]
25I = [25 0; 0 25]
φ(A) = A² + 8A + 25I = [24 6; -6 12]
能控性矩阵 C = [B AB] = [0 1; 1 -2]
C⁻¹ = (1/(0·(-2)−1·1))·[-2 -1; -1 0] = [2 1; 1 0]
K = [0 1]·C⁻¹·φ(A) = [0 1]·[2 1; 1 0]·[24 6; -6 12]
= [1 0]·[24 6; -6 12] = [24 6]
验证:A − BK = [0 1; -1−24 −2−6] = [0 1; -25 -8],特征方程 s² + 8s + 25 = 0,极点 −4±j3,与期望一致。
Simulink 模型搭建与验证
在 Simulink 中建立如下模型:
- 用
State-Space模块实现对象,参数A=[0 1;-1 -2]、B=[0;1]、C=[1 0]、D=0。 - 用
Gain模块实现反馈增益K=[24 6],输入接状态向量x,输出取负后送入求和点。 - 用
Step模块作为参考输入r,Sum模块计算r − Kx送入对象输入。 - 用
Scope观察输出y和状态x₁, x₂。
仿真参数:求解器 ode45,停止时间 3 s,最大步长 0.01 s。运行后应观察到:
- 输出
y超调约 1.5%,峰值时间约 0.8 s,调节时间(2% 误差带)约 1 s。 - 状态
x₂在初始阶段快速上升后回落,与x₁的导数关系一致。 - 若将
K改为[0 0],响应退化为开环临界阻尼,调节时间明显变长,可对比验证极点配置效果。
在 Simulink 中可用
Linear Analysis 工具对闭环模型做极点图,直接读取 A−BK 的特征值,确认与 −4±j3 一致。也可在 MATLAB 命令行用 eig(A-B*K) 快速核对。
Ackermann 公式仅适用于单输入系统。若对象为多输入,需改用极点配置的通用算法(如
place 函数)。此外,能控性矩阵 C 接近奇异时数值误差会放大,建议先检查 rank(C) 是否等于系统阶数。