2026-08-11

交互式生成 PMSM 运行域:一个可复用的 Codex Skill 与 MATLAB 代码包

介绍 generate-pmsm-operating-envelope 技能的参数确认流程、PMSM 电压电流约束、MTPA/弱磁求解方法、MATLAB 接口及完整代码包。

永磁同步电机运行域并不是简单画一条“恒转矩—恒功率”折线。真正的边界同时取决于电机参数、逆变器直流母线、电流上限、退磁电流限制、转速以及采用的电压模型。更麻烦的是,工程数据经常混用峰值/RMS、相量/线量、机械转速/电气转速、极数/极对数。参数约定只要错一个,得到的运行域就可能整体偏移。

为把这项分析变成可重复使用的流程,我制作了 Codex 技能 generate-pmsm-operating-envelope。它不会收到几个数字后立刻拼出脚本,而是先与用户逐步确认参数及其物理定义,完成单位归一化和一致性检查,最后生成经过 MATLAB 验证的独立代码包。

下载完整技能与 MATLAB 代码包

技能解决什么问题

技能生成两类相互关联的运行域。

第一类是 电流平面,其中包括:

PMSM 的 id-iq 运行域

第二类是机械转速—最大电磁转矩平面,即:

它给出正转电动区域的最大转矩边界,并在出现电压限制时估计基速。

PMSM 的转速—最大转矩运行域

当前版本覆盖:

暂不包括反转和回馈制动象限。

为什么需要交互式参数确认

绘制运行域所需的规范参数是:

参数规范定义
每相定子电阻
dq 轴电感
相峰值永磁磁链
极对数
直流母线电压
最大相电流峰值
允许的最大负 d 轴电流
最大机械角速度
直流母线电压利用率

现实中,用户提供的往往不是这些规范量。例如,电阻可能是端子间测量值,电流可能是线电流 RMS,速度可能用 rpm 表示,磁链可能需要由线电压反电势常数或转矩常数推导。

因此技能会分阶段确认:

  1. 电机属于 IPMSM 还是 SPMSM,以及参数来源;
  2. 星形或三角形连接;
  3. 峰值/RMS、相量/线量、机械/电气速度等约定;
  4. 或带明确定义的
  5. 完整稳态模型或高速近似模型;
  6. 规范化参数表及最终确认。

技能不会静默猜测单位。如果只给出线电阻或线电流,必须先确认绕组连接;如果只给出 ,必须说明其线/相、峰值/RMS 和转速基准。

参数矛盾处理

同一磁链可能同时由多个来源得到。技能会比较直接磁链、反电势常数和转矩常数推导结果。相对差异定义为:

处理规则为:

若不知道退磁限制,只有在用户明确确认后才允许采用:

推荐的电压利用率为 ,但同样需要确认,不会作为隐藏假设写入脚本。

数学模型

完整稳态模型采用:

逆变器的可用相电压峰值为:

电压约束为:

电流和退磁约束为:

电磁转矩为:

高速近似模型使用同样的表达式,但令 。生成的图、CSV 和参数摘要都会标记所用模型,避免后续混淆。

不依赖 Optimization Toolbox 的求解方法

程序对每个机械转速扫描允许的 。给定 后,电流圆直接给出:

代入电压约束,可以得到关于 的二次不等式:

程序解析计算其可行区间,再与:

求交,得到该 下最大的可行 ,最后比较所有候选点的电磁转矩。

这个方法有两个重要优点:

  1. 不依赖 Optimization Toolbox;
  2. 不使用 作为必须存在的基值,因此在 的 SPMSM 情况下不会除零。

生成代码的公共接口

核心函数接口为:

1
result = computePMSMOperatingEnvelope(params, options);

params 使用 SI 单位、机械转速和相峰值 dq 量:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
params.name = "Example PMSM";
params.Rs_Ohm = 0.08;
params.Ld_H = 0.8e-3;
params.Lq_H = 1.2e-3;
params.psiF_Vs = 0.045;
params.polePairs = 4;
params.Vdc_V = 120;
params.ImaxPeak_A = 20;
params.IdMinPeak_A = -20;
params.omegaMax_rad_s = 450;
params.voltageUtilization = 0.95;
params.voltageModel = "full";

主要结果包括:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
omega_rad_s
speed_rpm
TeMax_Nm
idOpt_A
iqOpt_A
mode
baseSpeed_rad_s
baseSpeed_rpm
voltageMagnitude_V
validation

mode 会标记电流、电压和退磁限制是否激活。输出点会重新代入原始方程,检查电流圆、电压限制、退磁边界和转矩残差。

如何调用技能

将下载的目录放入 Codex 全局技能目录:

1
~/.codex/skills/generate-pmsm-operating-envelope

然后在新任务中调用:

1
$generate-pmsm-operating-envelope

也可以直接描述需求,例如:

1
请根据我的 IPMSM 参数生成 id-iq 平面和转速—最大转矩运行域。

技能完成参数确认后会生成:

1
2
3
4
5
run_pmsm_operating_envelope.m
computePMSMOperatingEnvelope.m
plotAndExportPMSMOperatingEnvelope.m
canonical_parameters.json
outputs/

outputs 中包含两张 PNG、MAT 数据、CSV 运行域表和规范化参数摘要。

验证情况

当前代码包已经完成:

运行域的可信度最终仍取决于输入参数,尤其是磁链、电感、最大相电流、直流母线和退磁电流限制。这个技能的价值并不是替代电机参数辨识,而是把约定确认、矛盾发现、数值求解和结果验证连接成一条可审查、可复现的流程。