2. 基础理论:从电机模型到传递函数
做电机控制这些年,我见过不少工程师上来就调 PID,结果调得满头包。为什么?说白了,你连电机长什么样都不知道,怎么调得好?这一章我们就来把电机模型这层窗户纸捅破。
2.1 永磁同步电机的数学模型
先看一个最简单的模型。永磁同步电机(PMSM)在 d-q 坐标系下的电压方程,其实就两个式子:
Vd = Rs * Id + Ld * dId/dt - ωe * Lq * Iq
Vq = Rs * Iq + Lq * dIq/dt + ωe * (Ld * Id + ψf)
嗯,这里要注意,ωe 是电角速度,不是机械转速。我刚开始做项目时,就因为这个搞混了,结果电流环怎么调都振荡。后来才发现,电角速度 = 极对数 × 机械角速度,这个换算千万别漏。
转矩方程也很关键:
Te = 1.5 * p * [ψf * Iq + (Ld - Lq) * Id * Iq]
这里有个坑。对于表贴式电机(SPMSM),Ld ≈ Lq,所以磁阻转矩项 (Ld - Lq) * Id * Iq 基本为零。但对于内置式电机(IPMSM),Ld 远小于 Lq,这时候磁阻转矩就很重要了。我在做一款高速主轴电机时,就利用了这个特性,把 Id 设为负值来提升效率。
2.2 从电压方程到传递函数
为什么要搞传递函数?因为我们要设计控制器。你想想看,没有数学模型,你怎么知道比例增益该设多大?
对电压方程做拉普拉斯变换,忽略交叉耦合项(先做近似处理),可以得到:
G(s) = Iq(s) / Vq(s) = 1 / (Lq * s + Rs)
这就是一个典型的一阶惯性环节。时间常数 τ = Lq / Rs,增益 K = 1 / Rs。
我个人的习惯是,拿到一个新电机,先看它的 Lq 和 Rs 参数。如果 Lq 很大,时间常数就大,电流响应就慢,这时候 PI 控制器的积分时间常数要设得大一些。
关键参数速查表
| 参数 | 物理意义 | 对控制的影响 |
|---|---|---|
| Rs | 定子电阻 | 决定稳态增益,温度升高时 Rs 会变大 |
| Ld, Lq | d/q 轴电感 | 决定电流环带宽,L 越大响应越慢 |
| ψf | 永磁体磁链 | 决定反电动势大小,影响弱磁控制 |
| p | 极对数 | 决定电角速度与机械转速的比例 |
2.3 电流环的闭环传递函数
有了被控对象模型,我们就可以设计电流环了。典型的 PI 控制器传递函数为:
C(s) = Kp + Ki / s
闭环传递函数为:
G_cl(s) = C(s) * G(s) / (1 + C(s) * G(s))
代入化简后,可以得到一个二阶系统。这里有个经典结论:如果按零极点对消来设计,取 Ki / Kp = Rs / Lq,那么闭环传递函数就简化为一阶低通滤波器。
带宽 ωbw = Kp / Lq。这个公式非常实用。比如你想要电流环带宽 1000 rad/s,Lq = 1 mH,那么 Kp = 1。就这么简单。
我的调参经验
带宽不是越高越好。我曾经在一个项目里把电流环带宽设到 2000 rad/s,结果电流噪声全进来了,电机嗡嗡响。后来降到 800 rad/s,反而更平稳。一般建议带宽设置在 500~1500 rad/s 之间,具体看你的 PWM 开关频率和采样延迟。
2.4 速度环与位置环的模型
速度环在电流环外面。机械运动方程:
J * dωm/dt = Te - TL - B * ωm
其中 J 是转动惯量,B 是阻尼系数,TL 是负载转矩。做拉普拉斯变换:
ωm(s) = (Te(s) - TL(s)) / (J * s + B)
你看,又是一个一阶系统。但这里有个问题:电流环的带宽必须远大于速度环的带宽。一般建议速度环带宽是电流环带宽的 1/10 到 1/5。否则内环响应太慢,外环会不稳定。
位置环就更简单了,速度积分就是位置:
θ(s) = ωm(s) / s
所以位置环被控对象是一个积分环节加一个一阶惯性环节。位置环的带宽通常更低,一般在 10~50 rad/s 就够用了。
2.5 知识体系总览
下面这张图把整个模型到传递函数的脉络梳理清楚了,建议你保存下来对照着看。
2.6 离散化与数字实现
上面讲的都是连续域的东西。但实际代码跑在 DSP 或 MCU 上,是离散的。所以要把连续传递函数离散化。
最常用的方法是双线性变换(Tustin 变换):
s = 2/Ts * (1 - z⁻¹) / (1 + z⁻¹)
其中 Ts 是采样周期。我建议你直接用这个公式把 PI 控制器转成差分方程:
u(k) = u(k-1) + Kp * [e(k) - e(k-1)] + Ki * Ts * e(k)
这个形式在代码里实现非常方便。注意 Ki 要乘以 Ts,因为积分项是累加。
避坑指南
我曾经在一个项目里,采样周期从 100μs 改到 50μs,忘了重新计算 Ki 值,结果电流环直接发散。后来花了半天才排查出来。所以每次改采样频率,一定要重新算一遍 PI 参数。
2.7 参数辨识的重要性
模型有了,但参数从哪来?厂家给的 datasheet 往往不准,尤其是电感值,随电流变化很大。我个人的做法是:
- Rs 测量:给电机通直流电,测电压电流,用欧姆定律算。注意要测三相,取平均值。
- Ld/Lq 测量:用高频注入法,或者直接看电流环的阶跃响应,反推时间常数。
- ψf 测量:反拖电机,测反电动势,再除以转速。
这些方法都不复杂,但很实用。你想想看,如果连 Rs 都差 20%,你设计的 PI 参数能准吗?