永磁同步电机运行域并不是简单画一条“恒转矩—恒功率”折线。真正的边界同时取决于电机参数、逆变器直流母线、电流上限、退磁电流限制、转速以及采用的电压模型。更麻烦的是,工程数据经常混用峰值/RMS、相量/线量、机械转速/电气转速、极数/极对数。参数约定只要错一个,得到的运行域就可能整体偏移。
为把这项分析变成可重复使用的流程,我制作了 Codex 技能 generate-pmsm-operating-envelope。它不会收到几个数字后立刻拼出脚本,而是先与用户逐步确认参数及其物理定义,完成单位归一化和一致性检查,最后生成经过 MATLAB 验证的独立代码包。
技能解决什么问题
技能生成两类相互关联的运行域。
第一类是 电流平面,其中包括:
- 最大电流圆;
- 最大负 所定义的退磁边界;
- 不同转速下的电压限制椭圆;
- MTPA 轨迹;
- 随转速变化的最大转矩/弱磁最优轨迹。

第二类是机械转速—最大电磁转矩平面,即:
它给出正转电动区域的最大转矩边界,并在出现电压限制时估计基速。

当前版本覆盖:
暂不包括反转和回馈制动象限。
为什么需要交互式参数确认
绘制运行域所需的规范参数是:
| 参数 | 规范定义 |
|---|---|
| 每相定子电阻 | |
| dq 轴电感 | |
| 相峰值永磁磁链 | |
| 极对数 | |
| 直流母线电压 | |
| 最大相电流峰值 | |
| 允许的最大负 d 轴电流 | |
| 最大机械角速度 | |
| 直流母线电压利用率 |
现实中,用户提供的往往不是这些规范量。例如,电阻可能是端子间测量值,电流可能是线电流 RMS,速度可能用 rpm 表示,磁链可能需要由线电压反电势常数或转矩常数推导。
因此技能会分阶段确认:
- 电机属于 IPMSM 还是 SPMSM,以及参数来源;
- 星形或三角形连接;
- 峰值/RMS、相量/线量、机械/电气速度等约定;
- 或带明确定义的 ;
- ;
- 完整稳态模型或高速近似模型;
- 规范化参数表及最终确认。
技能不会静默猜测单位。如果只给出线电阻或线电流,必须先确认绕组连接;如果只给出 ,必须说明其线/相、峰值/RMS 和转速基准。
参数矛盾处理
同一磁链可能同时由多个来源得到。技能会比较直接磁链、反电势常数和转矩常数推导结果。相对差异定义为:
处理规则为:
- :提示差异,可采用均值或明确指定来源;
- :必须由用户选择可信来源;
- :视为明显矛盾,停止生成,直到参数得到修正。
若不知道退磁限制,只有在用户明确确认后才允许采用:
推荐的电压利用率为 ,但同样需要确认,不会作为隐藏假设写入脚本。
数学模型
完整稳态模型采用:
逆变器的可用相电压峰值为:
电压约束为:
电流和退磁约束为:
电磁转矩为:
高速近似模型使用同样的表达式,但令 。生成的图、CSV 和参数摘要都会标记所用模型,避免后续混淆。
不依赖 Optimization Toolbox 的求解方法
程序对每个机械转速扫描允许的 。给定 后,电流圆直接给出:
把 代入电压约束,可以得到关于 的二次不等式:
程序解析计算其可行区间,再与:
求交,得到该 下最大的可行 ,最后比较所有候选点的电磁转矩。
这个方法有两个重要优点:
- 不依赖 Optimization Toolbox;
- 不使用 作为必须存在的基值,因此在 的 SPMSM 情况下不会除零。
生成代码的公共接口
核心函数接口为:
| |
params 使用 SI 单位、机械转速和相峰值 dq 量:
| |
主要结果包括:
| |
mode 会标记电流、电压和退磁限制是否激活。输出点会重新代入原始方程,检查电流圆、电压限制、退磁边界和转矩残差。
如何调用技能
将下载的目录放入 Codex 全局技能目录:
| |
然后在新任务中调用:
| |
也可以直接描述需求,例如:
| |
技能完成参数确认后会生成:
| |
outputs 中包含两张 PNG、MAT 数据、CSV 运行域表和规范化参数摘要。
验证情况
当前代码包已经完成:
- Python 参数换算和矛盾阻断测试;
- SPMSM 低速解析结果检查;
- IPMSM MTPA 与高速电压限制检查;
- 完整模型在 时向高速近似模型收敛的检查;
- 所有输出工作点的电流、电压、退磁和转矩残差断言;
- MATLAB
checkcode静态检查; - 两张 PNG、MAT、CSV 和摘要文件的端到端生成测试。
运行域的可信度最终仍取决于输入参数,尤其是磁链、电感、最大相电流、直流母线和退磁电流限制。这个技能的价值并不是替代电机参数辨识,而是把约定确认、矛盾发现、数值求解和结果验证连接成一条可审查、可复现的流程。