> 本文为电机视窗原创「Maxwell 参数化建模」系列 Spoke 篇。脚本与案例工程均来自作者实际项目:02_spoke_Shape_IPM_Rotor.py,案例为 36 槽 30 极 Maxwell 2D 瞬态工程;参数默认值取自脚本 defaultPrimitiveParams(H315 / 30 极图纸档),仿真读数取自案例工程结果文件。
上一篇基础篇里,我们用 RMxprt 自带的 SlotCore / LapCoil / PMCore 三个图元,把 One 型(一字型)IPM 转子的参数化骨架搭了起来。有读者在后台问:一字型会了,切向式(Spoke)呢?磁钢像辐条一样竖着插 进去那种,槽是开口的、极间还有磁障,PMCore 的 PoleType 里没有这个选项,怎么办?这一篇配 16 张插图(10 张由 DXF 实测几何重绘、4 张联动与模式逻辑图、1 张案例工程截图、1 张文件目录实况),另附一段操作演示视频,按「拓扑—环境—建模—仿真—避坑」五条线,记录一台 30 极 Spoke 转子是怎么从圆环做到能上仿真台的。
> 先说清一件事:UDP 不是"高级技巧",它是 Maxwell 官方支持的参数化通道。一段 Python 脚本告诉 Maxwell"这个零件怎么画",Maxwell 启动时把它加载进 Draw → User Defined Primitive 菜单。它和普通 Python 程序的区别只有一条:它由 Maxwell 调用,不能双击运行。理解这一条,后面 12 个建模步骤的内容就都是细节了。
● ● ●
切向式(Spoke)内置式永磁转子,磁钢沿切向插入、充磁方向沿圆周交替,磁通在极间汇聚,气隙磁密可以做到比径向式更高——这是它在中大型驱动电机里常见的原因。但也是这个结构,让手工建模特别痛苦。
先看一个磁极长什么样。下图取自本脚本输出的 DXF 图纸实测几何(H315 机座 / 30 极图纸档,外径 397.2 mm),不是示意简图:
fig01
(图注:单个磁极的真实几何——切向磁钢独立成件,两侧被 q 轴磁障夹住,外侧是开口槽的颈口与挡肩凸舌)
手工画一个 30 极 Spoke 转子:槽腔轮廓、磁障弧线、30 次阵列、8 个减重孔、30 个通风孔,再加上开口槽的布尔切除——画一遍半天,改一遍极数再来半天。而参数化脚本把这一切压缩成:改 Rotor_Poles=8,回车,模型自己重排。这就是本篇要做的事:一个脚本,38 个参数,四类输出,从圆环做到能上仿真台的整圈转子。
● ● ●
上表说"准备什么",下面这张图说"实际长什么样"——脚本作者本机 01-脚本文件 目录的原始截图:
fig02
(图注:本机 01-脚本文件 目录实况——两个脚本版本、一份输出图纸、一份使用教程,四个文件四种用途)
这四个文件最容易搞混,先分清:两个 .py 一个是"通用可缩放版",一个是"按实际 DXF 拓扑定制版",名字还都带 scalable / spoke,不看清就下错文件。
顺带交代两个数字,免得后面对不上:这两个成品脚本的默认值都停在真机档(Rotor_OD 397.2 mm、轴孔 160 mm、30 极),装完第一次调用出来的就是真机尺寸。而教程第 1 课是从一台 24 mm 的小样机开始、一课一课往上加参数的——24 是起点,397.2 是终点,看到两个数别以为是笔误。
把脚本复 制到以下任一目录(没有就新建):C:\Program Files\AnsysEM\v24x\Win64\syslib\UserDefinedPrimitives\ 或 C:\Users\<用户名>\Documents\Ansoft\PersonalLib\UserDefinedPrimitives\。注意 2024 R2 之后必须放到 PersonalLib 才会在面板里列出;同一目录不要留同名旧文件和 .pyc 编译缓存。
首次安装必做一步刷新:Draw → User Defined Primitive → Update Menu。菜单里出现 02_spoke_Shape_IPM_Rotor即安装完成。脚本放进去之后已经开着的 AEDT 不会自动发现它——完全退出整个程序再重开,这是 2024 R1 上的实测行为。
这里把主线浓缩成 12 步,每步对应一课的核心动作和一张图;其中第 2、3 课(改尺寸看变化、读懂第一份脚本)是热身,内容并进了 Step 1,所以 Step 编号从第 1 课直接跳到第 4 课。想看每一课的完整代码和排查表,翻教程全套。
新建脚本文件,首行保留 # -*- coding: utf-8 -*-。defaultPrimitiveParams 里先只放三个数:Rotor_OD=24、Rotor_ID=10、Rotor_Len=50。放进 UDP 目录,重启 AEDT,Draw → User Defined Primitive 里双击它,点确定——一个空心圆盘就出来了。
fig04
(图注:铁芯本体与槽腔——30 极整圈,裙部开口槽由 Duct_* 系列参数控制)
给脚本新增参数的标准做法就出现在这一课:defaultPrimitiveParams 加默认值、primitiveParamDefs 加定义、PARAM_NAMES 加名字,三处顺序必须一致。槽腔轮廓用点列描述,挖掉它,圆环上就多了一个矩形槽。
fig05
(图注:整圈槽腔单独取出——开口槽颈口通到外圆,是 Spoke 装配工艺的需要)
Spoke 的磁钢是切向竖插的矩形块,带圆角。这里要分清两类对象:槽腔是"挖掉的结构",磁钢是"单独输出的零件"——磁钢不和铁芯做布尔,它独立存在,后面单独赋永磁材料。磁钢长度不给独立参数,让它跟随槽长自动变化,从根上避免磁钢与槽长不匹配。
fig06
(图注:30 块切向磁钢独立取出——不与铁芯做布尔,后续单独赋永磁材料与充磁方向)
q 轴磁障是 Spoke 的灵魂,也是全脚本最"数学"的一段:Bar_Bridge(槽与磁障间铁桥厚度)是目标值,脚本要反解磁障形状去命中它。反解用二分试算:算得出就建,算不出就如实报"不可达"并给出可达范围,绝不静默改值。这一课教会你的不是画磁障,是"尺寸算不出来时怎么办"。
fig07
(图注:整圈 q 轴磁障——每极两个,相邻两极共用;桥厚 Bar_Bridge 由脚本反解命中)
按 Rotor_Poles 阵列。这里有个新手必踩的点:磁障是相邻两极共用的,整圈只能建一次再阵列,不能每极建一个然后拼——拼缝处会重叠或漏缝。哪些零件跟极数走、哪些是共用件,这一课列了清单。
fig08
(图注:30 极整圈阵列结果与主尺寸标注(H315 / 30 极图纸档)——极数一改,槽、磁障、孔全部重排)
大直径转子常见一圈圆端弧形减重孔。它的数量(Inner_Slot_Count)独立于极数,摆位靠 Inner_Slot_Rc / _R / _Span / _Phase 四个参数。判据也新:孔与孔会不会重叠、会不会碰轴孔、会不会碰槽底或磁障。
fig09
(图注:通风孔与内侧减重孔——两者数量都与极数解耦,各自独立取参)
极间通风孔(工艺孔)用 Vent_Gap / Vent_R 控制。这一课的关键词是"余量":外缘到外径的最小余量(Vent_Outer_Clear)、内缘到磁障的净距。同一个方位上的两个特征(通风孔和磁障顶)要一里一外,判据写进预检。
fig10
(图注:单极完整几何——通风孔位于极间,外缘余量与内缘净距双重判据)
Out_Core 决定这次输出哪一类对象:0=转子铁芯、1=磁钢、2=槽腔+磁障腔体、3=基体减铁芯;Out_Full 决定范围:0=单极扇区、1=整圈 360°。两者独立组合。腔体模式(Out_Core=2)导出去可以做铸铝、灌封的二次建模,这个用法很多人不知道。
fig11
(图注:四种输出模式的真实几何对照——铁芯 / 磁钢 / 腔体 / 基体减铁芯,一个脚本四种用法)
两种做法:槽腔圆角在二维轮廓里倒(Duct_Corner_R / Duct_Bot_R),磁钢圆角在三维竖直棱上倒(Mag_Corner_R)。圆角放不下时会报"圆角超出可用空间"——所以教程建议先用全 0 圆角跑通主尺寸,再逐个加。
fig12
(图注:圆角两种做法对照——左:槽腔在二维轮廓内倒(Duct_Corner_R / Duct_Bot_R);右:磁钢在三维竖直棱倒(Mag_Corner_R))
Duct_Open=1 把槽顶打开:颈口(Duct_Neck_W)、挡肩凸舌(Duct_Tongue_H / _W)、布尔切除外伸量(Duct_Overhang)。开口槽是 Spoke 工艺装配的需要,但也带来两条新判据:颈口半宽与槽宽要匹配、外桥太薄时肩部放不下。
fig13
(图注:开口槽与闭口槽对照——Duct_Open=1 时颈口通到外圆、靠挡肩凸舌留住磁钢;置 0 则颈口与肩部判据不再生效)
改一个参数之后要复核哪些量?这一课给了一张清单:槽顶面 = Rotor_OD/2 − Duct_Bridge;凸舌外端 = 槽顶面 − Duct_Height;磁钢可用深度上限 Mag_W < Duct_Height − Mag_Gap。改 Duct_Bridge,槽顶面动、凸舌/磁钢/槽底整体平移;改 Duct_Height,磁钢、凸舌、槽底一起平移。把这些联动关系写死在脚本里,才是"真参数化"和"假参数化"的分界线。
fig14
(图注:两个主控链的真值推演——改 Duct_Bridge 触发整段平移;Bar_Bridge 作为目标值由脚本反解,不可达时如实报错)
十二步走完,得到的是这样一台转子:槽 + 磁钢 + 磁障 + 内侧减重孔 + 通风孔,可选圆角、可选开口槽、可选输出模式。
下图是脚本输出的 DXF 图纸实测几何按部件分层拆开的样子——六个格子对应六步叠加,最后一格是合体后的完整磁极。这个视角比整圈总览更适合检查配合:哪块跟哪块贴着、间隙留在哪儿,一眼就看出来。
fig15
(图注:单磁极的六步叠加——①铁芯本体 ②开口槽腔 ③切向磁钢 ④q 轴磁障 ⑤通风孔 ⑥合体)
fig06
(图注:最终整圈 Spoke 转子总览(DXF 实测几何,30 极 / 外径 397.2 mm)——槽腔、磁钢、磁障、减重孔、通风孔一次生成)
● ● ●
模型建完不算完,得上仿真验证参数化是否真的"改得动、算得对"。案例工程 Project1.aedt(Maxwell 2D,Transient 瞬态场)配置如下。
注意 Rotor_OD 那一行:它不是手填的 398.2,而是设计变量里写的公式 S_DiaGap-2*Gap。改气隙,转子外径自己跟着变——这就是参数联动的实际样子。
绕组按 PhaseA / PhaseB / PhaseC 三相设置,求解 4 ms、转速 1000 rpm。三相电流波形从结果文件里读出来是规整的三相对称波形(峰值约 7 A 量级),说明绕组方向、激励相位、Band 与运动设置都对上了——参数化模型第一次上仿真台,最怕的就是阵列错了一位导致波形不对称,这里没有。
fig17
(图注:案例工程截图——36 槽定子 + 30 极 Spoke 转子 Maxwell 2D 模型,左下为设计变量面板)
三件事。第一,38 个参数在真实工程里全部以设计变量形式存在,改任何一个,几何自动重构;第二,定子用 RMxprt SlotCore、转子用自写 Spoke UDP,两种 UDP 可以在同一个工程里共存并做布尔;第三,瞬态求解收敛、三相对称,模型没有隐藏的自我相交或碎块——几何预检在建模阶段就把这些问题挡在了外面。
● ● ●
基础篇讲过五个通用坑(阵列写死、布尔后删辅助体、角度写死、不备份、Separate 不备份)。Spoke 篇补五个这个拓扑专属的。
它是目标值,脚本反解磁障形状去命中。当前极数/槽宽下做不到时,脚本报"不可达"并给可达范围。三种改法:把 Bar_Bridge 改进可达范围;调 Bar_Apex_Gap / Bar_Depth / Bar_Angle 改磁障形状;改 Rotor_Poles / Mag_Thk / Mag_Clear 改极间宽度。看到报错先别慌,报错信息里就写着答案。
别加。磁钢长度跟随槽长自动变化是本脚本的设计决定,加了独立参数就会出现"磁钢比槽长 0.2mm"这种装配不上的模型。需要微调改 Mag_W(径向深度)和 Mag_Gap(底部间隙)。
Duct_Open=1 时颈口半宽(Duct_Neck_W)和外桥厚度(Duct_Bridge)是联动的:外桥太薄,挡肩凸舌放不下。报"肩部放不下"时,减小 Duct_Neck_W 或增大 Duct_Bridge,二选一。
圆角、桥厚这类参数,下界取 0 会在优化迭代中产生尖角/零厚度模型,直接报错。下界取一个很小的正数(比如 0.01),优化就稳了。
Out_Core=1(只出磁钢)时改槽腔参数当然看不到变化;Out_*、*_En、*_Open 这类开关参数本来就不改尺寸。排查顺序:先看输出模式,再看改的是不是开关,最后才怀疑脚本。
● ● ●
把这一篇压缩成四句话:
- Spoke 转子的参数化没有捷径,但有一条正路:把几何关系写进 UDP 脚本,让 Maxwell 自己画。
- 38 个参数分七组(本体/磁钢/槽腔凸舌/磁障/通风孔/输出控制/减重孔),三个主控关系(槽顶面、凸舌外端、磁钢深度上限)决定了改一个参数时谁跟着动。
- 几何预检是这套脚本的护栏:冲突时拒绝建模、点名参数、给修改方向,不留半成品。
- 案例工程证明:参数化模型可以直接上瞬态仿真,三相对称波形就是验收单。
下一篇进深水区:用这套 Spoke 模型做参数扫描与优化——Bar_Bridge 从 1.5 扫到 3.0,齿槽转矩和转矩脉动怎么变;Mag_Thk 加 1mm,气隙磁密和磁钢工作点怎么移。Optimetrics 怎么接、扫描结果怎么读,手把手过一遍。
> 给读者的一句话:参数化建模买的不是"画图快",是"改得起"。手工模型改一次极数要半天,脚本模型改一次极数要三秒——差的不是手速,是你敢不敢在方案阶段多试二十个版本。
关键词:Maxwell 参数化、Spoke 转子、切向式磁钢、UDP、Bar_Bridge、开口槽、几何预检