☰
外转子电机Maxwell电磁仿真:建模、求解与脚本实战
2026/10/29 5:43:17 网站建设 项目流程

外转子电机这玩意儿,第一次上手的人十有八九会栽在同一个地方:顺手把内转子的模型镜像一下,几何看着挺像那么回事,band 一画,跑出来的反电动势波形却歪歪扭扭,转矩也比手算的少了一截。我当年做第一个外转子风机方案时就是这么干的,折腾了两天才反应过来——气隙位置变了,运动区域的划分逻辑也跟着变了,它还偏偏不是"把内外对调"就能糊弄过去的事。

这篇就把外转子电机的 Maxwell 电磁仿真从头到尾捋一遍:参数怎么定、band 怎么划、网格怎么给、齿槽转矩和反电动势怎么算准,最后再给几段能直接抄去用的脚本,把重复劳动打包解决掉。不管你是刚接触电机仿真的学生,还是已经画过几个内转子、想转到外转子赛道上的工程师,下面的内容都能直接对着操作。风机、多旋翼、云台、电动工具这类外转子应用,基本都能套用。

1. 先搞清楚外转子到底特殊在哪

1.1 结构对调带来的连锁反应,远不止镜像那么简单

内转子是定子包着转子,机壳、铁芯、绕组都在外面,转子藏在里头;外转子反过来,轴和定子固定不动,磁钢贴在杯形转子壳的内壁,转子整个罩在定子外面。看起来只是内外互换,实际上转子的回转半径从几十毫米一下抬到了整机最大外径的位置,同样体积下气隙处的力臂变长了,转矩密度自然高——这也是风扇、多旋翼这类要求"薄、扁、扭矩够"的场合偏爱外转子的根本原因。

但代价跟着就来了。转子惯量大,动态响应慢;磁钢贴在转子壳上,高速时离心力全靠胶水和护套扛着;定子在里面,热最不容易散出去,铜损一高,温升比内转子难处理。这些机械和热的问题,都会反过来影响你的电磁仿真设定——比如你必须把磁钢温度对应的 Br 降额算进去,必须评估高速下的d轴电感变化。

从仿真的角度看,最直接的三个差异:气隙的半径位置变了,band 区域不再是"包住中心转轴",而是要包住外面那一圈转子;磁钢的充磁方向是径向朝内(指向定子),不是朝外;求解域的自然边界从"最外圈"变成了"最内圈的空腔加上最外圈",空腔里盐随便填空气还是挖空,都会影响漏磁结果。

我见过不少人把外转子的模型建完,求解域直接框成一个大圆,结果定子内腔那块空气没处理,漏感算出来偏大,电流角一调就不对了。这种细节不踩一遍坑很难想到。

1.2 风机和多旋翼,两个场景的仿真目标完全不同

同为外转子,风机和多旋翼的诉求差得挺远,直接决定了你在 Maxwell 里该重点看哪些结果。

风机类应用(空气净化器、吊扇、散热风扇)转速低,通常几百到一千多转,追求的是低噪音、低齿槽转矩、平稳起动。这类项目我会把齿槽转矩和反电动势波形正弦度放在第一位,转矩脉动最好压到额定转矩的 2% 以内,磁钢做斜极或者定子做斜槽是常规操作。效率反倒不是最敏感的指标,因为风机负载本身是平方转矩特性,低速段功率不大。

多旋翼和电动工具就完全是另一套逻辑。转速动不动上万,功率密度是命根子,KV 值、峰值扭矩、效率 MAP 才是核心指标。这种场景我更关注高速区的弱磁能力、铁损分布、磁钢涡流损耗,还有负载下的 d/q 轴电感变化。齿槽转矩依然要看,但优先级排在效率后面。

场景不同,模型精度要求也不同。风机这种低速场合,二维仿真加上端部漏磁的经验修正就够用了;多旋翼如果做高速效率评估,二维结果会明显偏乐观,端部绕组和磁钢涡流必须靠三维或者等效电路去补。

下面这张表是我自己项目里常用的对照,可以直接拿去参考:

对比项风机类外转子多旋翼/电动工具外转子
典型转速300~1500 rpm3000~15000 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.3~0.8
Lmag磁钢内径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.05~1.15 之间。假设用 N38SH,Br 取 1.24 T,气隙 0.5 mm,kc 取 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.95~0.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-B

7 到 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 时间步长和转速换算,这步算错全盘皆输

瞬态仿真的时间步长不能拍脑袋。基本逻辑是:一个电周期内至少取 60~120 个点,齿槽转矩分析要更密。

先算电频率:f = n × p / 60,n 是转速(rpm),p 是极对数。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(i+1) 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(i+1), _ "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_Gamma"

SweepsUseSameMesh这个开关值得开。参数只改电流角、不改几何的时候,网格完全不用重划,每次求解能快 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, skip=3): df = pd.read_csv(path, skiprows=skip, header=None) 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", skiprows=3, header=None) 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.1~0.2 mm 的缝隙。如果仿真里把缝隙忽略了,磁钢成了一个整块,齿槽转矩会算偏大,因为实际结构中缝隙起到了微小的磁障作用。

第三个坑是斜极和斜槽的处理。二维模型没法直接表达轴向斜极,要么用分段叠加的方法近似(把斜极等效成几个错开角度的二维模型结果取平均),要么直接上三维。前者精度够用且快,后者准但慢,看项目阶段选。我用分段法比较多,斜极角度分成 3~5 段,每段错开相应角度,结果取平均,和实测能对上 90% 以上。

5.3 脚本报错的典型原因

脚本跑不起来,报错信息往往很含糊,实际排查下来就那么几类。

最常见的是对象名对不上。录制脚本生成的代码里,对象名是硬编码的字符串,你改了模型里的命名,脚本就找不到对象了。解决办法是建模时把命名规则固定下来,比如线圈统一叫Coil_1到Coil_12,磁钢统一叫Magnet_1到Magnet_14,脚本里按规则拼名字,不手写。

第二类是单位问题。Maxwell 的脚本里,带单位的量要写成字符串,比如"3mm",漏了单位就按默认的米处理,3 米的气隙能直接把你送走。养成习惯,所有长度、角度、时间的赋值都带单位后缀。

第三类是循环里的索引越界。VBScript 的数组下标从 0 开始,但很多 Maxwell 的集合对象从 1 开始,混着用特别容易出错。我的做法是脚本里所有涉及槽号、磁钢号的变量,统一在赋值时转成从 1 开始,减少心智负担。

6. 几个我觉得值钱的经验

外转子电机的定子在内侧,热量最难出来,仿真时如果把铜损算得偏乐观,温升评估就会失真。我一般会在后处理里把铜损乘一个 1.1~1.15 的系数,把端部绕组的电阻增量算进去,这个系数是从几台样机的实测反推的,比纯理论算的靠谱。

还有一点,磁钢的牌号和温度降额一定要在模型里分开设。同一个几何,用常温 Br 和 100℃ 的 Br 跑出来的转矩能差 8% 以上。做系列化产品时,我习惯把温度做成一个设计变量,Br_op = Br_20 * (1 - 0.0011*(T - 20)),这样改工况温度只需要改一个数,所有结果自动跟着变。

脚本这东西,一开始写会花时间,但只要是同系列改尺寸的项目,第二台开始就是纯赚。我的建议是别一上来就追求写个万能框架,先把当前项目里最烦的那几步(比如磁钢阵列、绕组配置)写成小脚本,跑通一次就存起来,慢慢攒,半年下来就是一套自己的工具库。真正好用的工具,往往都是这么一点点磨出来的,不是一开始设计出来的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询