版本:2026-08-26
适用目录:E:\aitestlocal\codex\tr
参考项目:E:\aitestlocal\claude\motorcadopt
本知识库用于指导 Motor-CAD 模型的自动参数扫描、结果采集、GUI 工具维护和后续寻优。 当前主要模型为:
MARS-9S8P_SSSR_Halbach_PCB-V1.0.mot
已经实现或验证的扫描类型包括:
| GUI 名称 | Motor-CAD 自动化变量 | 单位 | 基线值 | 说明 |
|---|---|---|---|---|
| Central Mag Arc [ED] | MagnetCentralArc_HalbachRing |
EDeg | 120 | Halbach 中央磁块弧角,不等于整体极弧 |
| Magnet Arc [ED] | Magnet_Arc_[ED] |
EDeg | 180 | 整体磁铁极弧 |
| Slot Opening | Slot_Opening |
mm | 8 | 基线等于槽宽,属于完全开口槽 |
| Slot Width | Slot_Width |
mm | 8 | Parallel Slot 模型的槽宽 |
| PCB 铜线宽 | Copper_Width |
mm | 3.39 | 已与槽口联动公式核对 |
| 每电周期转矩点数 | TorquePointsPerCycle |
points/cycle | 30 | 原模型值,速度快但存在混叠风险 |
| 气隙内部网格点 | AirgapMeshPoints_mesh |
points | 840 | 与 surface 参数通常成对设置 |
| 气隙表面网格点 | AirgapMeshPoints_layers |
points | 840 | 与 mesh 参数通常成对设置 |
关键区分:
Central Mag Arc [ED] 时必须写 MagnetCentralArc_HalbachRing。Magnet Arc [ED] 时必须写 Magnet_Arc_[ED]。Motor-CAD 通过 Windows RPC/COM 风格接口驱动,必须使用 Windows 原生 Python。 WSL 或 Linux 环境不能连接本机 Motor-CAD 实例。
主要依赖:
ansys-motorcad-core
tkinter
PyInstaller
自动求解使用独立 Motor-CAD 实例,并调用:
mc = pymotorcad.MotorCAD(open_new_instance=True, keep_instance_open=False)
mc.set_visible(True)
这样可以避免连接到正在被其它程序控制的 Motor-CAD 实例,同时保证用户能看到新实例。
open_new_instance=False 会尝试连接现有实例。机器上同时存在多个 Motor-CAD 时,可能连接到错误模型。
除非已通过进程和 RPC 端口明确识别目标实例,否则不要使用自动连接现有实例的方式运行批处理。
每个扫描组合开始前必须执行:
mc.load_from_file(model_path)
然后再写本点参数。这样可以避免上一点参数、求解开关或派生状态污染下一点。
扫描结束时也应重新加载基线模型,使 Motor-CAD 不停留在最后一个扫描值。
单参数扫描只写该参数;求解采样点和网格属于数值设置,不是设计变量,应在结果清单中明确记录。
Motor-CAD 对不适用的参数有时会静默接受,因此每次写入都必须用 get_variable 回读并比较:
mc.set_variable(variable, value)
applied = float(mc.get_variable(variable))
若不一致,当前点应标为 FAILED,不能继续把结果当作有效数据。
槽口改变时,铜线宽按以下公式计算:
Copper_Width = (Slot_Opening - clearance) / 2 / conductor_count
当前默认:
clearance = 0.2 mmconductor_count = 1/2 表示槽两侧分配默认槽口扫描 5.4–7.4 mm、步长 0.2 mm 时:
| Slot Opening (mm) | Copper Width (mm) |
|---|---|
| 5.4 | 2.6 |
| 5.6 | 2.7 |
| 5.8 | 2.8 |
| 6.0 | 2.9 |
| 6.2 | 3.0 |
| 6.4 | 3.1 |
| 6.6 | 3.2 |
| 6.8 | 3.3 |
| 7.0 | 3.4 |
| 7.2 | 3.5 |
| 7.4 | 3.6 |
二维扫描中推荐写入顺序:
Slot_OpeningCopper_Width端点均包含在扫描序列中。如果终点无法由整数个步长严格到达,程序会额外加入终点。
总仿真数为两个参数水平数的乘积:
N_total = N_parameter_1 x N_parameter_2
示例:
21 x 11 = 231。按 30 点/840 网格的实际速度约 2.5–4.2 分钟/点估算,231 点可能需要约 10–16 小时。 GUI 必须在启动前显示组合总数和粗略时长,并要求再次确认。
TorquePointsPerCycle = 30
Airgap mesh/layers = 840
优点:速度快,适合初筛。
风险:本机 9 槽 8 极模型的主要齿槽成分是 18 次电频谐波,30 点/电周期低于可靠分辨要求,
可能发生混叠,因此不能把 30 点扫描的绝对脉动值直接当作最终结论。
已知坑:120 点搭配原始 840 网格时,Motor-CAD 会弹出网格与时间步不对齐警告,导致无人值守 RPC 批处理失败。Motor-CAD 曾建议改为 960;参考项目的高精度研究还使用过 1680。
原则:
GUI 与 CSV 应尽可能采集以下常用指标:
| 类别 | Motor-CAD 结果名称 |
|---|---|
| 转矩脉动 | Torque Ripple (VW) [%]、Torque Ripple (VW) |
| 平均转矩 | Average torque (virtual work) |
| 系统效率 | System Efficiency |
| 反电动势 | Back EMF Line-Line Voltage (rms) |
| 反电动势失真 | Harmonic Distortion Back EMF Line-Line Voltage |
| 总损耗 | Total Losses (on load) |
| 铜耗 | Armature DC Copper Loss (on load) |
| 磁钢损耗 | Magnet Loss (on load) |
| 定子铁耗 | Stator iron Loss [total] (on load) |
| 输入功率 | Input Power |
| 输出功率 | Output Power,导出名称可能带状态后缀 |
| 电磁功率 | Electromagnetic Power,导出名称可能带状态后缀 |
| 轴转速 | Shaft Speed |
| 空载转速 | No load speed |
结果导出文件使用分号分隔,不是普通逗号 CSV。相同指标可能在多个段落重复,优先取
E-Magnetics,再按 Drive、Losses、Materials、Miscellaneous 搜索。
每次 GUI 运行应创建独立目录:
runs/YYYYMMDD_HHMMSS_mmm_<scan_name>/
目录内至少包含:
run_manifest_<timestamp>.json:模型、参数范围、完整组合、数值设置和 Git 提交;scan_results_<timestamp>.csv:逐点汇总结果;program_log_<timestamp>.log:毫秒级时间戳日志;raw/result_<index>_<values>_<timestamp>.csv:每点 Motor-CAD 原始导出。每个点完成后立即写 CSV 并刷新文件,不能等整批完成后一次性保存。失败点记录错误并继续下一点。
| 版本/程序 | 功能 |
|---|---|
MotorCADParameterScanV2 |
单参数扫描,稳定的三行设置布局 |
MotorCADParameterScanV3 |
Central Mag Arc × Slot Opening 二维扫描,带 Copper Width 联动 |
MotorCADMagnetArcScan |
V2 单参数布局,扫描整体 Magnet_Arc_[ED] |
单参数 V2 布局要求:
所有 .py 和 .ps1 脚本必须只包含 ASCII 字符。中文说明放在 Markdown 文档中,不能写进脚本注释、
窗口标题、帮助文本或日志模板。
建议检查:
rg -n "[^\x00-\x7F]" --glob '*.py' --glob '*.ps1' .
每次实际启动 Motor-CAD 求解前:
GUI 的 Git preflight 若失败,必须拒绝启动求解。
| 现象 | 原因 | 处理 |
|---|---|---|
| 连接成功但控制了错误窗口 | 同时运行多个 Motor-CAD,自动连接命中错误实例 | 新建独立实例并设为可见 |
| RPC 在计算开始时报 Warning/Error | Motor-CAD 弹出交互警告 | 先做单点验证;修正网格/时间步组合 |
| 参数写成功但几何不变 | 参数不适用于当前机型,Motor-CAD 静默接受 | 回读只是最低要求;存疑参数还要截图或结果对照验证 |
| 扫描点之间结果异常累积 | 未重新加载基线 | 每点先 load_from_file |
| GUI 看不到 Step 输入框 | Grid 列发生标签与输入框覆盖 | 使用 V2 三行布局,每组控件放独立 Frame |
| 长时间任务中途丢失全部结果 | 批次结束才保存 | 每点立即追加 CSV、写日志并 flush |
| 30 点结果看似更优 | 18 次谐波混叠 | 只用于趋势筛选,高精度复算确认 |
| Git 报 dubious ownership | 仓库所有者与运行账户不同 | 每条命令使用 git -c safe.directory=E:/aitestlocal/codex/tr ... |
Central Mag Arc [ED] 与 Magnet Arc [ED] 是两个不同参数,工具和结果命名必须明确区分。