第2章:系统不确定性建模

各位工程师朋友,大家好。今天我们来聊聊鲁棒控制里最核心、也最让人头疼的一个话题——不确定性建模。

说实话,我刚入行那会儿,总觉得建模就是写个传递函数,然后调参就完事了。直到有一次,我设计的一个伺服系统,仿真跑得漂漂亮亮,一上实际设备就抖得像筛糠。嗯,从那以后我才真正明白:模型和现实之间,永远隔着一道不确定性

2.1 不确定性从哪来?

你想想看,我们建模型的时候,是不是总要做一些假设?比如忽略某些高频特性、把参数取个标称值、或者把非线性环节近似成线性的。这些简化,说白了就是不确定性的来源。

我个人习惯把不确定性分成三类:

  • 参数不确定性——比如电阻的阻值有±5%的误差,电机的时间常数会随温度变化
  • 动态不确定性——比如你忽略的高频谐振、传感器延迟
  • 未建模动态——比如摩擦、间隙、死区这些你压根没放进模型里的东西

为什么要分这么细?因为不同的不确定性,处理手法完全不一样。我见过不少工程师,一上来就加个鲁棒控制器,结果发现根本压不住——其实就是没搞清楚不确定性到底长什么样。

2.2 参数不确定性:最直观的“误差”

参数不确定性,说白了就是模型结构是对的,但里面的数值不准。比如一个二阶系统:

G(s) = ω_n² / (s² + 2ζω_n s + ω_n²)

这里的ω_n和ζ,你标称值是10和0.7,但实际可能因为老化、温度、批次差异,变成9.5和0.65。这就是参数不确定性。

我在项目中遇到过一件事:一个液压伺服系统,夏天和冬天的响应速度差了将近30%。查了半天,原来是液压油的粘度随温度变化,导致阻尼比ζ变了。后来我干脆把ζ建模成一个区间[0.5, 0.9],用区间参数来设计控制器,问题就解决了。

重要概念:参数不确定性通常用区间或摄动来描述

比如:k ∈ [k_min, k_max],或者 k = k₀(1 + δ),其中|δ| ≤ Δ

2.3 动态不确定性:被忽略的“高频尾巴”

动态不确定性比参数不确定性更隐蔽。它指的是那些你模型里没包含、但实际存在的动态特性。最常见的,就是高频未建模动态。

举个例子:你建了一个电机模型,只考虑了一阶惯性环节。但实际电机在高频段还有谐振、还有传感器滤波器的相位滞后。这些高频特性,在低频段影响不大,但一旦控制器带宽提上去,它们就会出来捣乱。

我记得有一次调试一个精密定位平台,位置环增益怎么都加不上去。一加就振荡,减下来又跟不上指令。后来扫了个频率响应,才发现机械结构在80Hz处有个谐振峰——这就是典型的动态不确定性。

我的经验:处理动态不确定性,最常用的方法是加一个乘性摄动或加性摄动。比如:

G_real(s) = G_nominal(s) · (1 + Δ(s) · W(s))

这里的W(s)就是加权函数,用来描述不确定性在频域上的“大小”。

2.4 未建模动态:那些你“故意”忽略的东西

未建模动态,说白了就是你知道它存在,但为了简化模型,你选择忽略它。比如:

  • 摩擦非线性(Stribeck效应、静摩擦)
  • 间隙(齿轮传动中的回差)
  • 饱和(执行器输出限幅)
  • 量化误差(AD/DA转换)

这些非线性特性,在常规控制里可能影响不大,但在高性能要求下,它们就是“隐形杀手”。

我曾经做过一个机械臂的力控项目,仿真里力跟踪误差不到1%,但一上实际设备,误差直接飙到15%。查了三天,最后发现是减速器的间隙导致的——每次换向的时候,齿轮要转过一个空行程才能重新啮合。这就是典型的未建模动态。

⚠️ 避坑指南:我曾经以为未建模动态可以靠鲁棒控制器“自动”处理掉。后来发现,如果未建模动态的幅值太大,或者频率特性很特殊,鲁棒控制器也扛不住。所以,建模时还是要尽量把主要动态抓准,不能完全指望控制器去“擦屁股”。

2.5 三种不确定性的对比

为了让大家更直观地理解,我整理了一个对比表:

类型 来源 数学描述 典型处理方法
参数不确定性 参数摄动、老化、温度 区间、摄动 μ综合、区间极点配置
动态不确定性 高频谐振、延迟、未建模模态 乘性/加性摄动 H∞控制、加权函数设计
未建模动态 摩擦、间隙、饱和、量化 非线性、时变 自适应、滑模、抗饱和

2.6 知识体系总览

下面这张图,是我自己画的一个知识框架,帮你理清本章的核心逻辑:

系统不确定性建模知识体系 不确定性来源 参数不确定性 动态不确定性 未建模动态 区间 / 摄动 乘性 / 加性摄动 非线性 / 时变 μ综合 / 区间极点配置 H∞控制 / 加权函数 自适应 / 滑模 / 抗饱和

2.7 建模时的一个实用技巧

最后,分享一个我自己的建模习惯。每次拿到一个新系统,我会先做三步:

  1. 扫频——用信号发生器扫一下系统的频率响应,看看实际特性跟模型差多少
  2. 标定——把关键参数(增益、时间常数、阻尼比)在不同工况下测一遍,确定变化范围
  3. 留余量——在加权函数设计时,把不确定性边界再放大20%~30%,给自己留点安全裕度

这三步走下来,基本上不确定性的“底细”就摸清了。后面设计鲁棒控制器的时候,心里就有底了。

一个小提醒:不确定性建模不是越精细越好。你想想看,模型太复杂,控制器设计也跟着复杂,最后可能得不偿失。我的原则是:抓住主要矛盾,忽略次要细节。比如高频谐振如果离控制器带宽很远,那就可以先不管它。


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