搞电机设计的同行应该都清楚样机做出来NVH不过关、电磁噪声超标十有八九问题都出在气隙径向电磁力波上。要定位这个“罪魁祸首”最直观的办法就是把径向力随时间、空间的分布画出来再把它按空间阶次和时间频率做一次二维FFT分解。平时我常用Maxwell2D做电磁场瞬态仿真把气隙径向磁密或径向力密度导出来放到Origin里画时空径向力三维图和时空傅里叶三维分解图这套流程跑熟了之后排查电磁噪声源基本就是半小时以内的事。这篇就当是给自己的一个流程备忘也把里面最容易踩的坑都摊开讲讲电机本体设计、电磁噪声分析、NVH仿真方向的工程师和研究生应该都能直接用上。1. 为什么电机设计要盯着“时空径向力”看1.1 电机噪声的本质定子受了谁的力很多人一开始接触电磁噪声容易直接看转矩脉动、看反电势谐波但在辐射噪声这件事上真正的主角是气隙磁场作用在定子铁心上的径向电磁力。从麦克斯韦应力张量看气隙中单位面积上的径向电磁力密度可以近似写成p_r(θ, t) (B_r² - B_t²) / (2μ₀)其中B_r是气隙径向磁密B_t是切向磁密μ₀是真空磁导率。切向分量主要产生转矩对定子铁心的径向变形贡献很小径向分量虽然不产生有功功率但它直接作用在定子齿和轭部上引起铁心周期性变形这就是电磁噪声和振动的根源。注意这个公式里是磁密的平方项。这意味着什么呢如果气隙磁密含有基波和一系列谐波平方之后会产生和频与差频分量力波的频率和空间阶次跟磁密谐波并不一样会发生“频率迁移”。这也是为什么不能只看磁密频谱还要专门把力波单独拎出来分析。1.2 “空间阶次”和“时间频率”到底在说什么径向力波有兩个维度一个是在定子圆周方向上表现为波形分布这就是力波的空间阶次也就是沿着圆周有多少个“波峰波谷”的周期通常用r来表示另一个是随时间变化力波在某个固定空间位置上以多快的频率震荡这就是力波的时间频率用f表示。空间阶次很关键它直接对应定子铁心的振动模态。r0是均匀径向力脉动相当于“呼吸模态”定子整体一圈同步胀缩r2是椭圆模态两个方向交替拉伸r4是方形模态。预应力作用下低阶模态的刚度和固有频率通常较低更容易被激励出大振幅。所以分析力波谱时不只关心幅值大不大还要关心它的空间阶次是否跟定子模态对得上。时间频率决定了电磁激励的频率是否与定子结构某个模态频率接近。如果时间频率恰好落在某阶模态固有频率附近就等着噪声超标吧。二维FFT分解要解决的就是把包含时间、空间两个变量的力波信号拆成“某个空间阶次 某个时间频率”的组合这样就能确定哪一个“阶次-频率对”是主要激励源。1.3 这套方法能解决什么问题具体到工程里这套流程主要用来做三件事第一判断主要力波的阶次和频率跟定子模态做匹配分析。比如样机噪声大先看二维频谱里哪个分量幅值最高再对照结构模态频率基本能锁定激励源。第二对比不同设计方案。改槽极配合、斜槽、转子分段、谐波注入等光看电磁性能还不够得看径向力波有没有被压下来尤其看低阶次分量有没有变化。第三给后续结构优化输出输入条件。做模态分析、谐响应分析时需要知道激励力的空间阶次分布Maxwell2D只是电磁激励源真正算振动响应还得进结构软件。2. 整体技术路线与工具链选择2.1 标准流程一览这套流程我自己拆成了六个环节Maxwell2D建立瞬态电磁场模型正常求解。在气隙中间布置采样线圆周确定合适的空间采样点数和时间步数。利用场计算器定义径向磁密B_r或者直接定义径向力密度把气隙线上的数据在多个时间点导出来。在Origin中把导出的数据整理成“空间位置×时间”的矩阵计算径向力密度。用Origin绘制时空径向力三维曲面图直观看到力波传播。对时空矩阵做二维FFT绘制三维分解图得到“空间阶次-时间频率-幅值”谱。整个链路不算复杂但每个环节都有影响结果正确性的隐藏细节。下面我会按这个顺序把每个步骤拆开讲。2.2 为什么用Maxwell2D而不是3D有人会问径向力波不是三维分布吗为什么不用Maxwell 3D2D模型已经能覆盖径向力波的核心信息。轴向方向上大多数电机的电磁结构是周期性重复的气隙径向力沿轴向的分布基本一致端部效应不显著。2D模型可以把剖分网格做得很细尤其是气隙部分计算速度快、内存占用小适合反复调整方案做对比。3D模型要考虑轴向端部泄露网格数量庞大瞬态场跑一次可能就几小时起步在方案论证阶段性价比不高。我现在的习惯是方案前期参考和趋势对比一律用Maxwell2D只有到了需要认真评估端部影响、斜槽斜极等特殊结构时才上3D。2.3 为什么二维FFT放在Origin而不是Matlab或Python这个问题很多人纠结过。我自己的答案是Origin胜在交互和出图效率。用Matlab或Python做二维FFT代码本身不复杂但调坐标轴、调配色、生成出版级的三维图需要反复调试参数。Origin的交互界面可以直接操作数据矩阵点几下鼠标就能出图改视角、改色标、改坐标单位都很直观。对于项目周期紧、需要快速出图的场合Origin是最高效的。另外Origin自带二维FFT功能Extend FFT2通常在Signal Processing菜单里输入矩阵就能算不需要自己处理复数运算输出多种格式幅值、相位、功率谱还能直接对结果矩阵继续绘制三维图非常顺滑。2.4 数据链路上最容易被忽视的三个环节第一采样密度。空间点数和时间点数直接决定二维FFT能分辨的频率范围和阶次上限采样不够结果会混叠会假象频。第二导出的数据组织方式。Maxwell导出的通常是单列时间点数据如果不在Origin里合并成矩阵后面做FFT会非常痛苦。第三量纲换算。Maxwell导出的径向磁密单位是T要换算成力密度得除以2μ₀导出的力密度可能是N/m²或者kPa需要统一。这三个环节下面都会单独展开讲尤其是采样密度很多人踩坑都踩在这。3. Maxwell2D侧实操把径向磁密/力密度导出来3.1 模型和求解设置要点在开始后处理之前先确保模型本身没问题。气隙部分建议把气隙单独建一个Band区域网格加密。在气隙中间画一条完整的圆弧线360度半径取气隙中心半径命名为AirgapLine。这条线就是后面采样的几何对象。如果电机是对称的也可以只画一个极距范围然后后处理拼接但直接画整圆最省事空间FFT也最直观。瞬态求解的总时间至少要覆盖一个完整的电周期建议取1.5~2个电周期取稳态后的数据做分析。时间步长要按力波频率上限来定。分析电磁噪声通常关注0到几千Hz力波频率多为电源频率的偶数倍。对典型工业电机时间步长取10μs~50μs量级基本够用具体根据转速和极对数换算。这里有一个容易忽略的点时间步长不仅要满足电磁场求解精度还要满足后续FFT的采样定理。如果对一个电周期只取了20个点那只能看到10倍基频以内的频率分量高频力波全部丢失。气隙网格也直接关系到B_r波形精度。磁密径向分量对网格敏感气隙部分至少要有2~3层网格切分齿顶附近的网格更要注意否则导出的径向磁密会有明显阶梯状跳变FFT之后全是高频毛刺。3.2 用场计算器求径向磁密Maxwell2D默认后处理给的是幅值B和分量B_x、B_y要得到气隙线上的径向磁密B_r需要在场计算器里手动算。最容易被理解的方法是利用径向单位向量。在二维极坐标下圆周某一点的角度为θ径向单位向量是n (cosθ, sinθ)径向磁密B_r B_x·cosθ B_y·sinθ在Maxwell2D场计算器里的操作步骤是打开Field Calculator。选择Quantity - B把磁密矢量调入栈。选择Vector - Unit Vector对几何对象AirgapLine生成径向单位向量。 这里需要在Geometry中选择AirgapLine让求解器自动识别每个采样点的法向方向。用Dot运算求点积得到B_r。为这个结果命名比如“Br”然后Add保存。如果你的AirgapLine是标准圆周场计算器的Normal选项也能直接给出径向分量本质上是一样的。导出力密度的话可以继续在场计算器里写公式p_r (B_r² - B_t²) / (2μ₀)但工程上忽略切向分量也能得到足够好的力波趋势我通常直接导出B_r到Origin里再算p_r B_r² / (2μ₀)因为磁密是原始场量保留原始数据更灵活后面想再算切向分量也方便。3.3 采样点数与时间步数怎么定这是整个流程里最值得多讲两句的环节。空间采样点数Nθ决定二维FFT能分辨的最高空间阶次。沿圆周一周有Nθ个采样点那么能分辨的最高空间阶次是r_max Nθ / 2如果要分析到24阶、32阶甚至更高阶的力波空间点数至少要取64、128或256。工程上我自己用的下限是Nθ 128常见的是256数据量不大但频谱干净很多。时间采样点数N_t决定能分辨的最高时间频率。同一个时间步长持续N_t步最高时间频率就是f_max 1 / (2Δt)注意这里频率上限对应的是奈奎斯特频率。如果时间步长Δt取10μs最高频率是50kHz远够用如果Δt取1ms最高频就是500Hz高频力波就会被漏掉。另外二维FFT的频率分辨率也和总采样时长有关。频率分辨率Δf 1/T_sim仿真总时长越长频谱里的频率“梳齿”越细越容易把相邻频率分量分开。所以我建议仿真至少跑满两个电周期再做FFT频率分辨率。在设置每个时间点的存储时要确保Maxwell的“Save Fields”选项勾选保存了需要的求解步否则后处理时只能看到最后几个时刻。3.4 导出数据的具体操作导出气隙线数据我通常用两种方法。方法一单时刻手动导出。在后处理器中加载想要的场图比如磁密幅值B。右键场图选择“Export Fields”勾选几何对象AirgapLine。弹出的窗口会让你选择文件格式一般选CSV文件里包含采样点位置和B_r值。把这个步骤复制到每个需要导出的时间点导出文件按time_01.csv、time_02.csv命名。这个方法适合时间点不多的情况比如只导出一个电周期内16个或32个时刻。手动操作虽然重复但胜在直观不容易出错。方法二脚本批量导出。时间点多、数据量大时手动导出会点到怀疑人生。这时可以写一段简单的VBScript在Maxwell里跑循环遍历时间步每步导出一份CSV。脚本的逻辑本质上是把“修改求解时间 → 导出场图 → 保存CSV”这个过程自动化。我在实际项目中会把脚本固定下来只改时间和文件路径跑完一批数据直接进Origin处理。还有一个小技巧如果你想导出的是某个点、某条线的B_r随时间的变化可以直接用Maxwell的报告功能但那样拿到的数据不方便组织成矩阵。我更习惯“每时刻一排点”这种导出方式因为后面合并矩阵更顺手。导出时注意保留足够的小数位至少6位有效数字不然FFT之后高频分量都是数值噪声。4. Origin绘图时空径向力三维图的制作4.1 数据导入与格式整理把Maxwell导出的多个CSV文件拿到Origin后第一步不是画图而是把数据整理成矩阵。我推荐的数据组织方式行是空间位置角度或弧长列是时间点单元格是B_r值或力密度值。后续三维曲面图和二维FFT都以这个矩阵为输入。具体操作用Origin的Import Multiple ASCII导入所有CSV。把第一个文件的位置列角度单独放在一列作为空间轴。把每个时刻文件里的B_r列依次放到后续各列。选中所有数据区域点击Workbook菜单里的“Convert to Matrix”选择“XYZ Gridding”或直接按“Direct”方式转换。如果你的数据本身就是规则排列的同一个空间点、不同时刻用Direct方式转换最省事不会额外插值。这里有个血泪经验CSV文件路径和文件名不要带中文Origin导入带中文路径的文件偶尔会出现列错位或乱码。建议文件统一命名成t001.csv、t002.csv这种格式。4.2 三维曲面图设置矩阵准备好之后绘图就快了。选中矩阵点击Plot菜单下的3D - 3D Colormap Surface。Origin会直接生成一张三维曲面图X轴默认对应行编号空间点Y轴对应列编号时间点Z轴是B_r或力密度。接下来要修正坐标轴单位。双击坐标轴在Tick Labels里把X轴改成角度0到360度或0到2πY轴改成时间msZ轴改成Pa或MPa。配色方案建议用Temperature或Rainbow能明显看出波峰波谷。如果觉得默认色标对比度不够可以在Colormap/Contours里手动调整Levels。视角上我习惯把X轴朝向自己的左前侧让观察者能同时看到空间周期的波形和时间演化视觉效果更直观。绘制三维图时Origin默认可能会对矩阵做平滑或插值如果想看原始数据、避免引入人为误差一定在Plot Details里把平滑关闭。4.3 时空图的读图方法三维曲面图画出来之后怎么读它把三维曲面投影到“角度-时间”平面上你会看到一系列明暗条纹。这些条纹就是力波。条纹的倾斜方向表示力波在圆周方向的旋转方向条纹的间距对应空间波长阶次条纹随时间的变化速度对应时间频率。举个例子如果看到一条从左上到右下的斜条纹说明这是一个旋转力波它以某个空间角速度沿圆周移动。如果条纹呈现水平条状说明空间分布基本不变只是总体幅值随时间脉动。如果条纹密集交错说明多个力波叠加需要靠二维FFT来分离。读图时还要注意量纲如果画的是磁密B_r峰值数据自然很大如果画的是力密度p_r单位是N/m²kPa级别都很常见。Z轴的范围要设置合理不然波峰波谷全部糊在一起。5. 时空二维FFT分解三维图的完整做法5.1 把时空数据转成矩阵并准备FFT二维FFT要求输入是一个二维矩阵行和列分别是空间和时间。如果你已经按前面的方法建立了矩阵这一步直接就能做。在Origin中的操作路径是确保当前激活的是Matrix表格。点击菜单Signal Processing - FFT2。在FFT2对话框里Input Matrix选择当前的力密度矩阵。勾选“Center”选项把零频移到矩阵中心否则结果会四角分布不好看。输出选择Magnitude幅值。Sample Interval里设置空间采样间隔和采样时间间隔。这里有个关键点FFT2的Sample Interval设置必须正确。空间采样间隔是2π/Nθ弧度时间采样间隔就是你Maxwell里的时间步长Δt秒。如果这里填错X轴和Y轴标注的频率/阶次会完全错误。还有一点二维FFT之前可以考虑对矩阵加窗函数。工程数据往往不是严格的周期信号直接做FFT会存在频谱泄漏导致频率分量拖尾。Origin的FFT2里可以选择Hamming窗、Hanning窗等。加窗之后幅值会略微变小这是正常的分析趋势和识别频率位置不受影响但如果要跟理论解析值做绝对幅值对比注意做窗函数幅值修正。5.2 绘制三维分解图FFT2结果也是一个矩阵Z值就是幅值。绘制步骤激活FFT2输出结果矩阵。Plot - 3D - 3D Colormap Surface。调整坐标轴X轴是空间阶次r从负的最大阶次到正的最大阶次。Y轴是时间频率f单位Hz。Z轴是力波幅值。用色标表示幅值这样三维图的颜色也能区分强弱。实际绘制时有一个坑力波的直流分量0阶、0Hz幅值往往远远大于其他分量直接画全谱会导致其他有用的分量Z轴被压扁。处理方法有两个在FFT2之后把零频附近的一个小范围置零再绘图。在三维图里设置Z轴范围只显示指定幅值区间的数据。我个人习惯先画出全谱看整体分布再缩小Z轴范围去观察感兴趣的低阶分量两个图一对比信息量更大。5.3 如何解读二维频谱并对准噪声源二维频谱怎么看业内习惯把空间阶次作为X轴频率作为Y轴Z轴是幅值。每个显著的“尖峰”就代表一个“阶次-频率”组合。以一台8极48槽内置式永磁电机为例常见的径向力波分量包括r0f2f₁0阶力波呼吸模态频率是电频率的2倍。如果这个分量突出定子会整体一圈一圈胀缩。r2f2f₁椭圆模态这是最常见、也最容易引起振动的分量之一。r4f2f₁方形模态幅值通常随阶次升高而下降。r8、r16等齿谐波相关的高阶力波时间频率也更高。在看到二维频谱时要重点关注两类“尖峰”一是低阶次r≤4且频率接近定子模态频率的分量。即使幅值不是全谱最大只要频率和结构固有频率对上了也会引发严重的共振噪声。二是幅值特别大的分量。如果它恰好落在电机转速激励范围内即便频率没对上固有频率也会成为主要噪声源。另一个很实用的分析思路把二维FFT结果和用Maxwell周向模态叠加计算的理论力波阶次做对比。如果仿真FFT里出现了理论分析不应该存在的阶次先检查采样点数是否足够再检查网格是否足够细最后检查是不是数据处理时引入了伪频。5.4 关于“只做磁密FFT”和“直接做力波FFT”的差异有些同行习惯直接对气隙磁密B_r做二维FFT用来预判力波频率。这个做法做趋势分析是可以的但注意力波的阶次和频率不是简单等于磁密谐波的阶次和频率因为力正比于B的平方。磁密里如果有两个分量空间阶次r₁、时间频率f₁空间阶次r₂、时间频率f₂它们相互作用产生的力波分量包括(r₁r₂, f₁f₂)(r₁-r₂, f₁-f₂)(r₁-r₂, f₁f₂) 等这就是所谓的“力波频率由磁密谐波的组合决定”。如果只看磁密FFT你可能会漏掉某些组合产生的低频力波。所以严谨的做法是先由B_r算出p_r再对p_r做二维FFT。这也是文章标题强调“径向力”而不是“磁密”的原因。6. 常见问题与排查实录6.1 数据导出环节的典型问题问题Maxwell导出的CSV只有某个时间点的数据不是整个周期。原因Maxwell的场图导出默认只导出当前显示时间步的数据。解决要么手动逐时间点导出要么用脚本遍历时间点。注意检查求解设置里是否勾选了“Save Fields for each time step”否则后处理根本拿不到中间时间步。问题导出的Br波形有明显锯齿不光滑。原因气隙网格太粗采样线穿过了粗网格区域磁场梯度变化没有被正确捕捉。解决加密气隙区域网格气隙至少保留3层网格齿顶附近再加mesh operation。重算一次再导出波形会好很多。问题采样点数少FFT后出现镜像阶次真实阶次分不清。原因空间采样点数不足导致高阶次混叠到低阶次上。解决提高采样点数。我建议先用256点落一次全流程确认数据链路没问题后再按分析需求决定是否加密。6.2 Origin画图与FFT环节的典型问题问题用三列长表角度、时间、力值直接画3D Colormap Surface报错。原因散点数据不是规则网格Origin需要先把数据网格化。解决二选一。要么先“Convert to Matrix”转成矩阵再绘图要么用Origin的“XYZ Gridding”工具插值成规则网格。我自己推荐前者规则矩阵既能画图也能做FFT一步到位。问题FFT2输出结果的坐标轴不是空间阶次和频率。原因Sample Interval设置错误或者没有睁开眼睛看单位。解决在FFT2对话框里正确设置空间采样间隔2π/Nθ和时间采样间隔Δt然后在结果矩阵的坐标属性里手动修改X轴、Y轴标签。问题Origin老版本打不开FFT2功能。原因FFT2功能从某个版本开始才内置在Signal Processing菜单里老版本或一些精简版本没有。解决用Origin 2021及以上版本。另外工作机上如果出现安装后打开软件报“应用程序的并行配置不正确”之类的错误一般不是软件本体问题而是缺少VC运行库把常见运行库装齐再启动就好了。问题FFT2结果里直流分量太大其他分量完全看不清。原因力波的直流分量平均径向拉力占比大这本身是物理现象不是bug。解决在绘制三维分解图时把Z轴范围缩小或者把零频附近的矩阵元素置零再绘图。我个人通常导出两次图一张全谱看全貌一张局部放大看低阶分量。问题Origin导出图像带demo水印。原因使用了未正常授权的版本。解决确认使用正版授权。工作机如果出现这种情况优先排查授权状态不要在正式图纸里带水印容易被施工或外发环节卡住。6.3 常见问题速查表环节现象主要原因解决建议Maxwell导出只有单帧数据Save Fields未勾选勾选每个时间步保存Maxwell导出Br锯齿明显气隙网格过粗加密气隙网格数据整理合并后行列错位CSV路径含中文文件路径改成英文Origin绘图3D图生成慢或报错点数据未网格化Convert to Matrix再绘图Origin FFT坐标轴不是阶次/频率Sample Interval设置错误正确填写采样间隔Origin FFT高频分量全是噪声数据位数不足导出时保留6位以上有效数字结果解读低阶分量看不清直流分量压轴缩小Z轴范围单独出图7. 实操心得做这套流程做了大半年之后我最大的感受是先把“小数据”跑通再上“大数据”。不止一次见过同行一上来就全模型256个空间点、2000个时间步导出来的CSV动辄几百MBOrigin卡到怀疑人生结果前面的采样逻辑还错了白跑一趟。我的建议是第一次走通流程时先取32~64个空间点、一个电周期内取32个时间步把Maxwell2D导出、Origin整理、三维绘图、二维FFT这四个环节全部验证一遍确认坐标轴正确、量纲正确、FFT结果能对上理论阶次再加密到128或256点、延长仿真时间做精算。这样整体效率反而更高。另外一个小技巧Origin里把绘图格式保存成模板。我第一次完成一套时空三维图和三维分解图之后把配色、视角、坐标轴格式、色标范围全部存成.otpu模板。后面换方案、换电机型号把新数据导进来套模板一键出图半小时的活儿变成五分钟。还有一个补充思路二维FFT并不一定要用Origin自带的FFT2它输出的矩阵实际上就是Matlab里fft2的结果。如果你后续还想做力波与定子模态的耦合分析把Origin导出的矩阵数据重新导入到仿真脚本里做进一步的结构响应计算完全没有障碍。Origin只是出图工具数据本身都是通用的。最后再分享一个我常用的验证手段在Maxwell2D计算完一个工况后先用解析公式估一下主要力波的阶次和频率比如基波磁场和齿谐波磁场相互作用会产生哪些分量再来看二维FFT结果。两边的阶次和频率对照得上说明采样没有问题对不上先怀疑数据链路再去怀疑物理模型。这个习惯帮我挡掉过好几次无效分析。