做电机设计的人都有过这种经历:电磁方案改了又改,Maxwell模型在角落里转圈圈,一盘参数好不容易算完,结果转矩纹波倒是低了,效率又掉下去了,最后只能在Excel里手动来回试,一个项目拖上两三个星期。别问我怎么知道的,我也曾在这种循环里泡了很久。
我后来真正把这个问题解决掉,靠的是把 Ansys Maxwell 和 OptiSlang 串起来做多目标优化仿真。说白了就是让仿真软件负责把电磁场算准,让优化软件负责自动试参数、建代理模型、找权衡最优解。这个组合在工程圈里不是什么新东西,但很多人要么停留在“听说过”,要么卡在不知道怎么把变量、目标、约束组织成一个能收敛、能落地、能复现的优化流程上。这篇文章就把我实际跑通的思路、参数设置、避坑方法都摊开讲,适合正在做电机本体设计、准备把性能指标往前推一档的工程师参考。
1. 为什么是 Maxwell 加 OptiSlang,而不是继续手动试算
1.1 传统单点试算的根本矛盾
Maxwell 本身是电磁场有限元仿真工具,它能算的精度非常高,转矩、损耗、电感、反电动势、磁密分布这些关键指标都能看得很细。但它的本质是“给定一个方案,算出一个结果”,问的是“这个设计表现怎么样”。而我们在实际做电机设计时,真实的问题往往不是“这个方案行不行”,而是“在这么多几何尺寸和材料参数里,如何找到一组组合,让转矩够大、纹波够小、损耗够低、温升还能通过”。
这俩问题之间差着一整条逻辑链。传统做法是人肉试算:先根据经验给一组初始尺寸,算一遍,看哪个指标差了,手动调一个参数,再算一遍,再调……这种方式的痛点不只是慢。更麻烦的是,电机的各个指标之间是强耦合的:加大气隙能降低齿槽转矩,但可能让转矩密度下滑;磁钢厚度增加能提升反电动势,但成本上去、漏磁也可能变大。你用手动方式去调,往往刚把 A 指标救回来,B 指标又崩了,很难做到全局判断。
1.2 OptiSlang 在流程里到底扮演什么角色
OptiSlang 是 Ansys 体系里的优化与稳健性分析工具。它的核心能力不是自己算电磁场,而是把 Maxwell 这种仿真求解器当成“黑盒子”一样反复调用,然后替你做三件非常重要的事情:设计实验、代理模型建模、多目标优化搜索。
这就相当于你把“喂参数、跑仿真、看结果、判断下一步怎么改”这摊事交给了一套自动化流程。OptiSlang 会先在设计空间里用少量样本点摸清大概规律,再基于这些样本训练出代理模型,最后在代理模型上跑种群类优化算法,找出权衡解集。对于工程师来说,最大的价值不是省掉试算的苦力活,而是它能把“改变尺寸–性能变化”之间的因果关系比较系统地暴露出来:到底哪个几何参数对齿槽转矩影响最大,哪个参数对效率几乎没有贡献,变量之间有没有交互作用,这些事情靠手感是没法量化的。
1.3 适用范围与流程边界
这套 Maxwel+OptiSlang 的组合,我做下来感觉在永磁同步电机、无刷直流电机、感应电机、开关磁阻电机这类电磁设计上都适用,尤其是需要同时权衡多指标的永磁电机,收益最明显。如果是单目标问题,比如只优化一个齿槽转矩,其实也可以用,但有点“杀鸡用牛刀”,直接参数扫描加后处理就够了。多目标优化才是这个组合的主战场。
另外要提醒一下,Maxwell 和 OptiSlang 只管“电磁性能”这一层。温升、结构强度、噪声振动这些,虽然是高级优化里绕不开的约束,但通常需要配合 Mechanical、Fluent 等工具做联合仿真。我的建议是:第一次搭建流程时不要贪多,先把电磁层面的效率和转矩质量做好,等流程稳定了再往里叠加热和结构模块。
2. 建模前的思路与关键参数化准备
2.1 在 Maxwell 里把模型降到最合适的维度
很多人一上来就建全模型 3D,结果网格一多,求解时间直接爆炸,一个工况点半小时起步,优化流程根本跑不动。我做优化之前,最先做的事是“降维”。
在能够忽略轴向端部效应、绕组分布接近理想的情况下,2D 模型已经能非常准确地反映电磁转矩和损耗趋势,效率高出一个数量级。对于分数槽集中绕组电机,端部效应不可忽略,就需要考虑 3D 模型了。即便如此,还可以利用电机结构的对称性:整数槽电机通常可以用一个极距或一个磁极周期作为求解域,配合主从边界条件,把计算量再砍一大截。
2.2 哪些参数适合作为优化变量
这是个特别值得花心思设计的问题。优化变量选得好,流程事半功倍;选不好,计算量翻倍不说,还容易让代理模型失真。我常用的原则是:优先选择对性能指标影响大、工程上可调整、且范围明确的几何参数。
以一台内置式永磁同步电机为例,比较合理的变量组大概是:
| 变量 | 说明 | 参考范围 |
|---|---|---|
| 磁钢厚度 | 直接影响气隙磁密和反电动势 | 原始值 ±20% |
| 磁钢宽度 | 影响磁路饱和和漏磁 | 原始值 ±15% |
| 气隙长度 | 显著影响齿槽转矩和转矩密度 | 0.3–0.8 mm 之间按工艺约束选 |
| 极弧系数 | 影响波形正弦度和纹波 | 原始值 ±10% |
| 槽口宽度 | 对齿槽转矩影响很大 | 原始值 ±20% |
有几个参数我会刻意排除出优化变量:一是绕组匝数,因为它更多取决于反电动势和母线电压的匹配关系,更适合单独核算;二是材料牌号类参数,因为优化的粒度通常是几何尺寸而不是材料选型;三是安装公差类尺寸,这类参数更适合放进稳健性分析里考虑,而不是主优化流程。
变量范围也不是拍脑袋定的。太窄,则优化没有意义,性能提升空间有限;太宽,则容易跑出一些几何上“能建出来但工艺上做不出来”的方案,比如磁钢太薄到没法加工,或者槽口宽度小到嵌线都困难。我的习惯是把机械加工约束、材料供应商的公差带、以及现有样机的实测数据放在一起,先给每个变量一个“工艺可行域”,再在这个可行域里去设优化范围。
2.3 网格设置和时间步长选不对,优化必然翻车
Maxwell 仿真慢的问题,很多时候不是软件不行,而是设置不合理。瞬态场里,网格和步长直接决定求解精度和时长,而这两者之间要平衡。
我踩过最典型的坑是转子旋转域和定子静止域分界处的网格密度不一致,导致转矩波形在边界处出现非物理的抖动。后来我在分界区域做了局部加密,并统一了表面三角剖分的最小尺寸,波形立刻干净很多。另一个坑是时间步长设得太粗,转矩纹波的特征频率都没采到,后处理出来的纹波系数失真,优化方向直接被带偏。
对于优化流程,我建议 Maxwell 端做到“够用就好”:网格密度以转矩曲线平滑、相邻两次自适应加密后转矩均值变化小于 0.5% 为接受标准;时间步长按电机极对数与转速换算出的电频率,保证每个电周期至少 200 个采样点。不要在一开始追求极限精度,否则优化循环里每个样本点都会成为时间黑洞。
2.4 输出指标怎么定义才会不打架
输出指标的选择和定义直接决定优化方向。我一般会把指标分成“目标”“约束”“观察项”三类。目标是要优化的性能,比如转矩纹波、铁耗;约束是必须满足的边界,比如平均转矩不低于某个下限、气隙磁密不高于某值;观察项是暂时不参与优化、但需要留档查看的量,比如某些点的磁密云图或者局部饱和程度。
需要注意的是,Maxwell 的默认输出是瞬态曲线,不是单一数值。我们在 OptiSlang 里做目标函数时,要利用后处理脚本把瞬态数据转成标量指标:转矩取周期平均和峰峰差,损耗取稳态后的周期平均,反电动势可以算 THD。这个“从曲线到标量”的过程虽然不复杂,但要提前做好,否则优化跑到一半发现目标函数取值异常,回头查原因会非常麻烦。
3. 实操过程:从 DOE 到代理模型的完整套路
3.1 整体流程分几步走
我把整个优化流程拆成了五段:参数化建模、DOE 采样、仿真批处理运行、代理模型拟合与检验、多目标优化搜索。流程开始前,先在 OptiSlang 里把 Maxwell 模型关联好,通过参数映射把变量传给 Maxwell 官方脚本接口,等每个样本点的仿真算完后,再把结果指标读回优化流程。
第一阶段不要急着优化。先用 DOE 采样跑一批样本,目的是了解设计空间中各点的响应值。样本量取决于变量数:变量在 5 个以内,我通常取 30 到 50 个样本;变量到 8 个以上,样本数就得加到 80 到 120。这里有个经验:代理模型的精度上限是样本量和分布决定的,不是算法决定的,所以样本量省不得。
3.2 DOE 方法选择:不是所有抽样都叫实验设计
DOE 方法里最常用的几个选项是随机抽样、拉丁超立方、以及自适应抽样。我建议不要一上来就随机抽样,它能覆盖到的空间太不均匀,容易出现一堆点挤在一起、另一些区域一片空白的情况。拉丁超立方是一种分层抽样的升级版,能把设计空间划分成网格,在每个网格里只取一个点,保证点的分布比较均匀,非常适合给代理模型提供信息。
自适应抽样是我个人更推荐的做法。它的逻辑是先跑一部分样本,对响应面变化剧烈的区域加密加点,对那些平坦区域减少点数,这样同等样本量下代理模型的精度会比均匀抽样明显高。工程里我们往往不知道哪里响应变化剧烈,自适应抽样相当于让算法帮我们“勘探”了一遍设计空间,省时间也省计算资源。
3.3 代理模型:Kriging 与响应面的取舍
代理模型的本质是用一个数学函数去近似原本需要有限元仿真才能算出的映射关系。有了代理模型,优化算法就可以在毫秒级完成成千上万次评估,不然每次评估都要调一次 Maxwell,整个优化流程会慢到没法用。
我试过两类常用的代理模型,一是响应面模型,另一个是 Kriging。响应面模型、尤其是二阶多项式响应面,优点是简单、稳健、训练快,在处理近似线性的问题上效果很好,但当响应存在强非线性或局部突变时,拟合误差会比较大。Kriging 模型则通过半方差函数描述空间相关性,对非线性响应、尤其是转矩纹波这种波动剧烈的指标,拟合能力明显更强。
我的选择原则是:先同时训练多种代理模型,比较交叉验证的误差指标,再选最优的那个作为优化用模型。交叉验证时主要看 R² 和均方根误差:R² 在 0.95 以上就算可接受,低于 0.9 就需要增加样本点或者换模型类型。经常有人在优化结束后发现最优解回代到 Maxwell 里算出来与代理模型预测差异很大,八成就是代理模型精度验证这步没做扎实。
3.4 一个完整案例的参数和结果记录
我以一款用于工业伺服的内置式永磁同步电机为背景,把实际搭建过的优化框架列出来供大家参考:
- 优化目标 1:额定工况下转矩纹波最小化
- 优化目标 2:额定工况下铁耗与永磁体涡流损耗之和最小化
- 约束条件:平均输出转矩 ≥ 6.8 N·m
- 设计变量:磁钢厚度、磁钢宽度、极弧系数、气隙长度、槽口宽度,共 5 个
- DOE 样本:拉丁超立方初始 40 个,自适应加 20 个,合计 60 个
每个样本点做两个工况:一个额定转矩工况,一个峰值转矩工况,全程大约跑了一夜。代理模型精度的交叉验证结果,转矩纹波的 R² 为 0.96,损耗的 R² 为 0.98,基本满足工程使用。最后优化得到的一组均衡解,转矩纹波比原始方案下降了约 34%,损耗降低了约 11%,平均转矩仍然满足约束。值得注意的是,这组解对应的磁钢厚度比原始方案略薄,极弧系数略有增加,这种变量之间的平衡关系,靠手动调参很难自然地摸到。
4. 多目标优化算法与 Pareto 权衡:如何从一组解里选“唯一解”
4.1 为什么不能把所有目标加权成一个数
我在早期跑优化时,总想着把两个目标简单加权成一个综合指标,这样变成单目标优化,用一个函数就能收敛。但实操下来发现这是个大坑:加权系数的设置非常主观,凭什么纹波权重是 0.6、损耗权重是 0.4?这个权重直接决定最终最优解的走向,而且不同量纲目标直接相加,本质上是让算法去平衡两个完全不可比的量,结果经常是某个目标脱颖而出,另一个目标被牺牲掉。
多目标优化的正确打开方式是求 Pareto 前沿解集。它的意思是:找到一组解,在这个集合里,任何一个解都不能在不牺牲至少一个目标的前提下,让另一个目标变得更好。换句话说,Pareto 前沿上的每个点都代表一种“效率与纹波之间的权衡方式”,是工程意义上的公平竞争解。
4.2 工程上如何从 Pareto 前沿里挑出最终方案
Pareto 前沿是一整条曲线,但最终落到图纸上的只能有一个方案。我的选择方法分为三步:
第一步,排除物理上不合理的点。有些 Pareto 点虽然性能指标很漂亮,但磁钢厚度过薄,冲片加工有难度;或者气隙过小,装配公差根本保证不了。这类点直接剔除。
第二步,引入“末级筛选”。以温升为例:把损耗换算成功率密度和散热条件,估算绕组温升是否在绝缘等级允许范围内。如果最优点损耗低但磁密高、铁耗集中在局部区域,局部过热的风险仍然要大打折扣。把这类工程判断叠加上去之后,Pareto 前沿上剩下的候选点往往已经缩小到三五个。
第三步,做一次实物样机的可制造性评审,确认冲片模具的可行性、磁钢装配顺序、绕线槽满率等细节,最终敲定方案。
这一步做下来,得到的方案不仅是仿真最优的,也是工程上可实现的,两者兼得。
4.3 优化算法的参数怎么设置
多目标优化的核心算法,我用的比较多的是 NSGA-II 这类带精英保留策略的非支配排序遗传算法。它的原理可以这样理解:一代代地保留“性能好的、且互相不支配”的解,同时保持种群多样性,防止算法过早收敛到某个局部区域。
在 OptiSlang 里设置这类算法时,我一般把种群规模设在 50 到 100,迭代代数设在 100 到 200 之间。代数太少,搜索不充分;代数太多,时间成本高且后期收敛增益不大。对于大多数电机设计问题,这样的参数组合已经足够。
另外一个容易被忽略的参数是“约束处理方式”。优化时如果约束条件是硬性的,算法会把约束违反视为比目标值更优先的判据,这样搜索效率会低,但能得到明确满足约束的解。如果约束接近极限、对结果的影响不敏感,可以放宽为软约束,让算法在边际解附近多探索一部分空间。我的建议是:关键约束,比如安全性和标准强制的量,用硬约束;次要约束用软约束,这样能兼顾稳定性和探索能力。
5. 常见问题与排查技巧实录
5.1 Maxwell 仿真很慢,怎么定位瓶颈
经常有人问我:“Maxwell 仿真很慢,是不是软件有问题?”绝大多数情况不是,是模型和设置的问题。我排查时会按下面的顺序来:
先看是不是 3D 模型加全模型。如果是,优先改为 2D 对称模型,很多时候能提速 5 到 10 倍。再看网格数量,如果网格剖分出来超过几十万甚至上百万单元,而又没有加密的必要,那重点检查气隙和磁桥这些局部位置的网格设置,不要对全局加密,局部加密就好。然后看时间步长和仿真时长,如果为了等转矩稳定多仿真了很多机械周期,实际只需要一两个周期,截掉多余部分能省大量时间。最后看电脑硬件配置,内存不足时求解器会频繁使用交换文件,整个计算会变得很慢。这个往往是最后一个排查的点,但很多人一开始就怀疑硬件不行,反而忽略了模型本身的低效。
5.2 优化过程中跑出来很多无效样本
优化流程跑着跑着,可能出现一批样本点求解失败或结果异常。原因通常是参数组合进入了几何退化区域,比如磁钢宽度太大与磁钢厚度组合后在转子桥部形成了极小角度,网格剖分时出现奇异性,直接导致求解不收敛。
我处理这类问题有两个对策:第一,在 OptiSlang 的参数映射里加上几何有效性判断,那些会让模型产生退化几何的样本点直接在进入求解器前拦截掉,不要浪费一次仿真;第二,在变量范围设置时预留一定安全距离,不要把上限或下限卡在几何约束的临界点上,留出 5% 到 10% 的余量,能规避绝大多数几何奇点问题。
5.3 仿真结果和实测偏差较大时的排查方向
仿真和实测有偏差是常态,但偏差大到离谱时就要排查原因了。我常遇到的情况有三种。
第一是材料参数问题:B-H 曲线只给了磁化曲线的一部分,或者硅钢片损耗系数用的是默认值,导致铁耗算出来和实测差一个数量级。解决办法是从供应商拿到完整的 B-P 损耗曲线,在 Maxwell 材料库里按实测数据重新拟合。
第二是边界条件设置问题:主从边界或周期边界方向反了,或者求解域只建了一半但对称轴选错,都会让计算结果异常放大或缩小。
第三是后处理取数位置不对:转矩波形取的是包含启动过程的整个瞬态,而不是稳态后的周期,平均值里混入了非周期分量,纹波指标自然不准。这类问题只要对曲线做“稳态截取”处理就能解决。
5.4 给新接触这套流程的人三条实在建议
如果让我给第一次搭这类流程的同行说几句实在话,我会说三件事。
第一,不要试图一上来就把所有指标都放进优化目标。第一次跑通流程时,只保留两个目标,加一两个硬约束,先把链路跑通,确认代理模型精度和优化结果合理之后,再逐步增加目标和约束。链路都没通就去追求大而全,时间都烧在排错上了。
第二,样本点结算前一定要看一眼指标分布范围。打开 DOE 的结果统计,确认这些指标的变化幅度是不是符合工程直觉。如果所有样本点的损耗几乎没有变化,那说明该变量或该工况下损耗受变量影响很小,后续这个目标对优化的贡献就有限,需要考虑换目标或换工况。
第三,保留好优化过程中的每一步数据。Maxwell 的每一步求解结果、代理模型的训练数据、交叉验证结果、Pareto 解的集合,全都要按批次保存。等样机测试数据回来之后,把实测结果和仿真结果放在一起对比,可以帮助你校准下一轮优化的模型参数。这个数据积累过程的价值,会随着项目越做越多成倍放大。
6. 一些补充心得
跑了几轮优化之后,有件事我体会特别深:多目标优化的意义不在于“找到绝对最优解”,而在于帮我们把原本隐藏在直觉和经验背后的设计空间打开给你看。你会发现,原来转矩纹波最低的方案并不是效率最高的方案,原来磁钢厚度减少一点对转矩密度的影响并没有想象中那么恐怖,原来槽口宽度和气隙长度之间存在明显的交互效应。这些认知一旦建立,以后再做改型和平台化设计时,你一开始就能把变量范围收敛到比较有希望的区域,少走很多弯路。
另外一个比较实用的扩展方向是稳健性分析。优化出的方案是“理论最优”的,但实际生产里磁钢性能有批次偏差、气隙有装配公差、材料温度特性会漂移,这些因素叠加起来可能让性能大幅偏离仿真值。用 OptiSlang 的稳健性分析功能,可以在最优解附近做一个容差带扫描,评估方案对制造偏差的敏感度,然后稍微牺牲一点理想性能、换取更大的稳健性空间。对于量产产品来说,这种“退一步”往往比追求纸面最优更贴近工程现实。
这套流程本身不难,难的是把每一个环节都做得足够扎实:变量选得合理、DOE 采得充分、代理模型验得严谨、Pareto 选点过得工程关。把这几点做到位,Maxwell 和 OptiSlang 的组合就能真正成为电机设计里一个从算例走向决策的环节,而不是“跑个优化玩玩”的演示工具。