PMSM 矢量控制(FOC)环路公式推导

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。

相关推荐
广凌科技1 小时前
广凌校园物联网中台整体解决方案:三层架构驱动校园数字化智治
物联网·架构
这个DBA有点耶2 小时前
Merge还是Materialize?一文讲透MySQL 8.0 CTE底层的执行计划博弈与性能陷阱
数据库·mysql·架构
一条Go3 小时前
四个进程,一把锁:Alioth 的告警评测为什么不需要消息队列
后端·设计模式·架构
得物技术3 小时前
多 Agent 架构的三次反转:从中心调度到自驱协作|得物技术
程序员·架构·llm
Decay__5 小时前
19_MySQL 告警与自动化运维 —— 告警分级收敛 / Webhook / 定时巡检 / 脚本库
运维·数据库·sql·mysql·架构
JosieBook6 小时前
【鸿蒙PC GUI适配】chiaki-ng 移植的工程实践:Qt6/QML 与 ArkUI 的混合窗口架构
华为·架构·harmonyos
七牛云行业应用16 小时前
DeepSeek Super-agent 与 Grok Bot:开源 Agent 架构和聊天助手有何区别
人工智能·ai·架构·ai编程
天远Date Lab16 小时前
零信任架构实战:基于天远租凭分期报告构建自动化汽车以租代购免押风控网关
网络·人工智能·架构·自动化
深圳行云创新19 小时前
智能体架构之争:单Agent加Skills,还是多加几个Agent
人工智能·架构·软件工程
这个DBA有点耶20 小时前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构