M9 PMSM 矢量控制(FOC)环路公式推导
基于 M9_Flux_weakening0x2Eslx 模型,从转速给定 N 开始,逐级推导到 SVPWM 输出与反馈通路。 变量名沿用模型内部原名。
0. 电机与控制器参数(InitFcn)
| 参数 | 值 | 含义 |
|---|---|---|
| Vdc | 311 V | 母线电压 |
| Rs | 0.958 Ω | 定子电阻 |
| Ld | 5.25 mH | d 轴电感 |
| Lq | 12 mH | q 轴电感 |
| flux | 0.1827 V·s | 永磁磁链 |
| J | 0.003 kg·m² | 转动惯量 |
| B | 0.008 N·m·s/rad | 粘滞摩擦 |
| pole | 4 | 极对数 |
| Ts | 1e-5 s | 控制周期(100 kHz) |
| Ismax | 43.3 A | 最大相电流(25√3) |
1. 转速给定 → 机械角速度 → 电角速度
ini
N_ref [rpm] % 来自 Step / From Workspace
ωm_ref = N_ref · 2π / 60 % 机械角速度 [rad/s]
ωe_ref = ωm_ref · pole % 电角速度 [rad/s]
模型中 Speed 环的误差 = ωe_ref − ωe_feedback(反馈来自 PMSM 块的 we)。
2. 速度环 PI(Speed 子系统)
erlang
eω = ωe_ref − ωe % 转速误差
Te_raw = Kpw · eω + Kiw · ∫eω dt % 离散:integ += Kiw·eω·Ts
Te* = sat(Te_raw, −Tmax, +Tmax) % Saturation 限幅
Kpw、Kiw 在 InitFcn 中定义;Ba 是粘滞摩擦前馈(可选)。 输出 Te* 作为 MTPA 的输入。
3. MTPA 最大转矩电流比(MTPA 子系统)
模型用二次多项式拟合 MTPA 曲线(Te 为输入):
css
id* = −0.0024 · Te*² + 0.5918 · Te* + 2.7841 % [A]
iq* = 0.0007 · Te*² − 0.3793 · Te* + 0.5537 % [A]
物理意义:IPMSM 凸极效应(Ld<Lq),MTPA 给负 id 弱磁增磁,相同转矩下电流最小。 当 Te* 较小时 id*≈2.78A(小信号偏移),Te* 增大时 id* 变负。
4. 弱磁控制(flux weak 子系统)
当转速超过基速,需要减弱永磁磁链以维持电压极限。
4.1 电压反馈(来自 PMSM 输出的 Vs_d、Vs_q)
ini
Us = √(ud² + uq²) % 当前 dq 电压幅值
4.2 弱磁 PI 环
ini
eU = Us − Us_max % Us_max = Vdc/√3(线性调制区)
id_wk = Kp_wk · eU + Ki_wk · ∫eU dt
4.3 电流参考合成(Switch 切换)
ini
if ωe < ωe_base:
id_ref = id*_mtpa % 只走 MTPA
iq_ref = iq*_mtpa
else:
id_ref = id*_mtpa + id_wk % 叠加弱磁负 id
iq_ref = √(Ismax² − id_ref²) % 电流极限圆约束
% 模型中用 max(0, Ismax² − id_ref²) 保护,防止开根号负数
5. 电流环 PI(FOC Model 上游)
ini
ed = id_ref − id_fb % d 轴电流误差
eq = iq_ref − iq_fb % q 轴电流误差
ud_pi = Kp_id · ed + Ki_id · ∫ed dt
uq_pi = Kp_q · eq + Ki_q · ∫eq dt
电流环带宽远高于速度环(通常 1~2 kHz)。
6. 电流前馈解耦(电流前馈子系统)
d-q 轴电压方程含交叉耦合项,用前馈抵消:
ini
yd = ωe · Lq · iq % d 轴耦合电压(模型输入 Lq)
yq = ωe · (flux + Ld · id) % q 轴反电动势 + 电感耦合
最终 dq 电压参考:
erlang
ud* = ud_pi − yd % 减前馈(抵消 ωe·Lq·iq)
uq* = uq_pi − yq % 减前馈(抵消 ωe·(flux+Ld·id))
物理意义:PMSM 电压方程 ud = Rs・id + Ld・did/dt − ωe・Lq・iq uq = Rs・iq + Lq・diq/dt + ωe・(flux + Ld・id) 前馈把 ωe 项提前补偿,PI 只处理动态误差。
7. 反 Park 变换(dq → αβ)
arduino
uα = ud* · cosθe − uq* · sinθe
uβ = ud* · sinθe + uq* · cosθe
θe 来自旋变(或观测器 theta_est)。
8. SVPWM(FOC Model 子系统)
输入 uα、uβ、Udc,输出三相占空比:
ini
Vref = (2/Vdc) · √(uα² + uβ²) % 调制比
θs = atan2(uβ, uα) % 参考矢量角度
sector = floor(θs / (π/3)) + 1 % 扇区 1~6
T1 = (√3 · Ts · Vref) · sin(π/3 − θs_in_sector)
T2 = (√3 · Ts · Vref) · sin(θs_in_sector)
T0 = Ts − T1 − T2 % 零矢量时间
Tcm1 = (T0/2)
Tcm2 = Tcm1 + T1
Tcm3 = Tcm2 + T2
输出 Tcm1、Tcm2、Tcm3 接 PWM 脉冲发生器(Subsystem),驱动三相逆变器。
9. PMSM 电机本体
三相电流 ia、ib、ic 流入 PMSM 块,输出:
-
三相定子电流 is_a、is_b、is_c
-
dq 电流 is_d、is_q
-
定子电压 Vs_d、Vs_q
-
转子角速度 ωe(rad/s)
-
电磁转矩 Te(N・m)
-
转子角度 θe(rad)
机械方程:
ini
J · dωm/dt = Te − Tload − B·ωm
dθm/dt = ωm
θe = θm · pole
10. 反馈通路:Clark 变换(abc → αβ,幅值不变型)
scss
iα = (2/3) · (ia − ib/2 − ic/2)
iβ = (1/√3) · (ib − ic)
幅值不变型(带 2/3),输入输出幅值相等。
11. 反馈通路:Park 变换(αβ → dq)
arduino
id_fb = iα · cosθe + iβ · sinθe
iq_fb = −iα · sinθe + iβ · cosθe
与反 Park 互逆。θe 用旋变角度(无感模式下用 theta_est)。
12. 环路总览(信号流)
scss
N_ref
│
▼
Speed PI ──→ Te*
│
▼
MTPA ──→ id*, iq*
│
▼
flux weak ──→ id_ref, iq_ref (叠加弱磁)
│
▼
电流环 PI (id, iq 误差)
│ ▲
│ ud_pi, uq_pi │ id_fb, iq_fb
▼ │
+ 电流前馈 (yd, yq) │
│ │
▼ │
ud*, uq* ──→ 反 Park ──→ uα, uβ
│
▼
SVPWM ──→ Tcm1/2/3 ──→ 逆变器
│
▼
PMSM 电机本体 ──→ ia, ib, ic, θe, ωe
│
▼
Clark ──→ iα, iβ
│
▼
Park ──→ id_fb, iq_fb ──→ 回到电流环 PI
附:NTSM-SMO 无感模式下的替代信号
| 旋变信号 | 无感替代 | 来源 |
|---|---|---|
| θe | theta_est | NTSM-SMO 输出 |
| ωe(速度环反馈) | we_est | NTSM-SMO 输出 |
| we(前馈用) | we_est | NTSM-SMO 输出 |
无感模式下,Clark/Park 反馈通路的 θe 切换到 theta_est,速度环误差 = ωe_ref − we_est。