JMAG学习笔记
本文只给出一些经典设置,数值参考师兄的经验,不作为JMAG从零入手的教学。
JMAG完整版基础教程(以旋转电机为例)请参考:B站 JMAG基础教程 完整版
2D直线电机仿真设置
Properties 属性
Step Control通常采用Time Interval的方式,$f$为电机频率(通常而言是$v/2\tau$),一般跑2个电周期。下图的120计算方式如下:
1 | 电机齿槽转矩(推力)频数N通常为槽数和极对数的最大公倍数,如6s8p的同步直线电机,N=最大公倍数(6,4)=12 |
Conversion中设置Stack Length为你所仿真电机的数值。
Circuit中不要进行任何设置,保持默认即可。尤其是Parallel,可能会有BUG
Parallel中不要进行任何设置,保持默认即可,可能会有BUG
Nonlinear中可以增加Maximun Nonlinear Iterations的数量,取决于精度和运行情况。可以把默认的15加大一点,到30或50。
注:直线电机先跑两个电周期的原因是第一个周期中可能存在非稳态(暂态)的情况,如果你观察到两个周期内电机表现一致,那么可以把仿真时间缩短到一个周期
Equations 变量
在Case Control右键进入Equations可以设置变量和常量,比如电机频率可以设置为定量(Expression),电机电流、初始相位角等可以设置为变量(Value)。可以增加其他变量用于控制电机模型。
如果你的模型是Geometry Editor自己捏的,那么可以在那里直接加几何变量(Equations),用于控制电机模型的变化(比如轭部厚度啊,边端宽度啊等等),记得一定一定要勾选“Register to JMAG Designer”
模型美化
为了使你在操作(赋材料)的时候更加便捷,并且让模型看上去好看一点,可以打包Block。当你创建Study后在模型中选择具有相似属性的面域(比如所有N形永磁体为一组、所有线圈部分为一组、所有定子铁心部分为一组等等),然后右键选择Grouping,操作成功后左侧列表中的Part那一栏应该能显示正确的一组。
然后你可以在Model-Assembly中改颜色。
Mesh 剖分
对于电机而言,最重要的就是剖分。进入Mesh - Properties查看剖分设置。一般采用Slide Mesh,即每次运动时,气隙滑移,有助于加快仿真速度并提高仿真精度。
在Slide Division中设置气隙剖分细节,其中Divisions in Gap是气隙层数,一般设置为3或5,取决于期望精度和气隙大小;Element Size in Motion Direction设置为你的仿真步长(距离步),如本例中为
电流与初始位置
Circuit 电流
首先你要为你的Copper添加FEM Coil,每一相为一组,每一个绕组面域单独设置一个Coil Set,然后里面的Parts per Coils只能有一个。
然后为模型添加Circuit,一般如下方所示即可。第一个Study一般是NoLoad的,也就是不要Circuit Source,空着就行。双击Coil更改匝数。
如果我们采用的是电流源,那么电阻、电感就不重要。
id=0 控制下初始位置
所谓id=0控制,其实就是让A相的起始反电动势为0,走一个Sine曲线。下图是已经调节好初始位置了的。
- 运行一遍仿真,运行仿真后查看电机的“Circuit Voltage”,关注A相电压即可
- 查看A相电压过零点位置(一般把单位设置为长度,时间也行)
- 在
Condition-Motion的最下面设置运动的初始位置Initial Position,直接设置为过零点位置的数值(精确到仿真补偿,即气隙剖分中设置的网格大小,如本例中2.5 mm可以被精确到2.4 mm或2.6 mm) - 再运行一遍
- 如果过零点跟t=0差的很大,说明方向反了,把
Motion中的初始位置加个负号 - 如果差的很小,那么微调一下就行了,基本重合即可,完全一致是不太可能且没必要的
- 如果过零点跟t=0差的很大,说明方向反了,把
多目标优化问题
参考文献:JMAG Designer在永磁同步电机优化计算中的应用
JMAG一般采用遗传算法进行优化,市面上已经很成熟了,若对遗传算法不熟悉的请自行查阅相关资料。
以下数值设置方法由师兄的经验推荐,大佬可以不用参考。
Optimization 设置
JMAG的Optimization在Case Control中打开
Constraint 约束
约束中可以选择变量作为设计变量,如果在Geometry Editor中存在未被注册为JMAG变量的,也可以在这里作为几何参数直接设置为设计变量。
下方的输入框设置设计变量之间的约束
Objective Fcn 目标函数
你可以手动从Result - Graph中添加Response Data,也可以直接在这一栏的上方输入框中设置Response Data,注意这里设置的不是最后的目标函数,只是作为一个前置变量存在。
在下方的Objectice Functions选择Add同时添加目标函数和约束函数,目标函数可选Maximize或Minimize,约束函数可选≥或≤。一般可以直接让目标函数和Response Data保持一致。
Initial Case 初代
默认选择Orthgonal Array,系统自动产出正交的初代种群。
可选Use Only Existing Cases,此时下方的Cases选择起效,使之作为你的初代。特别注明,如果Selected Cases超过了每代种群数,则会进行判别并丢弃一部分;反之,则会由系统随机生成一部分。
剩下那个我没怎么用过。
详细的可参见Help。
Options 核心设置
MOGA (SM)
设置优化方法,一般对电机而言需要用多目标优化Multi-Objective Genetic Algorithm (MOGA),普通的遗传算法GA一般针对单目标,应该是会把你的多目标优化函数进行加权处理(我猜的)。也可以使用代理模型Surrogate Model (SM),可以在一定程度上加快优化速度,配合MOGA使用会产生如下效果:
通过调整Specify FEA Interval可以设置FEA和SM交替出现的频率,默认是2。当这个数字被设置成n时,每n代种群中有n-1代由SM产生,固定1代由FEA产生。首代种群和最后一代种群必定由FEA产生。
Number of Generations:控制种群代数,一般测试阶段可用50-100,计算可用100-200。
Population Size:每代种群数,对于二维电机优化问题,可设置为10 × 优化变量数;对于三维问题,考虑到仿真时间较长,可适当减小。
Group Cases by Generation:一般维持默认即可,你想改个名字也无所谓,不太影响
其他几个选框一般都可以维持默认,或参见Help
CNSGA-II
常规情况下,JMAG默认使用“使用惩罚方法 (penalty method)的MOGA”
若想采用效果更好的“受控精英非支配排序遗传算法II (CNSGA-II)”,需要将环境变量JMAG_MOGA_USE_NEW_CONSTRAINED_HANDLING设置为1。
详情参见Help
Output 输出
在路径中输入csv文件可以指定输出位置,在运行过程中观察优化情况以便提前终止错误
Running 运行设置
Job Type:勾选Submit as project file (JPROJ),并设置Independent Jobs的数量为每代种群数(即Options中的Population Size)
Optimization Controller:勾选第二个,Submit Job Using Same Machine Settings as Analysis Jobs
点击OK保存设置,点击Submit进行提交(提交前先看一下下文的其他设置)。
其他运行设置
Properties 属性
右键Study进入Properties设置,勾选Show Advanced Settings进入Output设置页面。
如果你不需要多余的结果,最好勾选最上方的Output Table Results Only,否则你的硬盘空间要炸。
JMAG Schedular 任务调度
JMAG Schedular就是平时在后台跑任务的小窗口,点击Settings中的Number of Jobs,把第一个Jobs改为你电脑的线程数。













