3、不确定性建模:参数不确定性、结构不确定性、外部扰动建模方法

做离散系统控制这么多年,我最大的体会就是:模型永远不可能完全准确。你想想看,一个系统从设计到实现,中间要经过多少环节?元件有公差、环境有变化、负载有波动……这些不确定性如果处理不好,再漂亮的控制算法到了现场也是白搭。

所以这一章,咱们就聊聊怎么把这些「不确定的东西」用数学语言描述出来。说白了,就是给系统的不确定性「拍个X光片」,看清楚它到底长什么样。

3.1 参数不确定性

参数不确定性,这是最直观的一种。比如电阻的阻值标称10kΩ,实际可能是9.8kΩ到10.2kΩ之间。在离散系统中,这种参数变化会直接影响传递函数的系数。

我个人习惯把参数不确定性分成两类:

  • 有界不确定性:参数在某个区间内变化,比如 \( k \in [k_{\min}, k_{\max}] \)
  • 随机不确定性:参数服从某种概率分布,比如高斯分布 \( \mathcal{N}(\mu, \sigma^2) \)

我在项目中遇到过这样一个案例:一个电机驱动系统,标称的电气时间常数是5ms,但实际批量生产时,不同批次的产品时间常数在4.2ms到5.8ms之间波动。如果控制器按5ms设计,那有些产品就会振荡甚至失稳。

处理参数不确定性,常用的建模方法有:

区间模型:把参数表示成 \( p = p_0 + \delta p \),其中 \( |\delta p| \leq \Delta p \)

举个例子,一个二阶离散系统的传递函数:

G(z) = (b1*z + b0) / (z^2 + a1*z + a0)

标称值:a1 = -1.6, a0 = 0.64, b1 = 0.4, b0 = 0.2
不确定性:Δa1 = 0.1, Δa0 = 0.05, Δb1 = 0.02, Δb0 = 0.01

嗯,这里要注意:参数不确定性建模时,不要只考虑标称值。我见过太多工程师只做标称点设计,结果一到现场就出问题。

3.2 结构不确定性

结构不确定性比参数不确定性更「隐蔽」。它指的是系统模型的结构本身存在误差——比如你用了二阶模型,但实际系统是三阶的;或者你忽略了某些非线性特性。

为什么会这样?说白了,真实系统都是高阶、非线性的,我们为了设计方便,不得不做简化。这个简化过程就引入了结构不确定性。

常见的结构不确定性建模方法:

  • 乘性不确定性:\( G_p(s) = G_0(s) \cdot (1 + \Delta(s)) \)
  • 加性不确定性:\( G_p(s) = G_0(s) + \Delta(s) \)
  • 反馈不确定性:\( G_p(s) = G_0(s) / (1 + \Delta(s) \cdot G_0(s)) \)

我曾经踩过一个坑:设计一个数字滤波器时,我用二阶模型近似了一个四阶系统。仿真时一切完美,但实际测试时高频段出现了意想不到的谐振。后来一查,是忽略的那两个高阶极点在高频区「作怪」。

避坑指南:我曾经以为结构不确定性可以靠「调参数」来弥补,结果折腾了两周也没搞定。后来老老实实做了不确定性建模,用鲁棒控制方法才解决问题。记住:结构不确定性不是参数能补回来的。

3.3 外部扰动建模

外部扰动,说白了就是系统「不想看到」的那些输入。比如传感器噪声、负载突变、电源波动……这些扰动如果不建模,控制器就会「误判」系统状态。

我建议把外部扰动分成三类:

扰动类型 典型例子 建模方法
有界扰动 传感器白噪声 \( |d(k)| \leq D_{\max} \)
谐波扰动 电源50Hz纹波 \( d(k) = A \sin(\omega k T_s + \phi) \)
阶跃扰动 负载突变 \( d(k) = d_0 \cdot 1(k - k_0) \)

你想想看,如果扰动是有界的,那我们可以用H∞控制来抑制;如果是谐波扰动,可以用内模原理来消除;如果是阶跃扰动,那积分环节就能搞定。

我在做无人机飞控时遇到过:GPS信号偶尔会跳变,这就是典型的脉冲扰动。如果不建模,飞控会误以为无人机在快速移动,然后给出错误的控制指令——结果就是飞机乱晃。

小技巧:实际项目中,我习惯先采集一段扰动数据,看看它的频谱特性。如果是低频扰动,用积分器就能压住;如果是高频噪声,那就得加滤波器了。

3.4 三种不确定性的统一框架

讲到这里,你可能想问:这三种不确定性能不能统一处理?答案是肯定的。

我个人常用的方法是线性分式变换(LFT)。它可以把参数不确定性、结构不确定性和外部扰动都统一成一个框架:

系统 = 标称模型 + 不确定性块 + 扰动输入

其中:
- 不确定性块 Δ 满足 ||Δ||∞ ≤ 1
- 扰动输入 w 满足 ||w||₂ ≤ 某个界

这个框架的好处是:你可以用一套鲁棒控制理论来处理所有的不确定性。比如小增益定理、μ综合等方法,都是基于这个框架的。

下面这张图展示了三种不确定性在控制系统中的位置和关系:

不确定性建模框架 标称系统 G₀(z) 离散传递函数 参数不确定性 Δp ∈ [p_min, p_max] 结构不确定性 Δ(s) 乘性/加性 外部扰动 d(k) 有界/谐波/阶跃 输出 y(k) 三种不确定性共同影响系统输出,需要统一建模 LFT框架可将三者统一为:系统 = G₀ + Δ + d

3.5 建模的工程实践建议

讲了这么多理论,最后给点实在的建议:

  1. 先做实验,后建模:别坐在办公室里猜参数。拿示波器、数据采集卡去现场测,看看实际响应和模型差多少。
  2. 不确定性要「留余量」:我习惯把不确定性范围放大20%。为什么?因为系统老化、温度变化这些因素,你很难精确预测。
  3. 从简单开始:先只考虑参数不确定性,把鲁棒控制器调好了,再逐步加入结构不确定性和扰动模型。一口吃不成胖子。
  4. 验证要闭环:建模完成后,一定要做闭环仿真。看看在最坏情况下,系统还能不能稳定。

核心要点:不确定性建模不是「精确描述」,而是「保守估计」。你建模越准确,控制器就能设计得越「不保守」,性能也就越好。但保守一点总比失稳强——这是我在无数次失败中换来的教训。


专注资料整理