# 复现指南 — MARS SSSR 轴向磁拉力仿真 交给同事跑之前请通读一遍;整个流程一条命令,约 2 分钟,原始 .mot 不会被修改。 ## 1. 环境要求 | 项 | 要求 | 验证方法 | |---|---|---| | 系统 | Windows | — | | Motor-CAD | 2026R1 (v261),安装器会设 `MOTORCAD_ACTIVEX` 环境变量 | `echo %MOTORCAD_ACTIVEX%` 应指向 activex.bat | | Python | ≥ 3.10 | `python --version` | | PyMotorCAD | `pip install ansys-motorcad-core` | `python -c "import ansys.motorcad.core"` | ## 2. 获取项目 复制整个 `motionpushpull` 目录(含 `.git`,git 历史里有全部踩坑记录)。 关键文件: - `MARS-12S10P_SSSR_D76-C150_V5.0-0819.mot` — 原始模型(只读使用) - `axial_force_final.py` — **唯一需要运行的脚本** - `axial_probe*.py` / `axial_force_run.py` — 探测数据口的历史过程,无需运行 - `RESULTS.md` — 上次运行的结果与方法要点 - `docs/CONVERSATION_LOG.md` — 完整过程记录 ## 3. 运行 ```bash python -X utf8 axial_force_final.py ``` - Motor-CAD 会**前台弹出**(保持前台是本项目约定),求解约 88 s; - 结束后 Motor-CAD 保持打开供人工检查;要自动关闭加 `--quit`; - 按项目纪律:改动脚本后、运行前先 `git commit`。 ## 4. 读结果 控制台末尾两行 `[结论]`,例如: ```text [结论] 负载(RMS 21A) 转子净轴向力: 均值 343.2 N, 纹波峰峰 3.87 N [结论] 空载 转子净轴向力: 均值 342.9 N, 纹波峰峰 3.53 N ``` 文件输出(`output_motorcad/`,git 不入库): - `axialforce_final_<时间戳>.json` — 全部波形 + 校核数据 - `axial_force_<时间戳>.csv` — 净轴向力时间序列(31 步/电周期) - `MARS_SSSR_axialF_<时间戳>.mot` — 求解工作副本 ## 5. 结果判定(三项都过才采信) 1. **作用–反作用**:`checks.action_reaction_*` 中 `imbalance_pct` < 5%; 2. **转矩交叉**:`sum_Ft_x_r_Nm_t0` 与 `torque_graph_mean_Nm` 偏差 < 10%; 3. **解析量级**:`analytic.F_est_N` 与 FEA 值同量级(解析式系统性偏大约 1.4×属正常)。 ## 6. 已知坑(都踩过,勿重复) - **电流是 RMS 口径**(`CurrentDefinition=1`):改电流设 `RMSCurrent`, 改 `PeakCurrent` 无效且不报错。 - 轴向力**没有输出变量/2D 图/文档**,唯一入口是 3D 集中节点力图 `Fr_{Rotor|Stator}_{OL|OC}_Lumped`(AFM 2.5D 展开模型中 Fr=轴向力); 脚本已封装,无需手动处理。 - 求解前必须打开 `ElectromagneticForcesCalc_Load/OC`(脚本已做)。 - 节点首尾(0°/360°)重复,求和须去重(脚本已做)。 - ~~Motor-CAD 残留锁文件问题~~:Motor-CAD 无此问题(那是 AEDT 的坑); python 退出后 Motor-CAD 进程可能随之退出,属正常。 ## 7. 换其它模型 - 改脚本顶部 `MOT_SRC` 指向新 .mot; - 若径向切片数量/半径不同:在 .mot 里搜 `AFM_SectionCentreRadius_Array`, 更新脚本的 `SEC_RADII_MM`(转矩交叉校核用); - 节点数会自动探测(转子=极数、定子=槽数),无需改; - 首次跑新模型建议核对:转子/定子合力是否反号、转矩交叉是否对得上。