1. 稳定性基础:控制系统稳定性的定义与重要性

1.1 什么是稳定性?——一个工程师的直觉

说起稳定性,我脑子里第一个蹦出来的画面,是小时候玩过的单摆。

你推它一下,它晃几下,最后回到垂直位置。这就是稳定。

反过来,你把一支铅笔立在指尖上——稍微一偏,它就倒了。这就是不稳定。

控制系统的稳定性,说白了就是这个道理:系统受到扰动后,能不能自己回到原来的工作状态

我在项目里遇到过不少年轻工程师,一上来就调PID参数,调了半天系统还是抖。为什么?因为根本没搞清楚系统本身稳不稳。你想想看,一个不稳定的系统,你调再多的参数也是白搭。

稳定性的核心定义:

一个系统是稳定的,当且仅当:对于任何有界的输入,系统的输出也是有界的。

这就是著名的BIBO稳定性(Bounded-Input Bounded-Output)。

1.2 为什么稳定性如此重要?

我直接说结论:不稳定的系统,就是一颗定时炸弹

举个例子。2018年某化工企业的反应釜温度控制系统失稳,温度在设定值附近来回震荡,幅度越来越大。最后温度冲过了安全阈值,触发了紧急停车。那次事故的直接经济损失超过200万。

为什么会这样?

因为控制器的增益调得太大了。系统本来还能勉强稳住,一加大增益,直接进入振荡发散状态。嗯,这里要注意:稳定性是控制系统正常工作的前提,没有稳定性,其他性能指标都是空谈

稳定性的重要性体现在三个方面:

  • 安全性:不稳定的系统可能导致设备损坏、人员伤亡
  • 性能:只有稳定的系统,才能谈精度、响应速度
  • 可预测性:稳定系统的行为是可以分析和设计的

我曾经踩过的坑:

有一次做电机转速控制,仿真时系统响应看着挺好。结果一上实际硬件,电机转速开始低频振荡。查了两天才发现,是采样频率设置太低,导致数字控制器等效延迟太大,把系统推到了不稳定区。所以我现在做设计,第一件事就是检查采样频率是否满足要求。

1.3 稳定性的直观理解——三个经典场景

为了帮你建立直觉,我总结了三个场景:

场景 物理类比 控制系统含义
稳定 碗底的小球 扰动后回到平衡点
临界稳定 平面上的小球 扰动后停在新的位置
不稳定 倒立摆 扰动后远离平衡点

你想想看:

  • 碗底的小球,你推它一下,它滚两下就回到碗底了——这是渐近稳定
  • 平面上的小球,你推它一下,它滚到哪就停在哪——这是临界稳定(也叫李雅普诺夫稳定)
  • 倒立摆,你稍微碰一下,它就倒下去了——这是不稳定

在实际工程中,我们通常要求系统是渐近稳定的。临界稳定?我个人不太建议,因为实际系统中总有噪声和参数漂移,临界稳定很容易变成不稳定。

1.4 稳定性的数学描述——从直观到严谨

直观理解有了,我们得用数学语言把它说清楚。

对于一个线性时不变系统,稳定性判断其实很简单:

看系统的极点(特征根)在复平面上的位置

  • 所有极点都在左半平面 → 系统稳定
  • 有极点在虚轴上(且无重根) → 临界稳定
  • 有极点在右半平面 → 系统不稳定

为什么?因为系统的自由响应是 e^{pt} 的形式,p是极点。如果p的实部是正的,e^{pt}会随时间增长到无穷大——系统就炸了。

一个小技巧:

我习惯在仿真时先看系统的零极点图。如果看到右半平面有极点,直接停——先解决稳定性问题,再谈其他性能。这能省下大量调试时间。

1.5 知识体系框架

下面这张图,是我梳理的本章知识结构。你可以把它当作一个地图,知道我们在哪里,接下来要去哪里。

控制系统稳定性基础 稳定性的定义 BIBO稳定性 李雅普诺夫稳定性 稳定性的重要性 安全性保障 性能指标的前提 系统可预测性 稳定性判断 极点位置分析 劳斯-赫尔维茨判据 奈奎斯特判据 核心:所有极点必须在左半平面

1.6 一个简单的例子——一阶系统

来看一个最基础的例子:一阶系统 G(s) = 1/(s + a)。

它的极点是 s = -a。

  • 如果 a > 0,极点在左半平面 → 系统稳定
  • 如果 a = 0,极点在原点 → 临界稳定
  • 如果 a < 0,极点在右半平面 → 系统不稳定

用代码验证一下:

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# 稳定系统:a = 2
sys_stable = signal.TransferFunction([1], [1, 2])
t, y_stable = signal.step(sys_stable)

# 不稳定系统:a = -2
sys_unstable = signal.TransferFunction([1], [1, -2])
t, y_unstable = signal.step(sys_unstable)

plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.plot(t, y_stable)
plt.title('稳定系统 (a=2)')
plt.grid(True)

plt.subplot(1, 2, 2)
plt.plot(t, y_unstable)
plt.title('不稳定系统 (a=-2)')
plt.grid(True)
plt.show()

运行这段代码,你会看到:稳定系统的阶跃响应最终趋于1,而不稳定系统的响应直接飞了。

记住这个直觉:

稳定系统像弹簧——你拉它一下,它弹回来。

不稳定系统像多米诺骨牌——你推它一下,它一路倒下去。

好了,这一章的内容就到这里。稳定性是控制系统的基石,后面的所有内容都建立在这个基础上。理解了这个,你就能看懂为什么有些系统一调就炸,有些系统怎么调都稳如泰山。


公众号:蓝海资料掘金营,微信deep3321