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。

相关推荐
HaipengYu4 小时前
从 Config Hook 到 Server/TUI:OpenCode 插件 V1 到 V2 的架构演进
人工智能·架构
罗丹丹Luna4 小时前
移动端显示“已提交”以后:SAP 与低代码集成该怎样暴露真实状态
后端·架构
吴凡wudianmei4 小时前
每调一次模型都花钱?如何用工程手段把调用压到最少?
前端·后端·架构
欣欣之王来了4 小时前
Vue3项目脚手架:Vite vs Vue CLI怎么选?
前端·学习·架构·项目·vue3教程
姜鱼问生5 小时前
密码明明一样,为什么 GPG 说“错的“?
后端·算法·架构
崎岖Qiu5 小时前
MCP 的架构、协议分层与通信过程
后端·ai·架构·agent·mcp
这个DBA有点耶5 小时前
从时间到语义:时序数据库与向量数据库的核心机制、选型与多模融合趋势
数据库·mysql·架构
m0_587383005 小时前
无人自助拼豆系统核心功能开发与部署落地全流程实战指南
java·经验分享·后端·struts·架构