根轨迹本质就是在看K* 对于我们传递函数分母的影响
比如这闭环个例子里面
先定义了 Gs 前馈转移函数
Hs 反馈转移函数
kG/(1+KGH)
我们只要关心KGH 就可以了
这里面Kgh= 1/[S(S+4)(S*S+4S+200]
四个poles 没有zeros
我先解释下上面的字母
K=gain就是我们设计的增益是多少
system 系统是什么,本题目是GH系统
pole 等效K下的闭环极点(这个点会随着K变化而变化,也是我们设计K的主要目的)
damping ratio阻尼数值,从欠阻尼到过阻尼变化了
Overshoot 表示根据主导二阶近似估计出来的超调量 overshoot 超调,overshoot=0 没有超调,overshoot越大,那么超调的响应,也就是ht图像最上面的那个极值点,相对于稳态一条线的数值,超了多少。
Frequency rad/s 表示角频率,单位为弧度每秒。
本题的 GH有四个开环极点,所以根轨迹有四条分支。在这个上面的变化overshoot=0 系统欠阻尼,没有任何超调问题。
---
说了些matlab牛逼的函数,这些函数可以替换我们自己调节K的补偿,设计循环的看点。
K_values = [10 100 1000 5000 10000 11600 12000];
for K = K_values
T = feedback(K*GH, 1);
p = pole(T);
fprintf('\nK = %.0f\n', K);
disp(p);
if all(real(p) < 0)
disp('Stable');
elseif any(real(p) > 0)
disp('Unstable');
else
disp('Marginally stable');
end
end
---
然后,随着gain 增大,会往上走,但是为什么分成了左右两个,我就没看明白了,以及如何判断k gain如何确定才能让系统稳定,也就是根轨迹都在 negative real axis
但是k越来越大,四个极点中,比较糟糕的靠近0的2个点,会让系统阶跃响应越来越糟糕,当靠近0的2个点,真的到达虚轴,那就是临界稳定。这个属于广义的稳定,是符合李亚普诺对于系统稳定要求,因为v正定,v导数负半正定。因此它可以满足李亚普诺夫稳定,但不满足渐近稳定。
如果K超过临界值,一对闭环极点进入右半平面:
$$
\operatorname{Re}(s)>0
$$
此时响应项变成:
$$
e^{\sigma t}\cos(\omega t), \quad \sigma>0
$$
因为:
$$
e^{\sigma t}
$$
会随着时间指数增长,所以系统响应会发散。
对应到阶跃响应中,就会看到:
- 振荡幅度越来越大;
- 输出无法收敛到稳态值;
---
总结下随着 K变大,系统可能出现以下变化:
所以,增大 K并不一定总是让系统变好。
在很多系统中,K增大可以提高响应速度,但同时会降低稳定裕度。也就是系统快速性一定和稳定性是矛盾
---
视频里比较重要的一点是 MATLAB 的交互式控制设计功能。
它不仅可以画根轨迹,还可以让我们通过拖动极点、零点来改变补偿器,从而改变根轨迹和阶跃响应。
比如视屏加入了1/(1+希望的系数*S)
我可以拖动加入的那个极点,调整为我希望看到的根轨迹,以及我期望的阶跃响应,并且这个期望的系数,也会随着我的拖动极点操作而变化。
---
后面的Notch filter:陷波滤波器真的是天书,借着gpt也不是特别懂。
## 18.3 Notch filter 在电机倒摆控制中的例子
假设我们有一个小车倒立摆系统:
- 小车由直流电机驱动;
- 倒摆杆安装在小车上;
- 控制目标是让摆杆保持竖直;
- 控制器根据摆杆角度 \(\theta\) 和小车位置 \(x\) 给电机输出控制电压 \(u\)。
系统结构大概是:
```text
控制器 C(s) ---> 电机 + 小车 + 倒摆 P(s) ---> 摆杆角度 θ
^ |
|______________________________________|
```
### 1. 问题:电机控制时出现某个频率的振动
假设我们已经设计了一个 PID 或 LQR 控制器,倒摆基本可以立起来。
但是实验中发现,当电机快速修正小车位置时,系统在某个频率附近会明显抖动。
例如,通过传感器数据或频谱分析发现,摆杆角度在:
\[
\omega = 25\ \text{rad/s}
\]
附近有明显振动峰值。
这种振动可能来自:
- 电机齿轮箱间隙;
- 皮带或传动机构弹性;
- 小车轨道结构共振;
- 编码器噪声;
- 摆杆柔性振动;
- 控制增益过高,激发了机械共振。
如果控制器继续在这个频率附近输出很强的控制信号,就可能把这个共振频率越激越厉害。
---
### 2. Notch filter 的作用
Notch filter,也就是陷波滤波器,作用是在某个特定频率附近降低系统增益。
直观理解:
> Notch filter 会在某个频率附近“挖一个坑”,专门压制这个频率的振动。
在这个例子中,我们希望抑制:
\[
\omega = 25\ \text{rad/s}
\]
附近的振动。
所以我们在控制器中加入一个 notch filter,让控制器不要在这个频率附近太敏感。
---
## 18.3 Notch filter 在电机倒摆控制中的例子
假设我们有一个小车倒立摆系统:
- 小车由直流电机驱动;
- 倒摆杆安装在小车上;
- 控制目标是让摆杆保持竖直;
- 控制器根据摆杆角度 \(\theta\) 和小车位置 \(x\) 给电机输出控制电压 \(u\)。
系统结构大概是:
```text
控制器 C(s) ---> 电机 + 小车 + 倒摆 P(s) ---> 摆杆角度 θ
^ |
|______________________________________|
```
### 1. 问题:电机控制时出现某个频率的振动
假设我们已经设计了一个 PID 或 LQR 控制器,倒摆基本可以立起来。
但是实验中发现,当电机快速修正小车位置时,系统在某个频率附近会明显抖动。
例如,通过传感器数据或频谱分析发现,摆杆角度在:
\[
\omega = 25\ \text{rad/s}
\]
附近有明显振动峰值。
这种振动可能来自:
- 电机齿轮箱间隙;
- 皮带或传动机构弹性;
- 小车轨道结构共振;
- 编码器噪声;
- 摆杆柔性振动;
- 控制增益过高,激发了机械共振。
如果控制器继续在这个频率附近输出很强的控制信号,就可能把这个共振频率越激越厉害。
---
### 2. Notch filter 的作用
Notch filter,也就是陷波滤波器,作用是在某个特定频率附近降低系统增益。
直观理解:
> Notch filter 会在某个频率附近“挖一个坑”,专门压制这个频率的振动。
在这个例子中,我们希望抑制:
\[
\omega = 25\ \text{rad/s}
\]
附近的振动。
所以我们在控制器中加入一个 notch filter,让控制器不要在这个频率附近太敏感。
---
### 3. Notch filter 的常见形式
Notch filter 的常见形式为:
C_notch(s) =
\[
s^2 + 2\zeta_z \omega_n s + \omega_n^2
\]
\[
s^2 + 2\zeta_p \omega_n s + \omega_n^2
\]
其中:
其中,分子为:
\[
s^2 + 2\zeta_z \omega_n s + \omega_n^2
\]
分子决定滤波器的**零点位置**。这里的 \(\zeta_z\) 是**零点阻尼比**,它控制陷波深度。通常 \(\zeta_z\) 越小,中心频率附近的增益下降越明显,陷波效果越强。
分母为:
\[
s^2 + 2\zeta_p \omega_n s + \omega_n^2
\]
分母决定滤波器的**极点位置**。这里的 \(\zeta_p\) 是**极点阻尼比**,它控制陷波的带宽和恢复速度。通常 \(\zeta_p\) 越大,被抑制的频率范围越宽,滤波器在中心频率附近的影响范围也越大。
因此,为了形成明显的 notch filter,通常选择:
- ω_n:想要抑制的中心频率;
- ζ_z:零点阻尼比;
- ζ_p:极点阻尼比。
为了形成明显的陷波,通常选择:
\[
\zeta_z < \zeta_p
\]
例如:
\[
\omega_n = 25
\]
\[
\zeta_z = 0.05
\]
\[
\zeta_p = 0.5
\]
代入公式:
\[
C_{\text{notch}}(s)
=
\frac{s^2+2(0.05)(25)s+25^2}
{s^2+2(0.5)(25)s+25^2}
\]
得到:
\[
C_{\text{notch}}(s)
=
\frac{s^2+2.5s+625}
{s^2+25s+625}
\]
这个滤波器会在:
\[
25\ \text{rad/s}
\]
附近降低增益,从而压制该频率附近的机械振动。
---
### 4. 加入 notch 前后的控制器
假设原来的控制器是一个 PD 控制器:
\[
C_{\text{PD}}(s)=K_p+K_d s
\]
例如:
\[
C_{\text{PD}}(s)=100+10s
\]
没有 notch 时:
\[
C(s)=100+10s
\]
加入 notch 后:
\[
C(s)=C_{\text{PD}}(s)C_{\text{notch}}(s)
\]
也就是:
\[
C(s)
=
(100+10s)
\frac{s^2+2.5s+625}{s^2+25s+625}
\]
这个控制器的含义是:
> 平时仍然使用 PD 控制倒摆,但在 \(25\ \text{rad/s}\) 附近主动降低控制器增益,避免激发结构共振。
---
### 5. MATLAB 例子
```matlab
clc; clear; close all;
s = tf('s');
% 原始 PD 控制器
Kp = 100;
Kd = 10;
Cpd = Kp + Kd*s;
% Notch filter 参数
wn = 25; % 想要抑制的共振频率,单位 rad/s
zeta_z = 0.05; % 零点阻尼比,小一些,形成较深陷波
zeta_p = 0.5; % 极点阻尼比,大一些,控制陷波宽度和平滑度
Cnotch = (s^2 + 2*zeta_z*wn*s + wn^2) / ...
(s^2 + 2*zeta_p*wn*s + wn^2);
% 加入 notch 后的控制器
C = Cpd * Cnotch;
figure;
bode(Cpd, C);
grid on;
legend('Original PD Controller', 'PD Controller with Notch');
title('Effect of Notch Filter in Motor-Inverted Pendulum Control');
```
运行后可以看到,在:
\[
25\ \text{rad/s}
\]
附近,加入 notch 的控制器增益会明显下降。
这表示控制器不会在该频率附近输出过强的控制作用。
---
### 6. 更直观的理解
没有 notch 时:
```text
电机快速修正
↓
激发机械结构 25 rad/s 共振
↓
倒摆开始抖动
↓
控制器继续大力修正
↓
抖动更加严重
```
加入 notch 后:
```text
电机快速修正
↓
notch filter 抑制 25 rad/s 附近的控制信号
↓
机械共振不容易被激发
↓
倒摆角度更加平稳
```
---
### 7. 在根轨迹里的理解
Notch filter 会给系统加入一对零点和一对极点。
零点位置大约为:
\[
s=-\zeta_z\omega_n \pm j\omega_n\sqrt{1-\zeta_z^2}
\]
极点位置大约为:
\[
s=-\zeta_p\omega_n \pm j\omega_n\sqrt{1-\zeta_p^2}
\]
如果:
\[
\omega_n=25
\]
\[
\zeta_z=0.05
\]
那么零点大约是:
\[
s=-1.25\pm j24.97
\]
如果:
\[
\zeta_p=0.5
\]
那么极点大约是:
\[
s=-12.5\pm j21.65
\]
这些新增的 pole 和 zero 会改变根轨迹形状。
它的目的不是单纯让根轨迹更好看,而是:
> 在某个容易振动的频率附近改变系统频率响应,降低共振峰。
---
### 8. 一句话总结
在电机倒摆控制中,如果电机、小车轨道或摆杆结构在某个频率,例如:
\[
25\ \text{rad/s}
\]
附近容易共振,就可以加入 notch filter:
\[
C_{\text{notch}}(s)
=
\frac{s^2+2.5s+625}{s^2+25s+625}
\]
它会专门压制这个频率附近的响应,减少倒摆抖动,让电机控制更加平稳。
---
最后讲的stack 多个Gs我是完全听不懂
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删