第12章

非线性与实际问题

学完这一章你应该能

  • 认出实际系统中常见的非线性:饱和、死区、间隙、摩擦、继电、量化,知道它们会造成什么现象;
  • 理解极限环,会分析开关式(继电)控制,知道回差的作用;
  • 用描述函数法预测极限环的幅值和频率,理解继电反馈自整定的原理;
  • 针对每种非线性选择工程上的对策;
  • 理解增益调度:工作点变化很大时怎么办。

前置知识:第5章 奈氏判据、第9章 PID 工程实践(抗饱和、继电自整定)、第2章 线性化。

前面的理论都建立在「系统是线性的」这个前提上。真实系统没有严格线性的:电机电压有上限,齿轮有间隙,传感器有分辨率,阀门有死区。大多数时候线性化够用,但有些现象只能用非线性来解释:明明参数调得很稳,却在设定值附近一直小幅振荡;小信号时好好的,大幅改变设定值时就超调很大。这一章讲怎样认出它们、怎样对付它们。

12.1 常见的非线性

非线性特性在哪里出现典型后果
饱和输入大到一定程度,输出不再增加电机电压/电流上限、阀门全开、加热功率 100%积分饱和、大信号时超调大、响应变慢
死区输入很小时没有输出阀门、液压、电机启动电压、某些驱动器小误差消不掉;配合积分会引起来回振荡
间隙(回差)反向运动时要先走过一段空程齿轮、丝杠、联轴器位置控制在设定值附近来回「找」,产生极限环
摩擦静摩擦大于动摩擦;低速时摩擦力突变导轨、轴承、密封件低速爬行(走走停停)、定位时来回振荡
继电(开关)输出只有开、关两种状态温控器、继电器、电磁阀、开关电源输出在设定值附近持续振荡
量化信号只能取离散的值编码器、ADC、DAC小幅抖动;对量化信号做差分得到的速度很「毛糙」

线性系统的性质(叠加原理、响应形状和输入幅值无关、稳定性只取决于系统本身)对这些系统都不再成立。例如有饱和的系统,小阶跃时超调 5%,大阶跃时可能超调 50%。

12.2 相平面与极限环

二阶系统的状态可以用一个点 \((x,\dot x)\) 表示,系统运动时这个点在平面上画出一条曲线,这个平面叫相平面。稳定的线性系统,所有曲线最后都收敛到原点;不稳定的则发散。

非线性系统可能出现第三种情况:曲线最后收敛到一条闭合曲线上,对应一个幅值和频率都固定的持续振荡,而且基本不受初始条件影响。这叫极限环。线性系统里的等幅振荡只是临界情况,参数稍微变化就会消失或发散;极限环却是稳定存在的。

实际中遇到的「怎么调都在设定值附近小幅振荡」,多半就是极限环,原因通常是死区、间隙、静摩擦或量化,而不是增益太大。

12.3 开关控制与回差

最简单的控制方式:温度低于设定值就开加热,高于就关。家里的电热水器、冰箱、空调温控器都是这样。它不需要调参数,但输出一定在设定值附近振荡(极限环)。

如果严格在设定值处切换,测量噪声会让继电器在设定值附近疯狂地来回开关,很快烧坏触点。所以要加回差(滞环):低于 \(T_{set}-h\) 才开,高于 \(T_{set}+h\) 才关。

例 房间:时间常数 600 s,加热器全开时最终能比室外高 20 °C,加热有 30 s 延迟,室外 15 °C,设定 21 °C。仿真结果:

回差温度范围摆幅开关周期
020.70~21.69 °C0.99 °C2.3 min
±0.25 °C20.47~21.93 °C1.46 °C3.4 min
±0.5 °C20.23~22.17 °C1.94 °C4.5 min
±1 °C19.75~22.64 °C2.89 °C6.8 min

想要更平稳:改成连续控制,用 PI 算出 0~100% 的功率,再用时间比例输出(慢速 PWM)驱动继电器或固态继电器,例如每 2 s 为一个周期,PI 输出 30% 就开 0.6 s、关 1.4 s。只要周期远小于对象的时间常数,效果就和连续调节功率差不多。

12.4 描述函数法

怎样预测极限环的幅值和频率?描述函数法的思路:假设非线性环节的输入是正弦信号 \(A\sin\omega t\),它的输出虽然不是正弦,但可以只保留基波(一次谐波),因为后面的线性部分通常是低通的,会把高次谐波滤掉。基波和输入的幅值比(复数)就叫描述函数 \(N(A)\),它和幅值有关,和频率无关。

非线性描述函数 \(N(A)\)
理想继电器(输出 \(\pm M\))\(\dfrac{4M}{\pi A}\)
饱和(线性段斜率 \(k\),在 \(\pm a\) 处饱和),\(A>a\)\(\dfrac{2k}{\pi}\left[\arcsin\dfrac aA+\dfrac aA\sqrt{1-\left(\dfrac aA\right)^2}\right]\)
死区(宽度 \(\pm\delta\),斜率 \(k\)),\(A>\delta\)\(k-\dfrac{2k}{\pi}\left[\arcsin\dfrac\delta A+\dfrac\delta A\sqrt{1-\left(\dfrac\delta A\right)^2}\right]\)

把非线性环节当成一个「增益随幅值变化」的环节 \(N(A)\),套用奈氏判据:闭环特征方程 \(1+N(A)G(j\omega)=0\),即

$$G(j\omega)=-\frac{1}{N(A)}$$

在奈氏图上画出 \(G(j\omega)\) 曲线和 \(-1/N(A)\) 曲线,两条曲线的交点就是可能的极限环:交点处的 \(\omega\) 是振荡频率,\(A\) 是振荡幅值。

例:继电器 + \(\dfrac{1}{(s+1)^3}\)。继电器的 \(-1/N(A)=-\dfrac{\pi A}{4M}\) 是负实轴。\(G(j\omega)\) 与负实轴的交点在 \(\omega=\sqrt3\),此时 \(|G|=1/8\),所以

$$\frac{\pi A}{4M}=\frac18\quad\Longrightarrow\quad A=\frac{4M}{8\pi}\approx0.159M,\qquad T_u=\frac{2\pi}{\sqrt3}\approx3.63\ \text{s}$$

仿真得到的幅值 0.163、周期 3.68 s,预测误差约 2%。反过来,测出振荡的幅值 \(a\),就能算出线性部分在该频率处的增益:\(|G|=\dfrac{\pi a}{4M}\),临界增益 \(K_u=\dfrac{1}{|G|}=\dfrac{4M}{\pi a}\)。这就是第9章继电反馈自整定的原理。

描述函数法是近似方法:线性部分的低通特性越好(阶数越高),预测越准。它也能分析饱和、死区、间隙引起的极限环,以及判断极限环是否稳定(曲线交点处,\(-1/N(A)\) 随 \(A\) 增大的方向是否从「被包围」走向「不被包围」)。

12.5 各种非线性的工程对策

问题对策
饱和抗积分饱和(第9章);设定值斜坡,避免大阶跃;执行器选型留余量;状态反馈时极点不要放得太远
死区死区补偿:控制量不为零时,直接加上死区宽度那么大的偏置;减弱积分,或在误差很小时停止积分(积分分离)
间隙机械上消隙(预紧、双齿轮);电机端和负载端各装一个编码器(双反馈);降低位置环增益;定位时总从同一个方向接近目标
摩擦摩擦前馈:按速度方向加上库仑摩擦力 \(F_c\,\mathrm{sign}(v)\),再加 \(bv\);提高速度环增益;必要时加高频小幅抖动(dither)
量化提高分辨率;速度不要直接对编码器计数做差分,用测周法、滤波或观测器(第11章)估计;在设定值附近允许一个小误差带
继电输出加回差;改成 PI + 时间比例输出

判断「小幅振荡是不是非线性引起的」:把增益减半,如果振荡幅度变化不大、周期变长,多半是死区、间隙、摩擦造成的极限环;如果振荡明显减弱或消失,才是增益太大(线性意义上的稳定裕度不足)。

12.6 增益调度

线性化模型的参数随工作点变化(第2章)。工作点变化范围很大时,一组 PID 参数可能在一个工作点很好、在另一个工作点振荡或太慢。增益调度:在几个典型工作点分别建模、整定,运行时按当前工作点(或一个能反映工作点的量)切换或插值参数。

例:水箱液位。出水流量 \(Q_{out}=k\sqrt H\),水箱截面积 \(A_t\)。在液位 \(H_0\) 附近线性化:

$$\frac{\Delta H(s)}{\Delta Q_{in}(s)}=\frac{K}{\tau s+1},\qquad K=\frac{2\sqrt{H_0}}{k},\quad \tau=\frac{2A_t\sqrt{H_0}}{k}$$

液位越高,增益和时间常数都越大。用 SIMC 整定(假设延迟 \(L\)、目标时间常数 \(\tau_c\)):\(K_p=\dfrac{\tau}{K(\tau_c+L)}=\dfrac{A_t}{\tau_c+L}\) 与液位无关,而 \(T_i=\min(\tau,4(\tau_c+L))\) 随液位变化。所以这个系统只需要按液位调度积分时间。

其他常见例子:飞机按速度和高度调度增益;机械臂按负载和姿态调度;电机按转速调度(弱磁区)。

本章小结

  • 饱和、死区、间隙、摩擦、继电、量化是最常见的非线性;它们会造成极限环、大信号时性能变差等线性理论解释不了的现象。
  • 极限环是稳定存在的自激振荡;开关控制一定有极限环,回差在开关次数和摆幅之间折中。
  • 描述函数法:\(G(j\omega)=-1/N(A)\) 的交点给出极限环的频率和幅值;继电器 \(N(A)=4M/(\pi A)\),这正是继电反馈自整定的原理。
  • 每种非线性都有对应的工程对策;工作点变化大时用增益调度。

练习

1. 一台位置控制的机床,在目标位置附近一直以很小的幅度来回振荡,把 \(K_p\) 减半后振荡幅度几乎不变、只是变慢了。最可能的原因是什么?

间隙或静摩擦造成的极限环,而不是增益太大。可以检查机械间隙,加摩擦补偿,或者在误差很小时减弱积分作用。

2. 继电反馈测试:继电器输出 ±5(单位为控制量),输出振荡幅值 0.4,周期 12 s。估算临界增益和临界周期。

\(K_u=\dfrac{4\times5}{\pi\times0.4}\approx15.9\),\(T_u=12\) s。

3. 一个只能开关的加热器,希望温度波动小于 ±0.3 °C,同时继电器每小时最多动作 60 次,可能做到吗?怎么做?

取决于对象的时间常数和延迟。本章例子里即使回差为 0,延迟本身就让摆幅接近 1 °C,开关控制做不到。可以改用 PI + 时间比例输出(比如 10 s 一个周期,每小时 360 次切换,对固态继电器没问题;机械继电器则要用更长的周期),或者减小加热功率(加热器功率越大,同样延迟下冲得越多)。

4. 为什么说「有饱和的系统,大阶跃和小阶跃的响应形状不同」?这和线性系统有什么区别?

小阶跃时控制量不会碰到限幅,系统按线性方式响应;大阶跃时控制量顶到限幅,相当于开环以最大能力推动,响应速度受限,积分还可能饱和,超调会大得多。线性系统满足叠加原理,响应形状与输入幅值无关,只是按比例放大。