第二章 电机几何建模基础
做电机仿真这么多年,我越来越觉得几何建模是整条仿真链的基石。你想想看,网格剖分、边界条件、接触定义,哪一样不是建立在几何模型之上?模型建得不好,后面算得再漂亮也是白搭。今天我就把电机几何建模这摊事儿,掰开了揉碎了跟你聊聊。
2.1 三维建模的核心概念
说白了,三维建模就是把电机从图纸搬到电脑里。但这里有个关键点——仿真用的模型和设计用的模型,其实是两码事。
设计模型追求的是「像」,所有倒角、螺纹、小孔都得画出来。仿真模型追求的是「准」,只保留影响结构刚度和电磁性能的特征。我在项目中遇到过好几次,有人把电机端盖上的所有螺丝孔都画出来,结果网格剖分时卡死,算了一周还没出结果。嗯,这就是典型的「过度建模」。
所以记住一句话:仿真模型是设计模型的简化版本。去掉那些对分析结果影响微乎其微的特征,比如小圆角、小倒角、铭牌凹槽等。保留那些决定结构性能的关键特征,比如轴承室、定子铁芯、绕组端部。
核心原则:建模时多问自己一句——这个特征对我要分析的结果有影响吗?没有?删掉。
2.2 Abaqus/CAE草图绘制
Abaqus/CAE的草图模块,说实话,跟专业CAD软件比确实有点简陋。但它的优势在于——和后续的仿真流程无缝衔接。你不需要导出导入,直接在Abaqus里画完就能用。
我个人习惯用「线+圆弧」的组合来画电机截面。比如定子槽形,用直线画槽口,用圆弧画槽底,再用直线连接。画的时候注意两点:
- 约束要完整:水平、竖直、相切、共线这些约束,一个都不能少。否则后面拉伸或旋转时会报错。
- 尺寸要合理:Abaqus的草图尺寸是参数化的,双击就能改。我建议你一开始先画个大概形状,最后再统一标尺寸,这样效率高。
小技巧:画定子槽形时,先画一个槽,然后用「阵列」功能复制出其他槽。这样改一个槽的尺寸,所有槽都会跟着变。我曾经用这个办法,半小时就建好了一个48槽的定子模型。
2.3 部件(Part)模块详解
Part模块是Abaqus建模的主战场。这里我重点说几个电机建模常用的功能:
2.3.1 拉伸与旋转
电机里大部分零件都是回转体或拉伸体。比如转子铁芯,用旋转功能;定子铁芯,用拉伸功能。操作很简单:先画截面草图,然后指定拉伸深度或旋转角度。
这里有个坑——拉伸方向。我刚开始做的时候,经常把定子铁芯的轴向方向搞反,结果装配时怎么都对不上。后来我养成了一个习惯:建模前先想好坐标轴方向,Z轴一般设为轴向,X和Y是径向平面。
2.3.2 切割与合并
电机里有很多复杂形状,比如永磁体的V型布置。这时候就需要用切割功能。先建一个长方体,然后用「切割-拉伸」切出V型槽,再把永磁体放进去。
合并功能也很常用。比如把定子铁芯和绕组合并成一个Part,这样后面定义接触时就不用一个一个选了。但注意:合并后的Part不能再单独编辑,所以合并前一定要确认没问题。
注意:合并操作会丢失零件之间的接触信息。如果你需要分析定子铁芯和绕组之间的接触应力,就不要合并,而是用装配模块里的「接触对」来定义。
2.4 布尔运算与几何清理
布尔运算,说白了就是「加减乘除」。加就是合并,减就是切割,交就是取公共部分。电机建模里最常用的是「减」——比如在端盖上挖轴承孔。
几何清理,这个很多人会忽略。从CAD软件导入的模型,经常会有一些「垃圾几何」——比如微小的面、重叠的边、碎面片。这些垃圾几何会导致网格剖分失败,或者生成质量很差的网格。
我曾经从SolidWorks导入一个电机端盖模型,里面有200多个碎面。网格剖分时直接报错,我排查了整整一天才发现是几何问题。后来我用Abaqus的「几何修复」工具,一键清理掉所有碎面,网格就顺利生成了。
几何清理的常用工具:
- 合并面:把相邻的共面面合并成一个面
- 删除边:删除那些不影响几何形状的短边
- 填充孔:把不需要的孔洞填上
- 修复间隙:把微小的间隙补上
2.5 参数化建模技巧
参数化建模,是我最想跟你分享的内容。为什么?因为电机设计是一个迭代过程。你今天算出来应力超标,明天就得改尺寸。如果没有参数化,你就得重新画一遍模型,那效率太低了。
参数化建模的核心是「用变量代替数值」。比如定子铁芯的外径,不要直接输入200,而是定义一个变量D_out=200。后面想改外径,只需要改这个变量值,模型会自动更新。
在Abaqus里实现参数化,有两种方式:
- 直接在草图里用表达式:比如在尺寸输入框里写 "D_out/2",Abaqus会自动计算。
- 用Python脚本:这是更高级的方式。你可以写一个Python脚本,定义所有参数,然后一键生成模型。
实战案例:我做过一个永磁同步电机的参数化模型,定义了20多个参数,包括定子内外径、槽形尺寸、永磁体尺寸、气隙长度等。每次设计变更,只需要改一个Excel文件里的参数值,然后运行脚本,模型就自动更新了。原来改一次模型要两天,现在只要10分钟。
下面是一个简单的Python脚本示例,用于生成参数化的定子铁芯:
# 参数定义
D_out = 200.0 # 定子外径
D_in = 140.0 # 定子内径
L_stator = 100.0 # 铁芯长度
num_slots = 48 # 槽数
# 创建定子铁芯
from abaqus import *
from abaqusConstants import *
# 创建草图
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=500.0)
s.setPrimaryObject(option=STANDALONE)
# 画外圆
s.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(D_out/2, 0.0))
# 画内圆
s.CircleByCenterPerimeter(center=(0.0, 0.0), point1=(D_in/2, 0.0))
# 创建Part
p = mdb.models['Model-1'].Part(name='Stator', dimensionality=THREE_D, type=DEFORMABLE_BODY)
p.BaseSolidExtrude(sketch=s, depth=L_stator)
你看,代码很简单。但它的威力在于——你可以通过循环、条件判断等逻辑,生成任意复杂的模型。比如生成48个槽,用for循环就能搞定。
我的建议:刚开始做参数化建模时,不要追求一步到位。先手动建一个模型,然后把关键尺寸提取出来,写成变量。慢慢积累,你的参数化模型库会越来越丰富。
2.6 本章知识体系
为了让你更直观地理解本章的知识结构,我画了一张图:
这张图把本章的知识点串起来了。从三维建模的核心概念出发,到草图绘制、Part模块、布尔运算,最后到参数化建模。每一步都是环环相扣的。
好了,关于电机几何建模,我就说这么多。记住一句话:建模不是目的,仿真是目的。把时间花在刀刃上,别在建模上过度纠结。
公众号:蓝海资料掘金营,微信deep3321