2、速度环控制模型:从电机方程到PI传递函数
好,我们正式开始啃速度环的硬核部分。这一章我会把永磁同步电机(PMSM)的数学模型、速度环PI控制器的结构,以及传递函数推导串起来讲。你可能会觉得公式有点多,但别怕——我会用项目里的实际例子帮你理解。
2.1 永磁同步电机的数学模型
先说说PMSM的数学模型。说白了,我们要控制速度,就得先知道电机本身长什么样。我习惯从电压方程和转矩方程入手。
在d-q旋转坐标系下,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 —— 永磁体磁链
嗯,这里要注意:对于表贴式PMSM(SPMSM),Ld ≈ Lq,方程会简化不少。但内嵌式(IPMSM)就不一样了,Ld和Lq差别挺大,我在做某个高速主轴项目时就吃过这个亏——一开始按Ld=Lq算,结果电流环响应总是不对。
再看电磁转矩方程:
Te = 1.5 * p * [ψf * iq + (Ld - Lq) * id * iq]
这里p是极对数。对于SPMSM,Ld - Lq = 0,转矩就简化为:
Te = 1.5 * p * ψf * iq
你看,转矩和iq成正比——这就是为什么我们常说q轴电流就是转矩电流。我个人习惯把id=0作为控制策略,这样转矩控制就变成了纯粹的iq控制,简单又直观。
最后是运动方程:
Te - TL = J * (dωm/dt) + B * ωm
其中:
- TL —— 负载转矩
- J —— 转动惯量
- B —— 阻尼系数
- ωm —— 机械角速度(ωm = ωe / p)
这三个方程合在一起,就是PMSM的完整数学模型。你想想看,速度环要控制的ωm,最终是通过iq来调节的,中间还隔着电流环。所以速度环的响应速度,天生就受限于电流环的带宽。
2.2 速度环PI控制器结构
速度环最常用的就是PI控制器。为什么不用PID?我在实际项目中试过加微分项,但速度反馈信号通常有噪声,微分项会把噪声放大,反而让系统抖得厉害。所以,PI就够了。
速度环PI控制器的结构框图如下:
速度环PI控制器结构
速度给定 ω* → [误差计算] → [比例项 Kp] → [积分项 Ki/s] → [限幅] → 电流给定 iq*
速度反馈 ωm ← [编码器/霍尔] ← 电机
用公式表达就是:
iq* = Kp * (ω* - ωm) + Ki * ∫(ω* - ωm) dt
其中:
- Kp —— 比例增益,决定响应速度
- Ki —— 积分增益,消除稳态误差
- ω* —— 速度给定
- ωm —— 速度反馈
这里有个坑:积分项的输出必须做限幅。我曾经在一个包装机械项目里没加积分限幅,结果启动时积分项一直累加,输出饱和,电机直接冲过了头——嗯,从那以后我再也不敢省略限幅了。
2.3 速度环传递函数推导
好,现在我们来推导速度环的传递函数。这一步是为了后续整定参数时能有个理论依据。
先做几个简化假设:
- 电流环响应足够快,近似为1(即iq ≈ iq*)
- 忽略阻尼系数B(B通常很小)
- 空载运行(TL = 0)
在这些假设下,运动方程简化为:
Te = J * (dωm/dt)
而Te = Kt * iq,其中Kt = 1.5 * p * ψf是转矩常数。
所以:
Kt * iq = J * (dωm/dt)
拉普拉斯变换后:
Kt * Iq(s) = J * s * ωm(s)
得到电机本身的传递函数:
Gm(s) = ωm(s) / Iq(s) = Kt / (J * s)
你看,电机本身就是一个积分环节。
现在加入PI控制器,其传递函数为:
Gpi(s) = Kp + Ki / s = (Kp * s + Ki) / s
整个速度环的开环传递函数就是:
Gopen(s) = Gpi(s) * Gm(s) = (Kp * s + Ki) / s * Kt / (J * s)
= Kt * (Kp * s + Ki) / (J * s²)
闭环传递函数为:
Gclose(s) = Gopen(s) / (1 + Gopen(s))
= [Kt * (Kp * s + Ki) / (J * s²)] / [1 + Kt * (Kp * s + Ki) / (J * s²)]
= Kt * (Kp * s + Ki) / (J * s² + Kt * Kp * s + Kt * Ki)
这个二阶系统的标准形式是:
Gclose(s) = (2 * ζ * ωn * s + ωn²) / (s² + 2 * ζ * ωn * s + ωn²)
对比系数可得:
| 参数 | 表达式 | 物理意义 |
|---|---|---|
| 自然频率 ωn | √(Kt * Ki / J) | 系统响应的固有频率 |
| 阻尼比 ζ | Kp / 2 * √(Kt / (J * Ki)) | 决定超调量和振荡程度 |
有了这个关系,我们就可以根据想要的响应特性来反推Kp和Ki了。比如,想要临界阻尼(ζ=1),就令:
Kp = 2 * √(J * Ki / Kt)
我个人习惯先根据系统带宽要求确定ωn,再根据超调量要求确定ζ,最后算出Kp和Ki。这样比盲目试凑要靠谱得多。
小技巧: 如果你不确定J的值,可以用自整定功能让控制器自动辨识。很多现代伺服驱动器都支持这个功能,我一般在项目初期先用自整定拿到一个初始值,再手动微调。
注意: 上面的推导忽略了电流环延迟、采样延迟和PWM延迟。在实际系统中,这些延迟会降低相位裕度,导致系统不稳定。所以理论算出来的Kp和Ki通常要打个7-8折,再根据实际响应微调。
2.4 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张结构图:
这张图把这一章的核心内容串起来了。从左到右,从物理模型到控制器,再到传递函数,最后都指向参数整定。你后面调参数的时候,随时可以回来看这张图,思路会清晰很多。