4. 惯量辨识原理:基于电机运动方程的惯量辨识数学模型推导

各位工程师朋友,咱们今天聊点硬核的。惯量辨识,说白了就是让伺服系统自己“掂量”一下自己带的负载有多重。你想想看,如果伺服不知道负载有多重,那它的加减速性能、位置跟随精度,基本就是瞎蒙。我在现场调试时见过太多这样的案例——工程师凭感觉设个惯量比,结果要么系统抖得像筛子,要么响应慢得像蜗牛。

嗯,要搞懂惯量辨识,咱们得从最基础的电机运动方程说起。这是整个辨识算法的根,根扎不稳,上面长出来的全是歪脖子树。

4.1 电机运动方程:伺服系统的“牛顿第二定律”

先回忆一下经典力学。牛顿告诉我们:F = ma。放到旋转运动里,就变成了:

Te − TL = J · dω/dt

这里:

  • Te — 电磁转矩,电机产生的驱动力矩
  • TL — 负载转矩,包括摩擦力、切削力、重力分量等
  • J — 系统总惯量(电机转子惯量 + 负载惯量折算值)
  • ω — 电机机械角速度
  • dω/dt — 角加速度

这个方程看起来简单,但里面藏着不少坑。我刚开始做伺服驱动开发时,就天真地以为只要测出转矩和加速度,除一下就能得到惯量。结果数据出来乱七八糟,根本没法用。为什么?因为TL这个家伙太不老实了——它随着速度、位置、温度都在变。

核心要点:惯量辨识的本质,就是在未知且变化的负载转矩干扰下,从运动方程中把J“拎”出来。

4.2 离散化处理:从连续方程到可计算的差分形式

实际伺服系统里,我们拿到的都是离散采样数据。电机运动方程需要写成差分形式:

Te(k) − TL(k) = J · [ω(k) − ω(k−1)] / Ts

其中:

  • k — 当前采样时刻
  • Ts — 采样周期(通常0.1ms ~ 1ms)
  • ω(k) − ω(k−1) — 速度增量

这里有个细节要注意:速度信号通常来自编码器,而编码器直接测量的是位置。速度是通过位置差分算出来的。这就引入了量化噪声和延迟。我建议在工程实现时,速度信号一定要做低通滤波,否则加速度信号会噪声大到离谱。

实战技巧:我个人习惯用二阶巴特沃斯低通滤波器,截止频率设在速度环带宽的3~5倍。这样既能滤掉高频噪声,又不会把有用的加速度信息给削没了。

4.3 最小二乘法:让数据自己“说话”

好,现在我们有了一堆离散数据点:[Te(k), ω(k), ω(k−1)]。怎么从中估计出J和TL

最经典的方法就是递推最小二乘法(RLS)。咱们把运动方程改写成矩阵形式:

y(k) = φ(k) · θ

其中:

  • y(k) = Te(k) — 系统输出(已知)
  • φ(k) = [ (ω(k)−ω(k−1))/Ts , 1 ] — 回归向量(已知)
  • θ = [ J , TL ]T — 待估参数(未知)

你看,这样一来,惯量辨识就变成了一个标准的参数估计问题。RLS算法的核心公式如下:

// 递推最小二乘核心步骤
// 初始化:θ(0) = [J_guess, 0]^T, P(0) = α·I (α取较大值,如1000)

// 每一步迭代:
// 1. 计算增益向量
K(k) = P(k-1)·φ(k) / [λ + φ(k)^T · P(k-1) · φ(k)]

// 2. 更新参数估计
θ(k) = θ(k-1) + K(k)·[y(k) − φ(k)^T · θ(k-1)]

// 3. 更新协方差矩阵
P(k) = [I − K(k)·φ(k)^T] · P(k-1) / λ

// λ为遗忘因子,0.95~0.99之间
// λ越小,算法跟踪越快,但噪声敏感度越高

这里λ是遗忘因子。λ=1时,所有历史数据权重相同,适合恒定惯量场景。λ<1时,旧数据逐渐被“遗忘”,适合惯量缓慢变化的场景。我在做注塑机伺服时,惯量会随着模具开合而变化,这时候λ取0.97左右效果最好。

注意:RLS算法对激励信号有要求。如果电机匀速运行(加速度≈0),那么φ(k)的第二列和第一列高度相关,会导致协方差矩阵病态,估计结果发散。这就是为什么惯量辨识必须在加减速过程中进行。

4.4 激励信号设计:给系统“挠痒痒”的正确姿势

要让RLS算法收敛得好,输入信号必须满足持续激励条件。说白了,就是速度变化要足够丰富,不能老是一个节奏。

常用的激励信号有:

  • 梯形速度曲线 — 简单实用,但频率成分单一
  • S形速度曲线 — 加速度连续变化,激励更充分
  • 伪随机二进制序列(PRBS) — 频率覆盖宽,辨识精度高

我个人最常用的是S形曲线。为什么?因为梯形曲线在加减速切换点有加速度突变,会激发机械谐振,导致辨识结果被谐振分量污染。S形曲线平滑过渡,对机械系统更友好。

下面这张图展示了惯量辨识的整体流程:

惯量辨识数学模型与算法流程图 激励信号输入 采集Tₑ(k)、ω(k) 速度滤波 + 差分求加速度 递推最小二乘(RLS)参数估计 输出 Ĵ 和 T̂ₗ 采样周期 Tₛ = 0.1~1ms 截止频率 = 速度环带宽×3~5 遗忘因子 λ = 0.95~0.99 ⚠ 注意事项 1. 必须在加减速段辨识 2. 避免匀速段数据参与 3. 激励幅度不宜过大 4. 防止机械谐振干扰

4.5 工程实现中的几个关键细节

理论讲完了,咱们聊聊落地时容易踩的坑。

第一,数据同步问题。 转矩指令Te和速度反馈ω(k)来自不同的采样通道,存在时间延迟。我曾经在一个项目中,因为没做延迟补偿,辨识出来的惯量值偏大了15%。后来在数据采集时加了插值对齐,精度才上来。

第二,摩擦转矩的处理。 低速时,静摩擦和库仑摩擦占主导,会严重干扰辨识结果。我的做法是:在辨识前先做一个“摩擦前馈”标定,把摩擦模型参数先辨识出来,然后在运动方程中减去摩擦分量。

第三,遗忘因子的自适应调整。 固定遗忘因子不够灵活。我习惯让λ随着速度变化率自动调整——加速度大时λ取小值(快速跟踪),加速度小时λ取大值(平滑估计)。

经验总结:惯量辨识不是一锤子买卖。我建议在设备每次上电后,先做一次快速粗辨识(用梯形波,耗时0.5秒),然后在正常运行过程中用RLS做慢速精辨识(持续更新)。这样既保证了启动时的快速响应,又兼顾了运行中的自适应能力。

4.6 辨识结果的验证方法

怎么知道辨识出来的惯量准不准?我一般用两个方法交叉验证:

  1. 转矩观测法:用辨识出的Ĵ和T̂ₗ重构转矩,与实际转矩对比。如果重构误差在5%以内,说明辨识结果可信。
  2. 阶跃响应法:给速度环一个阶跃指令,观察实际响应曲线。如果响应曲线与仿真曲线(用辨识参数)吻合,那基本就稳了。
验证方法 操作方式 判定标准 适用场景
转矩重构法 用Ĵ和T̂ₗ计算Te_recon,与实际Te对比 均方根误差 < 5% 在线验证
阶跃响应法 施加速度阶跃,对比实测与仿真响应 超调量偏差 < 2%,调节时间偏差 < 10% 离线验证
惯量比对法 已知负载惯量,对比辨识值与理论值 偏差 < 3% 实验室标定

好了,关于惯量辨识的数学模型推导,咱们就聊到这儿。核心就三件事:运动方程是基础,RLS是工具,激励信号是前提。把这三点吃透了,你就能让伺服系统自己“掂量”出负载的重量,然后自动把参数调到位。

专注资料整理