2. 电流环数学模型:PMSM 的数学模型与 dq 轴解耦
做 FOC 调参,绕不开数学模型。说白了,你调的是 PI 参数,但 PI 控制的对象是电流环传递函数。如果连模型长什么样都不清楚,调参就是瞎蒙。
我个人习惯,先把 PMSM 的数学模型摆出来,再讲 dq 轴解耦,最后推导出电流环传递函数。这样你调参时心里就有底了。
2.1 永磁同步电机(PMSM)的数学模型
先看电压方程。在 dq 旋转坐标系 下,PMSM 的定子电压方程是这样的:
ud = Rs * id + Ld * (did/dt) - ωe * Lq * iq
uq = Rs * iq + Lq * (diq/dt) + ωe * (Ld * id + ψf)
其中:
- ud、uq —— d 轴和 q 轴电压
- id、iq —— d 轴和 q 轴电流
- Rs —— 定子电阻
- Ld、Lq —— d 轴和 q 轴电感
- ωe —— 电角速度
- ψf —— 永磁体磁链
嗯,这里要注意。方程里有个 交叉耦合项:d 轴方程里有 -ωe * Lq * iq,q 轴方程里有 +ωe * Ld * id。这两个东西,就是让电流环互相干扰的元凶。
核心问题: 如果不做解耦,d 轴电流变化会影响 q 轴,q 轴电流变化也会影响 d 轴。你调一个轴,另一个轴跟着抖。
再看转矩方程:
Te = 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
对于表贴式 PMSM(Ld = Lq),磁阻转矩项 (Ld - Lq) * id * iq 为零,转矩只跟 iq 有关。对于内置式 PMSM,还能利用磁阻转矩。不过电流环调参,我们主要关心电压方程。
2.2 dq 轴解耦原理
为什么要解耦?我举个例子。你在调 q 轴电流环,突然电机转速上来了,ωe 变大,交叉耦合项 -ωe * Lq * iq 直接窜进 d 轴方程。d 轴电流环一看,哎?电压不对,赶紧调整。结果 q 轴又受影响…… 来回震荡。
解耦的思路很简单:把交叉耦合项补偿掉。
具体做法:
- 在 d 轴电压指令里,加上 +ωe * Lq * iq(抵消原来的 -ωe * Lq * iq)
- 在 q 轴电压指令里,加上 -ωe * (Ld * id + ψf)(抵消原来的 +ωe * (Ld * id + ψf))
解耦后的电压方程变成:
ud* = Rs * id + Ld * (did/dt)
uq* = Rs * iq + Lq * (diq/dt)
你看,d 轴和 q 轴完全独立了。每个轴就是一个 一阶 RL 串联电路。调参就变成了调两个独立的 RL 电路。
我的经验: 解耦补偿需要准确的 Ld、Lq 和 ψf 参数。我曾经遇到过电机参数标定不准,解耦补偿反而引入干扰的情况。建议先做参数辨识,再做解耦。
2.3 电流环传递函数推导
解耦之后,d 轴和 q 轴的传递函数完全一样。我们以 q 轴为例推导。
从解耦后的电压方程出发:
uq* = Rs * iq + Lq * (diq/dt)
拉普拉斯变换:
Uq(s) = Rs * Iq(s) + Lq * s * Iq(s)
Uq(s) = (Rs + s * Lq) * Iq(s)
所以,被控对象的传递函数为:
G(s) = Iq(s) / Uq(s) = 1 / (Rs + s * Lq)
写成标准形式:
G(s) = 1 / (Rs * (1 + s * (Lq / Rs)))
令 τ = Lq / Rs(电气时间常数),则:
G(s) = 1 / (Rs * (1 + s * τ))
这就是电流环被控对象的传递函数。一个 一阶惯性环节,增益 1/Rs,时间常数 τ。
注意: 这个推导假设了解耦完全且忽略反电动势扰动。实际系统中,解耦误差、死区效应、采样延迟都会影响模型精度。调参时要在理论值基础上做微调。
2.4 本章知识体系
下面这张图总结了 PMSM 数学模型、dq 解耦和传递函数推导的核心逻辑:
2.5 参数对比:表贴式 vs 内置式 PMSM
| 特性 | 表贴式 PMSM (SPMSM) | 内置式 PMSM (IPMSM) |
|---|---|---|
| 电感关系 | Ld = Lq | Ld < Lq |
| 磁阻转矩 | 无(仅永磁转矩) | 有(可利用磁阻转矩) |
| 解耦难度 | 较低(Ld = Lq,补偿简单) | 较高(Ld ≠ Lq,需分别补偿) |
| 电流环模型 | d/q 轴对称,传递函数相同 | d/q 轴时间常数不同 |
| 弱磁控制 | 需要较大 id 去磁 | 利用磁阻转矩,弱磁更高效 |
调参建议: 对于 SPMSM,d/q 轴 PI 参数可以设成一样。对于 IPMSM,建议分别计算 d 轴和 q 轴的时间常数,再分别整定。我习惯先用 τ = L/Rs 算个理论值,然后在此基础上 ±20% 扫参。
2.6 避坑指南
最后分享几个我踩过的坑:
- 解耦参数不准: 我曾经直接用电机铭牌上的电感值做解耦,结果低速还行,高速时电流震荡。后来做了离线参数辨识才解决。
- 忽略数字延迟: 传递函数推导是连续的,但实际代码里有采样延迟和 PWM 更新延迟。建议在模型里加一个 1.5 拍延迟环节,更贴近实际。
- 反电动势补偿: 高速时反电动势很大,如果不做前馈补偿,电流环带宽会受限。我一般在 q 轴输出上加 ωe * ψf 的前馈项。