外转子电机Maxwell电磁仿真:建模、求解与脚本实战
外转子电机这玩意儿第一次上手的人十有八九会栽在同一个地方顺手把内转子的模型镜像一下几何看着挺像那么回事band 一画跑出来的反电动势波形却歪歪扭扭转矩也比手算的少了一截。我当年做第一个外转子风机方案时就是这么干的折腾了两天才反应过来——气隙位置变了运动区域的划分逻辑也跟着变了它还偏偏不是把内外对调就能糊弄过去的事。这篇就把外转子电机的 Maxwell 电磁仿真从头到尾捋一遍参数怎么定、band 怎么划、网格怎么给、齿槽转矩和反电动势怎么算准最后再给几段能直接抄去用的脚本把重复劳动打包解决掉。不管你是刚接触电机仿真的学生还是已经画过几个内转子、想转到外转子赛道上的工程师下面的内容都能直接对着操作。风机、多旋翼、云台、电动工具这类外转子应用基本都能套用。1. 先搞清楚外转子到底特殊在哪1.1 结构对调带来的连锁反应远不止镜像那么简单内转子是定子包着转子机壳、铁芯、绕组都在外面转子藏在里头外转子反过来轴和定子固定不动磁钢贴在杯形转子壳的内壁转子整个罩在定子外面。看起来只是内外互换实际上转子的回转半径从几十毫米一下抬到了整机最大外径的位置同样体积下气隙处的力臂变长了转矩密度自然高——这也是风扇、多旋翼这类要求薄、扁、扭矩够的场合偏爱外转子的根本原因。但代价跟着就来了。转子惯量大动态响应慢磁钢贴在转子壳上高速时离心力全靠胶水和护套扛着定子在里面热最不容易散出去铜损一高温升比内转子难处理。这些机械和热的问题都会反过来影响你的电磁仿真设定——比如你必须把磁钢温度对应的 Br 降额算进去必须评估高速下的d轴电感变化。从仿真的角度看最直接的三个差异气隙的半径位置变了band 区域不再是包住中心转轴而是要包住外面那一圈转子磁钢的充磁方向是径向朝内指向定子不是朝外求解域的自然边界从最外圈变成了最内圈的空腔加上最外圈空腔里盐随便填空气还是挖空都会影响漏磁结果。我见过不少人把外转子的模型建完求解域直接框成一个大圆结果定子内腔那块空气没处理漏感算出来偏大电流角一调就不对了。这种细节不踩一遍坑很难想到。1.2 风机和多旋翼两个场景的仿真目标完全不同同为外转子风机和多旋翼的诉求差得挺远直接决定了你在 Maxwell 里该重点看哪些结果。风机类应用空气净化器、吊扇、散热风扇转速低通常几百到一千多转追求的是低噪音、低齿槽转矩、平稳起动。这类项目我会把齿槽转矩和反电动势波形正弦度放在第一位转矩脉动最好压到额定转矩的 2% 以内磁钢做斜极或者定子做斜槽是常规操作。效率反倒不是最敏感的指标因为风机负载本身是平方转矩特性低速段功率不大。多旋翼和电动工具就完全是另一套逻辑。转速动不动上万功率密度是命根子KV 值、峰值扭矩、效率 MAP 才是核心指标。这种场景我更关注高速区的弱磁能力、铁损分布、磁钢涡流损耗还有负载下的 d/q 轴电感变化。齿槽转矩依然要看但优先级排在效率后面。场景不同模型精度要求也不同。风机这种低速场合二维仿真加上端部漏磁的经验修正就够用了多旋翼如果做高速效率评估二维结果会明显偏乐观端部绕组和磁钢涡流必须靠三维或者等效电路去补。下面这张表是我自己项目里常用的对照可以直接拿去参考对比项风机类外转子多旋翼/电动工具外转子典型转速3001500 rpm300015000 rpm极槽配合12N14P、18N16P、24N28P12N14P、12N10P、9N8P、24N28P首要仿真目标齿槽转矩、反电动势正弦度效率 MAP、峰值转矩、温升求解类型瞬态 静态校核瞬态 涡流场 铁损网格重点气隙三层、磁钢边角气隙、磁钢、绕组端部是否需要 3D一般不必要高速段建议做1.3 精度和时间成本之间得提前想好怎么权衡Maxwell 二维瞬态跑一个电周期网格中等的话几分钟到十几分钟三维一开半天就没了。所以模型一建完先问自己三个问题这个项目现阶段是在做方案筛选还是做终版校核对精度最敏感的是哪个量有没有简化的余地方案筛选阶段我一般直接上二维静态场扫电流角找最大转矩点再跑二维瞬态看波形。终版校核才会把网格加细、时间步长压小、做参数敏感性分析。至于端部效应二维算出来的转矩通常比实测高 3%8%因为端部漏磁和绕组端部电阻都被忽略了可以在后处理里按经验系数折一下或者干脆建一个含端部绕组的简化三维模型校核一次。还有一种偷懒但有效的做法先把二维模型调到和实测或者样机数据对得上把这套网格密度、时间步长、材料曲线固定成模板后面同系列改尺寸直接套用误差可控。这事听起来不高级但在实际项目里能省掉大把重复调试的时间。2. 建模之前参数体系和几何约定必须先定下来2.1 把关键尺寸做成一套参数而不是一堆散尺寸外转子电机的几何关联性很强改一个定子外径磁钢内径、气隙、转子轭厚全得跟着变。如果建模时全填死尺寸后面做方案对比就是灾难。我的习惯是先列一张参数表把强关联的尺寸用表达式绑起来Maxwell 的变量支持带单位的表达式直接用就行。参数名含义取值示例关联关系Dso定子外径46 mm主尺寸g单边气隙0.5 mm工艺决定一般 0.30.8Lmag磁钢内径Dso 2g自动关联hmag磁钢厚度3 mm按气隙磁密反推hr转子轭厚3 mm按饱和程度定Lstk铁芯轴向长度20 mm按转矩需求定Ns槽数12整数2p极数14偶数bo槽口宽2 mm影响齿槽转矩hs0槽口深0.8 mm工艺磁钢厚度这一步值得多说两句。很多人图省事直接按经验取 3 mm其实可以反推目标气隙磁密 Bg 定了之后用 Bg ≈ Br·hmag/(hmag g·kc) 估算kc 是卡特系数开口槽一般在 1.051.15 之间。假设用 N38SHBr 取 1.24 T气隙 0.5 mmkc 取 1.1想要 Bg 到 1.0 T代进去算下来 hmag 大约 2.75 mm取整到 3 mm 刚好留点余量。这样选出来的磁钢厚度是有依据的后面仿真出来对不上也知道该往哪个方向调。注意Br 一定要按工作温度降额。钕铁硼每升高 1℃Br 大约掉 0.11%0.12%80℃ 工况下 N38SH 的 Br 只剩 1.16 T 左右。用常温值去仿真高温工况转矩会系统性偏高。2.2 坐标系、气隙分层和 band 的画法外转子最容易出错的地方就在这。Maxwell 的旋转运动靠 band 定义band 内部的东西随它转band 外部保持静止。内转子的习惯是band 包住转子和转轴外转子恰恰相反band 要包住外面那一圈转子定子必须完整地待在 band 外面。具体怎么画先按气隙中线画一个圆作为 band 的内边界再沿转子轭外缘往外一点画一个圆作为 band 的外边界。中间这个环形区域就是 band里面包含外层气隙、磁钢、转子轭。定子铁芯和绕组全部在 band 内边界以里一点都不能越界否则求解时会报运动区域包含静止物体。气隙最好分三层定子外圆到 band 内边界是一层band 内边界到磁钢内圆是第二层剩下的一点余量算第三层。分层的目的不是好看是为了在 band 交界面上生成足够密的网格滑移网格每步都要重划交界面网格质量差转矩波形上就会冒毛刺。定子内腔那一块也别偷懒。外转子定子中间是个空腔如果直接挖掉不填材料Maxwell 会当成真空处理磁路是对的但如果你的模型里还有转轴、轴承座就得老老实实建出来哪怕用简化圆柱代替。我见过有人把内腔留成默认的无材料结果求解域边界贴着定子内圆漏磁路径被截断反电动势算低了 5%。2.3 材料曲线和叠压系数别用默认值糊弄硅钢片这块Maxwell 材料库里自带一些牌号但损耗曲线B-P 曲线经常是缺失的只有 B-H 曲线。做效率评估时铁损算不准整个 MAP 就废了。我的做法是找厂商的datasheet把不同频率、不同磁密下的铁损数据整理成表按 Maxwell 要求的格式导入频率点至少要覆盖基频到 3 倍频。低频风机项目用 50 Hz、100 Hz、200 Hz、400 Hz 四组就够高速多旋翼要覆盖到 1000 Hz 以上。叠压系数按工艺填0.950.97 是常见值涂漆厚的取 0.94。这个系数直接影响铁芯的有效长度填错了转矩会有 2%3% 的系统偏差而且很难从结果里看出来。永磁体的退磁曲线也要设。N 系列的 knee point 在高温下会明显上移如果不设退磁曲线Maxwell 不会报退磁警告峰值电流一冲局部磁钢已经不可逆退磁了仿真却显示一切正常。这种坑在做过载能力评估时特别致命。3. 核心求解设置一项一项抠3.1 求解类型怎么选静态和瞬态各管什么Maxwell 二维能选的求解器有几种外转子电机常用的就三个Magnetostatic静态磁场、Transient瞬态、Eddy Current涡流场。静态场最快用来做方案筛选和磁路校核。给定一个电流矢量几秒钟就能出磁密云图和转矩值扫电流角找最大转矩点也用它。缺点是它不认转速铁损和涡流损耗算不了磁钢里的涡流效应也体现不出来。瞬态是主力空载反电动势、齿槽转矩、负载转矩脉动、电流波形全靠它。设置里要填总时长、时间步长、转子初始位置还要指定每个时间步保存哪些场结果。保存场数据是为了后处理看磁密分布但全存下来文件能到几个 G我一般只存几个关键时间点。涡流场主要用于磁钢涡流损耗评估尤其是分块磁钢或者有护套的结构。做高速多旋翼项目时这个必须跑一遍磁钢涡流损耗在万转以上能占到总损耗的 10% 以上忽略它效率曲线会明显偏高。3.2 绕组怎么接激励怎么加外转子电机绝大多数用分数槽集中绕组12 槽 14 极是最常见的组合。这个配合的绕组系数大约 0.933不算特别高但胜在端部短、工艺简单、齿槽转矩可以做小。分相这块必须和实际绕线图一致一旦相位排错反电动势三相不对称转矩脉动直接起飞。以 12 槽 14 极双层集中绕组为例单元电机是 6 槽 7 极按 A、-C、B、-A、C、-B 的顺序重复两次也就是齿号123456相带A-CB-AC-B7 到 12 号齿重复同样的顺序。这个排布对应的绕组系数算下来是 0.933你可以自己用分布系数和节距系数验一遍分布系数 kd sin(q·α/2)/(q·sin(α/2))集中绕组 q 取 1节距系数 kp sin(π/2 · y/τ)y/τ 取 6/7代进去乘起来就是 0.933 左右。激励的加法有两种。简单点的是给每个线圈加电流源三相电流按 i I·sin(ωt θ) 给θ 是电流超前角扫这个角就能找到最大转矩点。麻烦但更准的是用外电路把绕组电阻、端部漏感、驱动器都接进去适合做实际工况模拟。方案阶段用电流源足够了终版校核再上外电路。提示电流源的初始相位一定要和转子初始位置对齐。我习惯把转子 d 轴放在 0 度然后 A 相电流从 0 开始这样电流角直接就是 dq 轴系下的角度后处理不用再折算省事也不容易错。3.3 边界条件和对称性能省一半算力外圈边界设 Vector Potential 0 就够了让磁力线平行于边界符合远场假设。如果模型外面还留了空气包边界画在空气包外缘如果直接用求解域边界那就贴着转子轭外圆稍微留点余量。周期对称能不能用得看极槽配合的最大公约数。12 槽 14 极GCD(12, 14) 2理论上可以按半模型算但实际操作中半模型的边界条件设置比较绕收益不大我一般还是跑全模型。9 槽 8 极、12 槽 10 极这种 GCD 比较大的简化收益明显可以用 Odd奇对称或者 Even偶对称主从边界算力直接省一半。用主从边界有个硬性要求从边界的几何必须是主边界旋转一定角度后的精确复制网格节点也要对应。如果模型是参数化的、角度经常改建议先跑全模型验证等尺寸定型了再改简化模型不然光是调边界对应关系就够喝一壶的。3.4 时间步长和转速换算这步算错全盘皆输瞬态仿真的时间步长不能拍脑袋。基本逻辑是一个电周期内至少取 60120 个点齿槽转矩分析要更密。先算电频率f n × p / 60n 是转速rpmp 是极对数。12 槽 14 极p 7转速 1200 rpm 时f 1200 × 7 / 60 140 Hz电周期 T 1/140 ≈ 7.14 ms。取每周期 100 步时间步长就是 71.4 μs。齿槽转矩的周期完全是另一回事。它的基波周期数等于槽数和极数的最小公倍数LCM(12, 14) 84也就是转子每转一圈齿槽转矩波动 84 次。1200 rpm 下每转 50 ms一个齿槽周期只有 50/84 ≈ 0.595 ms。要在这个周期里取 20 个点步长得压到 30 μs 以下。所以我的做法是分开跑算反电动势和负载性能用 70 μs 步长跑两个电周期算齿槽转矩单独起一个空载工况步长压到 25 μs 甚至更小跑满一个齿槽周期就够。两个模型共用几何和网格只是求解设置不同管理起来也方便。4. 脚本实战把重复劳动交给代码4.1 脚本接口怎么选先录后改是最靠谱的路子Maxwell 的脚本接口有好几种内置的 VBScript 录制功能、IronPython、还有基于 Python 的二次开发接口。选哪个我的建议是先用录制。在 Maxwell 界面里把要做的操作做一遍工具会自动生成 VBScript你打开一看每个几何创建、每个设置项对应的字段名清清楚楚。想批量做就在生成代码外面套个 For 循环把角度、尺寸换成变量。这套路子最稳因为所有字段名都是从软件本身出来的不存在版本差异导致的报错。IronPython 的优势是语法现代、能调用标准库、跟外部数据处理脚本能打通。做参数扫描、批量导出、结果统计这类工作用 Python 写循环舒服得多。我现在的习惯是几何建模、求解设置用录制出来的 VBScript 改数据后处理、批量分析用 Python 单独写两边通过导出的 CSV 文件对接。各干各擅长的事不硬凑。4.2 脚本一磁钢阵列一键生成外转子磁钢是一圈均布的手动画 14 块能画到怀疑人生尤其是做斜极的时候。这段脚本就是用来生成一圈磁钢的改极数和角度直接跑。 磁钢环形阵列生成 Dim oEditor Set oEditor oDesign.SetActiveEditor(3D Modeler) Dim numPoles, dTheta numPoles 14 dTheta 360.0 / numPoles 先创建第一块磁钢名字固定为 Magnet_1 尺寸参数从设计变量读取保证参数化联动 oEditor.CreateRectangle Array(NAME:RectangleParameters, _ IsCovered:, true, _ XStart:, MagnetInnerR*cos(-MagnetSpan/2), _ YStart:, MagnetInnerR*sin(-MagnetSpan/2), _ Width:, MagnetThk, _ Height:, 2*MagnetInnerR*sin(MagnetSpan/2)), _ Array(NAME:Attributes, _ Name:, Magnet_1, _ Flags:, , _ Color:, (255 128 0), _ Transparency:, 0, _ PartCoordinateSystem:, Global, _ MaterialName:, N38SH, _ SolveInside:, true) 绕 Z 轴阵列一次性复制出剩余磁钢 oEditor.DuplicateAroundAxis Array(NAME:Selections, _ Selections:, Magnet_1, _ NewPartsModelFlag:, Model), _ Array(NAME:DuplicateAroundAxisParameters, _ CreateNewObjects:, true, _ WhichAxis:, Z, _ AngleStr:, CStr(dTheta) deg, _ NumClones:, CStr(numPoles)), _ Array(NAME:Options, DuplicateAssignments:, false)跑完之后磁钢是一圈了但充磁方向还是同一个方向得逐块改。外转子的磁钢是径向充磁方向指向定子朝内相邻两块极性相反。做法是给每块磁钢设置局部柱坐标系磁化方向沿 R 方向偶数块取负号。这一步用脚本也可以批量做思路是遍历Magnet_1到Magnet_14按下标奇偶设置MagnetizationDirection比手点快得多也不会漏。斜极的话更省事把阵列角度从整数分度改成带偏移的或者直接对每块磁钢加一个旋转平移量脚本里多写两行循环就行。4.3 脚本二绕组和激励批量配置绕组的部分如果每个线圈都手动加激励12 个线圈就是 12 次重复劳动一旦相位改了还得全部重来。下面这段思路是用数组把相带配置管起来改配置就是改数组。 三相集中绕组批量赋激励 Dim phaseArr(11) A,-C,B,-A,C,-B 重复两次 phaseArr(0)A : phaseArr(1)-C : phaseArr(2)B phaseArr(3)-A : phaseArr(4)C : phaseArr(5)-B phaseArr(6)A : phaseArr(7)-C : phaseArr(8)B phaseArr(9)-A : phaseArr(10)C : phaseArr(11)-B Dim i, coilName, expr For i 0 To 11 coilName Coil_ CStr(i1) Select Case phaseArr(i) Case A expr Ia Case -A expr -Ia Case B expr Ib Case -B expr -Ib Case C expr Ic Case -C expr -Ic End Select 添加电流激励注意电流方向由线圈终端决定 oModule.AssignCurrent Array(NAME:CurrentExc_ CStr(i1), _ Objects:, Array(coilName), _ Current:, expr, _ IsPositive:, true) Next三相电流本身用设计变量描述Ia Imax*sin(2*pi*freq*time Gamma)Ib、Ic依次滞后 120 度。这样做的好处是电流幅值Imax和电流角Gamma都能直接进参数扫描不用改脚本在 Optimetrics 里扫就行。有个细节容易翻车线圈的正方向由几何创建时的法向决定同样的电流表达式线圈绕向反了就是反向激励。我一般会先跑一个静态场看三相磁链的相位关系对不对波形差了 180 度就说明绕向要改。4.4 脚本三参数化扫描和批量求解方案对比阶段通常要扫好几组参数磁钢厚度、气隙、电流角、转速。手动改一个跑一个一天下来跑不了几组。用 Optimetrics 做扫描脚本里把设置写死挂上去就让它自己跑。 参数扫描设置扫电流角 Gamma-30 到 30 度 Set oModule oDesign.GetModule(Optimetrics) oModule.InsertSetup OptimetricSetup, Array( _ NAME:ParamScan_Gamma, _ IsEnabled:, true, _ MaxIterations:, 1, _ SetupType:, LinearStep, _ ProdOptiSetupDataV2:, Array( _ NAME:ProdOptiSetupDataV2, _ SaveFields:, false, _ CopyMesh:, true, _ SolveWithCopiedMeshOnly:, false), _ StartingPoint:, Array(Gamma:, -30deg), _ LinearStep:, Array(Gamma:, 5deg), _ StopPoint:, Array(Gamma:, 30deg), _ SweepsUseSameMesh:, true) oModule.SolveSetup ParamScan_GammaSweepsUseSameMesh这个开关值得开。参数只改电流角、不改几何的时候网格完全不用重划每次求解能快 30% 以上。但如果是扫几何参数比如磁钢厚度网格必须重划这个开关就得关掉否则会因为网格与几何不匹配报错。扫完之后结果是一堆曲线手动点开看效率太低。下一段脚本就是把所有工况的结果批量导成 CSV丢给 Python 处理。4.5 脚本四结果批量导出与后处理反电动势、转矩、磁链这些量Maxwell 的 Report 功能能看但要对比十几个方案还是导出来算方便。 批量导出转矩和反电动势 Set oModule oDesign.GetModule(ReportSetup) oModule.CreateReport Torque_vs_Time, Transient, Rectangular Plot, _ Setup1 : Transient, Array(Domain:, Time), _ Array(Time:, Array(All)), _ Array(X Component:, Time, Y Component:, Array(Moving1.Torque)), _ Array() oModule.ExportToFile Torque_vs_Time, D:/sim_out/torque_case01.csv, false oModule.CreateReport BEMF_3Phase, Transient, Rectangular Plot, _ Setup1 : Transient, Array(Domain:, Time), _ Array(Time:, Array(All)), _ Array(X Component:, Time, _ Y Component:, Array(FluxLinkage(PhaseA), FluxLinkage(PhaseB), FluxLinkage(PhaseC))), _ Array() oModule.ExportToFile BEMF_3Phase, D:/sim_out/bemf_case01.csv, false导出来的 CSV 前几行是表头直接读会报错Python 里跳几行就完事。下面这段是我常用的后处理模板算齿槽转矩峰峰值、反电动势有效值、FFT 看谐波含量基本覆盖日常需求。import numpy as np import pandas as pd def load_maxwell_csv(path, skip3): df pd.read_csv(path, skiprowsskip, headerNone) df.columns [time, value] if df.shape[1] 2 else df.columns return df # 齿槽转矩峰峰值 cog load_maxwell_csv(D:/sim_out/torque_case01.csv) pp cog[value].max() - cog[value].min() print(f齿槽转矩峰峰值: {pp*1000:.2f} mN·m) # 反电动势 FFT看 5 次 7 次谐波占比 df pd.read_csv(D:/sim_out/bemf_case01.csv, skiprows3, headerNone) t df.iloc[:, 0].values e df.iloc[:, 1].values dt t[1] - t[0] E np.fft.rfft(e) freq np.fft.rfftfreq(len(e), dt) fund_idx np.argmax(np.abs(E[1:])) 1 fund np.abs(E[fund_idx]) for order in (3, 5, 7, 11): idx fund_idx * order if idx len(E): print(f{order} 次谐波占比: {np.abs(E[idx])/fund*100:.2f}%)这套流程跑顺了之后一个方案从建模到出结果能压缩到半小时以内剩下的时间可以真正花在方案本身的思考上而不是耗在点鼠标上。5. 常见问题排查这些坑我基本都踩过5.1 结果明显不对时按这个顺序查仿真结果和手算差很多别急着改网格先按下面的顺序过一遍八成能定位到问题。现象最可能的原因排查方法反电动势偏低 5% 以上求解域边界太近漏磁路径被截断把求解域外扩到转子外径 1.5 倍以上重算转矩比手算低一截磁钢充磁方向设错或者磁钢材料 Br 用了默认值看磁密云图磁钢内部磁密方向是否都指向定子三相波形不对称相带排布错或者某个线圈绕向反了看三相磁链相位差是否为精确的 120 度齿槽转矩大得离谱网格太粗气隙只有一两层气隙加到三层以上步长压到一个齿槽周期 20 点转矩波形有毛刺时间步长太大或 band 交界面网格质量差步长减半看毛刺是否消失消失说明是步长问题求解不收敛模型有重叠几何或材料属性缺失用 Model Analysis 检查几何有效性这个表里的第一条我印象最深。有个风机方案反电动势怎么算都比实测低 6%网格加细、步长压小、材料重新核对全都没用。最后发现是求解域边界画在了转子轭外圆外面 2 mm 处磁力线没地方走被迫从边界垂直穿出去漏磁被严重低估。往外扩到 20 mm 之后结果立刻对上了。5.2 齿槽转矩的几个特殊坑齿槽转矩是外转子项目里最磨人的指标因为它对细节极其敏感稍微一个设置不对算出来的值能差好几倍。第一个坑是转速。齿槽转矩本质上和转速无关但仿真里如果转速设得不对一个齿槽周期内的采样点数不够波形就被抹平了峰峰值偏小。正确做法是固定转速比如 1 rpm 这种极低转速跑空载保证采样密度出来的才是真实值。第二个坑是磁钢的分块。为了降涡流损耗磁钢经常做成周向分块块与块之间留 0.10.2 mm 的缝隙。如果仿真里把缝隙忽略了磁钢成了一个整块齿槽转矩会算偏大因为实际结构中缝隙起到了微小的磁障作用。第三个坑是斜极和斜槽的处理。二维模型没法直接表达轴向斜极要么用分段叠加的方法近似把斜极等效成几个错开角度的二维模型结果取平均要么直接上三维。前者精度够用且快后者准但慢看项目阶段选。我用分段法比较多斜极角度分成 35 段每段错开相应角度结果取平均和实测能对上 90% 以上。5.3 脚本报错的典型原因脚本跑不起来报错信息往往很含糊实际排查下来就那么几类。最常见的是对象名对不上。录制脚本生成的代码里对象名是硬编码的字符串你改了模型里的命名脚本就找不到对象了。解决办法是建模时把命名规则固定下来比如线圈统一叫Coil_1到Coil_12磁钢统一叫Magnet_1到Magnet_14脚本里按规则拼名字不手写。第二类是单位问题。Maxwell 的脚本里带单位的量要写成字符串比如3mm漏了单位就按默认的米处理3 米的气隙能直接把你送走。养成习惯所有长度、角度、时间的赋值都带单位后缀。第三类是循环里的索引越界。VBScript 的数组下标从 0 开始但很多 Maxwell 的集合对象从 1 开始混着用特别容易出错。我的做法是脚本里所有涉及槽号、磁钢号的变量统一在赋值时转成从 1 开始减少心智负担。6. 几个我觉得值钱的经验外转子电机的定子在内侧热量最难出来仿真时如果把铜损算得偏乐观温升评估就会失真。我一般会在后处理里把铜损乘一个 1.11.15 的系数把端部绕组的电阻增量算进去这个系数是从几台样机的实测反推的比纯理论算的靠谱。还有一点磁钢的牌号和温度降额一定要在模型里分开设。同一个几何用常温 Br 和 100℃ 的 Br 跑出来的转矩能差 8% 以上。做系列化产品时我习惯把温度做成一个设计变量Br_op Br_20 * (1 - 0.0011*(T - 20))这样改工况温度只需要改一个数所有结果自动跟着变。脚本这东西一开始写会花时间但只要是同系列改尺寸的项目第二台开始就是纯赚。我的建议是别一上来就追求写个万能框架先把当前项目里最烦的那几步比如磁钢阵列、绕组配置写成小脚本跑通一次就存起来慢慢攒半年下来就是一套自己的工具库。真正好用的工具往往都是这么一点点磨出来的不是一开始设计出来的。