第 10 章

传递函数、极点和零点

我们能从一个分式里读出系统的全部个性吗?

第 10 章:传递函数、极点和零点 ↗

系统的配方

朱恩: 让无人机在 1 m 高度悬停,用 4.9 N 的基础推力平衡重力。从这一基准出发,同时测量请求的变化量和实际高度的变化量。在新请求发出之前,两者的变化量都是零。在阶跃示例中,请求在 t=0t=0 时跳到 2 m,所以它的变化量变为 1 m,而此时无人机仍在 1 m 高度。

西奥: 那就好,因为上一章我们丢掉了 −h(0)-h(0) 那几项,结果公式撒了谎。这次从悬停状态开始测量,那些初始值真的是零,所以它们是光明正大地消失的。

ΔH(s)=Kpms2+cs+Kp⏟G(s)⋅ΔR(s)\Delta\out{H}(s) = \underbrace{\frac{\eff{K_p}}{m s^2 + c s + \eff{K_p}}}_{G(s)} \cdot \Delta\sp{R}(s)

ΔR(s)\Delta\sp{R}(s) 是相对 1 m 的请求变化量的变换;ΔH(s)\Delta\out{H}(s) 是相对 1 m 的实际变化量的变换。G(s)G(s) 由无人机和控制器决定,是固定的。它就是传递函数:输出变化量除以输入变化量,且两个变化量都从零开始。

图上显示的仍然是离地高度。把 1 m 的起始高度加到公式预测的变化量上,就得到图上蓝色的高度。

米卡: 朱恩说对了:这个分数就是无人机。它就像无人机的配方。喂进任何原料,它都会告诉你出来什么!

在同一架无人机上试试三种不同的输入。配方永远不变,变的只是 ΔR(s)\Delta\sp{R}(s)。

第 10 章:传递函数、极点和零点 ↗

新词

传递函数 G(s)G(s)
变换后的输出变化量 ÷ 变换后的输入变化量,从相同的静止状态出发。对这架线性无人机来说,它是 ss 的多项式之比。
从静止开始(零初始条件)
在 t=0t = 0 时,每个变化量和它的速度都是零,就像我们从悬停状态开始测量时那样。这时第 9 章里像 −h(0)-h(0) 这样的初始值项也都是零,G(s)G(s) 就说明了一切。

极点:系统想要待的地方

G(s)G(s) 在哪里爆掉?在分母为零的地方。这些点就是极点,用 × 表示。这架无人机有两个极点,正好对应第 7 章中两种自然的 este^{st} 运动。

在第 8 章,eate^{at} 的变换在 s=as = a 处尖叫。反过来读:GG 在哪里尖叫,哪里就藏着一个运动 epte^{pt}。

朱恩: 所以极点就是第 7 章的模态,坐在地图上!

现在反过来。与其选增益再求极点,不如让我们拖动极点,看看会得到什么样的无人机。这需要第二个旋钮 Kd\eff{K_d}:一个对抗速度的推力,我们会在第 11 章正式认识它。它会加到阻力 cc 上,两个根是 pp 和它的镜像孪生 pˉ\bar p(上面那一横把虚部的符号翻过来,就像第 6 章里的那对孪生):

ms2+(c+Kd) s+Kp=0⟹s=p, pˉ(极点)\begin{aligned} & m s^2 + (c + \eff{K_d})\,s + \eff{K_p} = 0 \\ \Longrightarrow\quad & s = p,\ \bar p \qquad \text{(极点)} \end{aligned}

第 10 章:传递函数、极点和零点 ↗

先预测一下! 如果我们把极点拖到 s 平面的右半平面,无人机会怎样?

第 10 章:传递函数、极点和零点 ↗

读懂这张地图

动手玩玩吧。几条规则会立刻跳出来,每一条都是乔装打扮的老朋友:

  • 左半边 = 平静下来,右半边 = 爆掉。实部 σ\sigma 就是 eσte^{\sigma t} 收缩或增长的速率。
  • 越往左 = 越快。调节时间大约是 4/∣σ∣4/|\sigma| 秒(竖直虚线):这就是第 7 章的四个时间常数,因为 e−∣σ∣te^{-|\sigma| t} 在 ln⁡50/∣σ∣≈3.9/∣σ∣\ln 50/|\sigma| \approx 3.9/|\sigma| 秒后就低于 2 %。
  • 越往上 = 摆得越欢。高度 ω\omega 就是第 7 章的阻尼振荡频率,所以摆一次要 2π/ω2\pi/\omega 秒。
  • 角度决定超调。从负实轴量起的角度 θ\theta 给出 ζ=cos⁡θ\zeta = \cos\theta(第 7 章的圆),超调是 e−π∣σ∣/ωe^{-\pi|\sigma|/\omega}(虚线射线)。靠近实轴时几乎不超调,靠近竖直轴时超调很大。(对两个极点、没有零点、从静止开始的情况,这是精确的。零点会改变它:下一节里,一个零点把 12 % 变成了 15 %。)

米卡: 我只想放一个极点在很高的地方,一个在很低的地方。可它不让!下面那个总是跟着上面那个跑。

西奥: 还记得第 6 章里的那对旋转箭头吗?真实的无人机有真实的运动,所以每个旋转的 este^{st} 都需要它的镜像孪生来抵消虚部。复数极点总是成镜像对出现。

先预测一下! 保持 σ=−2\sigma = -2,把极点笔直往上滑,从 ±4i\pm 4i 滑到 ±8i\pm 8i。什么会变?

朱恩: 我们一回答,游乐场就跳了一下:幽灵那一对在 ±4i\pm 4i,新的一对在 ±8i\pm 8i。包络一样,摆动多了一倍,第一下也摆得大多了。

米卡: 要是两个极点都在实轴上呢?一个在 −0.2-0.2,一个在 −5-5。

朱恩: 快的那个一秒钟就没了。慢的那个才是老大。

第 10 章:传递函数、极点和零点 ↗

新词

极点
使传递函数爆掉的 ss 值。每个极点 pp 都是系统的一种运动 epte^{pt}。
镜像对 p, pˉp,\ \bar p
实部相同、虚部相反的两个极点。实系统的复数极点总是这样成对出现。
主导极点
离竖直轴最近的极点。它的慢运动比其他运动都活得久,所以通常由它决定调节时间,除非有一个零点几乎正好压在它上面(第 11 章就有一个)。

零点:快速一瞥

分子也可以为零。那些点就是零点,画成 ○。通常它们改变每个极点的运动在输出中出现的多少。如果一个零点正好落在一个极点上,公因子相消,那个极点就从这份输入到输出的配方中消失了。不过它仍然藏在系统里:用别的方式推一下无人机,比如一阵风,那个运动就又回来了。如果藏起来的极点在右半边,这一点就非常要紧。

这是一个极点固定在 −2±3i-2 \pm 3i 的系统,还有一个可以滑动的零点。(我们游乐场里的 Kd\eff{K_d} 对抗的是无人机的速度,所以它的配方没有零点。要是改成对抗误差的速度,就像第 11 章会做的那样,就会在 −Kp/Kd-\eff{K_p}/\eff{K_d} 处出现一个零点:对这组极点来说是 −6.5-6.5,超调是 15 % 而不是 12 %。)

第 10 章:传递函数、极点和零点 ↗

朱恩: 同样的极点,但当零点靠近原点时,响应会跳得更快,超调也更大!

西奥: 极点一样,运动就一样。所以零点不可能加进一个新运动。它一定是在给我们已有的东西多加一点。

第 10 章:传递函数、极点和零点 ↗

乘以 ss 就是取斜率(第 9 章),所以因子 (1+s/∣z∣)(1 + s/|z|) 加上了 1/∣z∣1/|z| 倍的斜率。这就是为什么靠近原点的零点会让系统对变化反应这么强烈:即使极点没动,超调也会变大。离得远时,零点几乎不起作用。关于零点,目前知道这些就够了。

新词

零点
使传递函数为零的 ss 值:系统不会传下去的运动 ezte^{zt}。

越靠左总是越好吗?

朱恩: 简单:把极点往左拖得远远的。眨眼间就稳定了。史上最好的无人机!

西奥: 可是,那需要多大的推力呢?到目前为止,我们都假装电机能想推多大就推多大。

该说实话了。我们的电机推力在 0 N 到 20 N 之间(大约是无人机重量的四倍)。下面,极点沿着 45° 线向左移动(也就是 ζ≈0.71\zeta \approx 0.71,第 7 章的最佳点)。虚线是假设电机虚构、推力无限时的数学结果;实线是真实电机的结果。

第 10 章:传递函数、极点和零点 ↗

第 10 章:传递函数、极点和零点 ↗

过了大约 −3.9±3.9i-3.9 \pm 3.9i,数学要求的推力就超过 20 N。橙色推力被压平在极限上;过了大约 −6±6i-6 \pm 6i,数学甚至想把无人机往下拉,而螺旋桨做不到。真实无人机不再跟随那条漂亮的线性预测。它的调节时间在 −6.5±6.5i-6.5 \pm 6.5i 附近停在约 0.7 s,不再变好;再往左反而更差,超调还变大了。

朱恩: 我一路滑到了 −8±8i-8 \pm 8i。数学说 0.53 s。真实无人机用了 0.77 s:比在 −6.5-6.5 时还慢!

米卡: 而且它的超调从 4 % 涨到了 16 %。那些额外的推力从来就不存在。

朱恩: 所以“越往左越好”只在电机还没到极限之前成立。配置极点是一种权衡,不是一场赛跑。

新词

第一下推力
阶跃第一瞬间所要求的推力:mg+Kp Δrmg + \eff{K_p}\,\Delta r,这时无人机还没动。
推力预算
对给定的阶跃,电机负担得起的极点位置:一个以 0 为圆心的圆。
电机限制(饱和)
不管数学要求多少,真实推力都会被限幅在 0–20 N 之间。

在纸上闭合回路

朱恩: 第 1 章里,我们用方框和箭头画出了回路。在 s 的世界里,每个方框只是做乘法。方框能替我们把代数算出来吗?

给每个方框写上它的配方。控制器是 C(s)C(s),目前就是 Kp\eff{K_p}。无人机本身,推力变化进、高度变化出,是 P(s)=1ms2+csP(s) = \frac{1}{ms^2 + cs}:P 代表被控对象(plant),第 1 章的词,不是 P 控制的那个 P。它直接来自无人机的方程,和上面那个配方的来法一样。

朱恩: 简单。请求先经过控制器,再经过无人机。沿着这条线乘下去就行!

ΔH=?C P ΔR=Kpms2+cs ΔR\Delta\out{H} \overset{?}{=} C\,P\,\Delta\sp{R} = \frac{\eff{K_p}}{ms^2 + cs}\,\Delta\sp{R}

西奥: 极点在 0 和 −2?一点摆动都没有,还有一个在 0 处、永远稳定不下来的极点。这就是第 1 章的开环:告诉无人机该做什么,然后再也不看一眼。控制器看到的不是请求,朱恩。它看到的是误差。

从无人机绕回来的那支箭头,正是反馈的全部意义。控制器作用在 ΔR−ΔH\Delta\sp{R} - \Delta\out{H} 上,所以输出在等号两边都出现了。把它归到一起,再做除法:

ΔH=C P (ΔR−ΔH)ΔH (1+C P)=C P ΔRΔH=C P1+C P ΔR\begin{aligned} \Delta\out{H} &= C\,P\,\big(\Delta\sp{R} - \Delta\out{H}\big) \\ \Delta\out{H}\,\big(1 + C\,P\big) &= C\,P\,\Delta\sp{R} \\ \Delta\out{H} &= \frac{C\,P}{1 + C\,P}\,\Delta\sp{R} \end{aligned}

代入 C=KpC = \eff{K_p} 和 P=1/(ms2+cs)P = 1/(ms^2+cs),然后把分子和分母都乘以 ms2+csms^2 + cs:

C P1+C P=Kp/(ms2+cs)1+Kp/(ms2+cs)=Kpms2+cs+Kp\frac{C\,P}{1 + C\,P} = \frac{\eff{K_p}/(ms^2+cs)}{1 + \eff{K_p}/(ms^2+cs)} = \frac{\eff{K_p}}{ms^2 + cs + \eff{K_p}}

米卡: 这就是本章开头的那个配方!我们得到了两次:一次来自无人机的方程,一次来自方框。

所以回路的极点就在分母 1+C(s) P(s)1 + C(s)\,P(s) 为零的地方。这等同于 C P=−1C\,P = -1。把 C PC\,P 理解为绕回路一圈:控制器、然后无人机,对一个信号做了什么。在极点处,绕一圈把信号以同样的大小、翻转过来送回,而误差里的减号又把它翻转回去。所以它在完全没有请求的情况下自己维持下去。

1+C(s) P(s)=0⟺C(s) P(s)=−11 + C(s)\,P(s) = 0 \quad\Longleftrightarrow\quad C(s)\,P(s) = -1

拿一个稳定的摆动来试试,s=iωs = i\omega。绕一圈把摆动的箭头变成 C(iω) P(iω)C(i\omega)\,P(i\omega):变短或变长,并且往回转。下面的小工具为每一种摆动速度画出这支箭头,还有它必须到达的那个点 −1。

第 10 章:传递函数、极点和零点 ↗

西奥: 不管我把 Kp\eff{K_p} 推到多大,曲线都向 −1 弯过去,但从来碰不到它。它离得最近的地方,大约在无人机自己的摆动速度附近。

原因在这里。阻力让一圈最多往回转 90°,质量再让它最多往回转 90°,但两者加起来只有在无限快的摆动时才达到 180°。所以单靠 P 控制,永远没法让这架无人机翻过边缘。更大的 Kp\eff{K_p} 只会让这一圈从更近的地方经过 −1,而更近意味着阻尼更小:第 2 章的“KpK_p 越大,摆得越厉害”,现在变成了一幅图。

第 10 章:传递函数、极点和零点 ↗

新词

闭环
一个根据误差动作的控制器,所以输出又反馈回它自己的输入:ΔH=C P1+C P ΔR\Delta H = \frac{C\,P}{1 + C\,P}\,\Delta R。
回路增益 C(s) P(s)C(s)\,P(s)
绕回路一圈对一个信号做了什么。闭环的极点就在它等于 −1 的地方。

我们现在知道了什么

我们搞清楚了什么

  • 对,一个分数就够了。传递函数 G(s)G(s) = 在 s 的世界里,从静止开始时输出的变化 ÷ 输入的变化。它是系统的配方,ΔH=G⋅ΔR\Delta\out{H} = G\cdot\Delta\sp{R},直接来自无人机的方程。
  • 极点(×)是 G(s)G(s) 爆掉的地方:构成系统的那些 epte^{pt} 模态。
  • 左半边 = 稳定,右半边 = 爆掉。越往左 = 越快(大约 4/∣σ∣4/|\sigma| s 稳定下来,这是经验法则),越往上 = 摆得越欢(摆一次 = 2π/ω2\pi/\omega s),角度 = 阻尼 ζ\zeta = 超调 e−π∣σ∣/ωe^{-\pi|\sigma|/\omega}。离轴最近的极点是老大。
  • 复极点总是成镜像对出现。
  • 零点(○)改变每个模态出现的多少。靠近原点时,它们会加一下冲击:1/∣z∣1/|z| 倍的斜率。
  • 在纸上闭合回路,配方就是 C P1+C P\frac{C\,P}{1 + C\,P}。极点就在绕回路一圈 C PC\,P 等于 −1 的地方。
  • 对 1 m 的阶跃,第一下推力是 mg+m∣p∣2mg + m|p|^2,所以离得很远的极点需要电机根本没有的推力。

西奥:“这些极点很漂亮。但等等:我们整章都在作弊,直接把悬停推力送给了无人机。没有它,重力还是会让它留下静差。我们的 s 平面没问题。需要修的是我们的控制器。”

第 10 章:传递函数、极点和零点 ↗