第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 知识体系总览
下面这张图,是我自己画的一个知识框架,帮你理清本章的核心逻辑:
2.7 建模时的一个实用技巧
最后,分享一个我自己的建模习惯。每次拿到一个新系统,我会先做三步:
- 扫频——用信号发生器扫一下系统的频率响应,看看实际特性跟模型差多少
- 标定——把关键参数(增益、时间常数、阻尼比)在不同工况下测一遍,确定变化范围
- 留余量——在加权函数设计时,把不确定性边界再放大20%~30%,给自己留点安全裕度
这三步走下来,基本上不确定性的“底细”就摸清了。后面设计鲁棒控制器的时候,心里就有底了。
一个小提醒:不确定性建模不是越精细越好。你想想看,模型太复杂,控制器设计也跟着复杂,最后可能得不偿失。我的原则是:抓住主要矛盾,忽略次要细节。比如高频谐振如果离控制器带宽很远,那就可以先不管它。
公众号:蓝海资料掘金营,微信deep3321