4. 系统辨识基础:为什么要做系统辨识、辨识的方法(阶跃响应、频率响应)、辨识结果的解读
做伺服调参这么多年,我见过太多人一上来就调PID参数。拧拧位置环,拧拧速度环,试半天发现系统抖得像筛子。为什么?因为你根本不了解你的“对手”——也就是被控对象。
系统辨识,说白了就是给伺服系统做个“体检”。你得先知道它是什么体质,才能对症下药。我刚开始做运动控制时也跳过这步,结果在一个高精度转台上折腾了两周,最后发现是负载惯量比估算错了三倍。嗯,从那以后,系统辨识就成了我调参流程里的第一道工序。
4.1 为什么要做系统辨识?
你想想看,伺服驱动器里的控制器,是要根据被控对象的特性来设计的。如果你连对象是“胖”是“瘦”都不知道,怎么设计合适的控制律?
具体来说,系统辨识能帮你搞清楚三件事:
- 惯量比:负载惯量与电机转子惯量的比值。这是调参的起点,几乎所有增益都跟它有关。
- 机械谐振频率:系统在哪个频率段容易“共振”。避开它,或者陷波掉它。
- 摩擦力与死区:低速时有没有爬行?有没有静摩擦?这些非线性因素会严重影响定位精度。
核心观点: 没有系统辨识的调参,就是盲调。你只是在碰运气,而不是在解决问题。
我在一个包装机械项目里遇到过一台设备,速度一跑到2000rpm就尖叫。客户说是电机坏了,我做了个频率响应测试,发现是安装基座的共振点在198Hz。加了个陷波滤波器,问题就解决了。如果没有辨识,你可能换十个电机都没用。
4.2 辨识的方法
常用的辨识方法就两种:阶跃响应法和频率响应法。它们各有各的适用场景,我一般会结合着用。
4.2.1 阶跃响应法
这个方法最直观。给系统一个阶跃指令(比如突然给一个速度指令),然后看它怎么响应。
操作步骤很简单:
- 让伺服系统工作在速度模式或转矩模式。
- 给一个小的阶跃指令(比如额定转矩的10%)。
- 用示波器或驱动器的内部录波功能,记录速度或位置的响应曲线。
从阶跃响应曲线上,你可以直接读出几个关键参数:
| 参数 | 含义 | 如何读取 |
|---|---|---|
| 延迟时间 Td | 从指令发出到系统开始响应的时间 | 曲线开始上升的点 |
| 上升时间 Tr | 从10%上升到90%稳态值的时间 | 测量曲线斜率 |
| 超调量 Mp | 峰值超过稳态值的百分比 | (峰值-稳态值)/稳态值 |
| 稳态误差 Ess | 最终稳定后的偏差 | 稳态值与指令值的差 |
我的经验: 阶跃响应法适合粗调。它能快速告诉你系统是“欠阻尼”(超调大、震荡多)还是“过阻尼”(响应慢、没超调)。我一般先用它估算惯量比,误差在20%以内都算正常。
举个例子,如果你给一个10%的转矩阶跃,速度从0爬到1000rpm用了50ms,那加速度就是20000rpm/s。根据转矩=惯量×角加速度,你就能反推出惯量。虽然粗糙,但够用。
4.2.2 频率响应法
这个方法更精确,但操作也复杂一些。它通过给系统输入不同频率的正弦波,看输出幅值和相位的变化。
为什么要用频率响应?因为机械系统本质上是一个低通滤波器。低频信号能顺利通过,高频信号会被衰减。而谐振点,就是某个频率的信号被“放大”了。
频率响应的核心指标:
- 幅频特性:输出幅值与输入幅值的比值随频率的变化。单位是dB。
- 相频特性:输出相位滞后于输入相位的角度随频率的变化。单位是度。
我常用的做法是:
- 用驱动器的扫频功能(现在主流伺服都有这个功能)。
- 设置扫频范围,比如从1Hz到500Hz。
- 记录伯德图(Bode Plot)。
注意: 扫频时激励信号的幅值不能太大,否则会激发非线性特性(比如摩擦力、间隙),导致辨识结果失真。我一般用额定转矩的5%~10%。
频率响应法能给你最完整的系统动态信息。从伯德图上,你可以看到:
- 低频增益:决定了系统的刚度。
- 穿越频率:增益为0dB时的频率,决定了系统的响应带宽。
- 相位裕度:在穿越频率处的相位与-180°的差值。相位裕度小于30°,系统就容易震荡。
- 谐振峰:幅值突然凸起的频率点。这就是你需要用陷波滤波器处理的地方。
4.3 辨识结果的解读
拿到辨识结果后,怎么用?这才是关键。我见过有人测了一大堆数据,然后对着屏幕发呆。
下面这张图展示了系统辨识的核心逻辑:
解读辨识结果时,我一般遵循以下原则:
3.1 从阶跃响应看“性格”
- 响应快、超调小:系统刚性好,惯量比估算准确。可以直接用自动整定。
- 响应慢、没超调:系统阻尼大,或者惯量比偏大。需要提高速度环增益。
- 震荡衰减慢:系统欠阻尼,有谐振风险。先查机械连接是否松动,再考虑加陷波。
- 有稳态误差:摩擦力大或者有死区。需要加积分项或者做摩擦补偿。
3.2 从频率响应看“体质”
- 低频增益高:系统刚度好,定位精度有保障。
- 穿越频率高:系统响应快,但噪声敏感度也高。
- 相位裕度在45°~70°之间:这是理想区间。低于30°必须处理。
- 谐振峰超过6dB:必须加陷波滤波器。否则系统随时可能啸叫。
避坑指南: 我曾经在一个龙门双驱项目里,用阶跃响应法测出来的惯量比是5.8,但实际运行时机床低频抖动。后来用频率响应法一测,发现有个谐振峰在12Hz,幅值高达15dB。加了两个串联的陷波滤波器才压住。所以,阶跃响应适合快速估算,频率响应才是金标准。
4.4 实操建议
说了这么多,给你一个可以直接用的流程:
- 第一步:做阶跃响应测试。用10%的转矩阶跃,记录速度响应。估算惯量比和阻尼比。
- 第二步:做频率响应测试。扫频范围从1Hz到500Hz,记录伯德图。确认谐振频率和相位裕度。
- 第三步:对比两个结果。如果阶跃响应估算的惯量比和频率响应推算的惯量比相差超过30%,说明系统有非线性因素(比如间隙、摩擦),需要进一步排查。
- 第四步:记录辨识结果。把惯量比、谐振频率、相位裕度、穿越频率记下来。这些是后续调参的基准。
重要提醒: 系统辨识不是一次性的工作。机械系统会随着温度、磨损、负载变化而改变。我建议每次设备大修或者更换负载后,都重新做一次辨识。别偷懒,这个习惯能帮你省下大量排查故障的时间。