摘要:本文以开源Python框架Pyleecan为例,系统阐述如何利用Python开源生态(PyQt5、NumPy/SciPy、PyVista、Gmsh等)自主构建面向电机设计的二维电磁场有限元分析软件。重点介绍了ONELAB与Elmer两款开源求解器的技术特点及其在电机电磁场建模中的应用,并引用合肥工业大学狄冲教授团队在Elmer平台上的研究工作作为参考。文章从软件架构、功能组成、求解器算法三个维度进行详细论述,为电机工程领域从事开源有限元软件开发的研究者和工程师提供借鉴。
引言
随着新能源汽车和工业自动化的快速发展,电机设计与分析软件的自主可控需求日益迫切。传统商业软件如ANSYS Maxwell、JMAG、COMSOL虽功能强大,但存在License成本高、二次开发受限、求解过程黑箱化等问题。近年来,Python在科学计算领域的统治地位日益巩固,基于Python开源生态构建自主可控的电机设计仿真平台成为可能。
本文结合合肥工业大学狄冲教授团队在电机电磁仿真领域的研究成果,介绍基于Python开源生态自主开发的二维电机磁路有限元分析软件——Pyleecan(Python Library for Electrical Engineering Computational Analysis)的架构设计与实现。该软件已在GitHub上获得广泛关注,采用Apache 2.0许可证,由EOMYS ENGINEERING发起、Green Forge Coop非营利组织维护,目前版本为1.5.2。
狄冲老师在《电机与控制学报》发表的《基于GetDP的电机电磁场有限元分析》一文中指出,开源CAE平台的模块化架构为电机仿真提供了灵活的扩展能力,其关键在于将学术研究成果高效转化为工程应用。这一理念正是本文软件研发的核心指导思想。
一、ONELAB与ELMER求解器简介
1.1 ONELAB开源平台
ONELAB(Open Numerical Engineering LABoratory)是由比利时列日大学Christophe Geuzaine团队开发的轻量级开源有限元软件接口平台,采用客户端-服务器模型,基于三重抽象架构设计。ONELAB默认软件包集成了多个优秀的开源求解器:
- Gmsh:三维有限元网格生成器,支持CAD建模、复杂几何建模和结果可视化,是ONELAB的核心通信枢纽
- GetDP:基于有限元方法的通用离散问题求解器,支持多物理场耦合分析,是ONELAB的默认求解引擎
- conveks
此外,通过Gmsh API可灵活对接Elmer、OpenFOAM、Code_Aster、CalculiX等第三方求解器。在Pyleecan项目中,ONELAB发行版(含Gmsh+GetDP二进制)被完整打包,pyonelab Python包提供了便捷的路径管理接口。本软件内置的MagGetDP求解器通过生成符合ONELAB标准的.pro模板文件,直接调用getdp.exe执行求解,与狄冲教授团队的研究工作一脉相承。
1.2 ELMER多物理场求解器
ELMER是由芬兰赫尔辛基大学和CSC-IT科学计算中心开发的开源多物理场仿真软件,采用GPL许可证。ELMER具有以下架构特点:
| | |
|---|
| | WhitneyAVSolver(磁矢位)、MagnetoDynamics2D |
| | Direct(UMFPACK)/ 迭代求解器(BiCGStabl+ILU) |
| | ElmerSolver_mpi + MS-MPI v10.1.1 |
| | ResultOutputSolver + PyVista渲染 |
| | |
| | |
狄冲团队在《电工技术学报》2022年第5期发表的《基于Elmer开源有限元平台的铁氧体辅助同步磁阻电机的建模和分析》中,对Elmer的电机应用进行了系统性验证。研究以Elmer为核心求解器,联合Gmsh建立了铁氧体辅助同步磁阻电机(FMaSynRM)的二维磁场和电路耦合瞬态有限元模型,计算结果与商业软件吻合良好,样机测试验证了方案的工程可靠性。
1.3 FEMM求解器集成
FEMM(Finite Element Method Magnetics)是由David Meeker开发的开源二维有限元电磁场求解器,采用Windows COM接口实现与Pyleecan的深度集成。作为本软件中求解速度最快、部署最简便的求解器,FEMM提供了电机设计初期的快速迭代验证能力。
技术路线:
- 通过
win32com.client.Dispatch("femm.ActiveFEMM")建立COM通信 - 支持滑动带法(Sliding Band)实现定转子相对运动
核心实现:
法国'python水鸭包'通过_FEMMHandler类(2772行)封装了所有FEMM COM接口调用,主要包括:
| | |
|---|
| | |
| | |
| create_FEMM_boundary_conditions() | |
| create_FEMM_circuit_material() | |
| | |
| | |
| | |
| | |
求解流程:
Step 1: openfemm_Windows() → 启动FEMM进程(COM) Step 2: draw_FEMM() → 绘制定子/转子/绕组/磁钢几何 Step 3: create_FEMM_materials() → 分配材料属性与B-H曲线 Step 4: create_FEMM_circuit() → 设置三相绕组电路 Step 5: create_FEMM_boundary() → 施加周期/anti-periodic边界 Step 6: get_sliding_band() → 构建气隙滑动带网格 Step 7: mi_analyze() → 求解每个时间步 Step 8: mo_blockintegral(22) → 虚功法转矩提取 Step 9: comp_FEMM_Phi_wind() → 绕组磁链计算
技术特点:
| |
|---|
| |
| |
| |
| 仅支持2D,仅Windows平台,不可3D扩展,仅限电流驱动单速点求解 |
| |
FEMM求解器适合电机设计初期的快速迭代与方案对比,在Pyleecan的"Run FEMM"一键求解流程中,用户无需手动操作FEMM界面即可完成完整的电磁仿真链路; 本人基于该前处理包开发的自主电磁PYFEM并集成了GETDP和Elmer开源求解器,未来的重点是集成开源电控及嵌入式工具实现全流程仿真。
二、软件功能组成
2.1 核心功能模块
| | |
|---|
| | |
| | |
| | |
| | FEMM/Elmer/GetDP/NGSolve/PyFEM |
| | PyVista + VTK + Matplotlib |
2.2 电机几何参数化建模
本软件的核心功能之一,是提供了针对二维径向通量电机拓扑的参数化几何定义能力。通过代码生成引擎与参数化CSV类定义相结合,软件内置了以下七种主流径向通量电机拓扑的完整参数化几何模型:
每种拓扑的参数化几何均包含完整的定子(轭部、齿、槽形)、转子(轭部、齿、槽形/磁钢孔)、磁钢、绕组、气隙等部件的几何尺寸参数,用户无需手动绘制CAD模型,仅需通过GUI或API输入关键尺寸参数(如定子外径、气隙长度、槽数、极对数、磁钢厚度等),即可自动生成可用于有限元网格划分的精确几何模型。
不同电机类型的案例
2.3 自适应网格生成
def generate_mesh(geometry, machine_params, max_element_size=5e-3): """基于Gmsh的自适应网格生成""" import gmsh gmsh.initialize() gmsh.option.setNumber("Mesh.MshFileVersion", 2.2) # 定义定子/转子/绕组/磁钢/气隙几何实体 for region in geometry: gmsh.model.occ.addRectangle( region.x, region.y, 0, region.width, region.height) # 设置网格尺寸约束(气隙区域细化,轭部粗化) gmsh.model.mesh.setSize( gmsh.model.getEntities(0), max_element_size) # 生成三角形网格 gmsh.model.mesh.generate(2) return gmsh
自适应网格划分形成的网格为*.msh格式,显示效果如下:
2.4 关键求解器性能对比
本软件支持四种求解器,形成从快速估算到高精度分析的多层次方案:
其中纯Python实现的PyFEM是完全自研的求解器,从Gmsh网格解析到刚度矩阵组装到稀疏求解完全自主实现,对132K三角形网格单时间步求解时间约13秒。其控制方程及实现如下:
二维静磁问题控制方程(磁矢位Az法):
∇ × (ν ∇ × A) = J → −ν (∂²Az/∂x² + ∂²Az/∂y²) = Jz
一阶三角元刚度矩阵:
Ke = [ν / (4Δ)] × (b·bᵀ + c·cᵀ)
其中Δ为三角形面积,b、c为与节点坐标相关的几何向量。
2.5 后处理与可视化
- 场图渲染:PyVista读取Elmer输出的VTU文件,渲染磁通密度B、磁场强度H、磁矢位Az等物理场云图
- 气隙磁密提取:从Elmer的SaveLine输出lines.dat提取径向Br和切向Bt分量
- 转矩波形:读取scalars.dat绘制转矩波形,计算均值、脉动率,FFT频谱分析
- 绕组磁链:从气隙Br积分计算每极磁通,结合绕组分布得到三相磁链波形
- 交互式后处理对话框:基于PyQt5的ElmerPostProcessDialog提供场选择、分量选择(mag/X/Y/Z)、区域选择(全域/定子/转子)、播放动画、保存截图等丰富功能
三、软件架构设计
3.1 分层架构
软件采用六层架构设计,从底层到上层依次为:
┌──────────────────────────────────────────────────┐ │ 应用层 (Application) │ │ ┌─────────┐ ┌─────────┐ ┌──────────┐ │ │ │ GUI界面 │ │ 批处理 │ │ API接口 │ │ │ └────┬────┘ └────┬────┘ └─────┬────┘ │ └────────┼─────────────┼─────────────┼──────────────┘ │ │ │ ┌────────▼─────────────▼─────────────▼──────────────┐ │ 业务逻辑层 (Logic) │ │ ┌──────────────────────────────────────────┐ │ │ │ 电机建模 │ 仿真控制 │ 结果分析 │ │ │ └──────────────────────────────────────────┘ │ └─────────────────────────┬─────────────────────────┘ │ ┌─────────────────────────▼─────────────────────────┐ │ 求解器层 (Solver) │ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌────┐ │ │ │ FEMM│ │GetDP│ │ELMER│ │NGSolve│ │PyFEM│ │ │ └─────┘ └─────┘ └─────┘ └─────┘ └────┘ │ └──────────────────────────────────────────────────┘
详细的内部架构层次:
┌──────────────────────────────────────────────┐ │ GUI层 (PyQt5) │ │ SidebarWindow / DMachineSetup / DMatLib │ ├──────────────────────────────────────────────┤ │ 代码生成层 (Generator) │ │ CSV类定义 → 自动生成 Classes/ 273个类 │ ├──────────────────────────────────────────────┤ │ 数据模型层 (Classes/) │ │ FrozenClass基类 + 自动序列化/比较/拷贝 │ ├──────────────────────────────────────────────┤ │ 方法层 (Methods/) │ │ 面向接口的多态求解器方法实现 │ ├──────────────────────────────────────────────┤ │ 函数层 (Functions/) │ │ FEMM/Mesh/Electrical/GUI 工具函数集 │ ├──────────────────────────────────────────────┤ │ 外围驱动层 (External Solvers) │ │ FEMM 4.2 / Elmer v26.1 / NGSolve / GetDP │ └──────────────────────────────────────────────┘
3.2 代码生成引擎
这是本软件最具特色的架构设计。项目的类定义全部存储在Generator/ClassesRef/目录的CSV文件中,通过run_generate_classes.py自动生成Classes/目录下约273个Python类文件。每个自动生成的类继承FrozenClass基类,提供:
这种设计实现了数据模型与业务逻辑的完全分离:CSV定义数据结构,自动代码处理重复性工作,开发者只需专注于Methods/目录下的算法实现。
3.3 多态求解器适配
本软件的设计亮点之一是优雅的求解器适配模式。Magnetics抽象基类定义统一接口,各求解器通过多态继承实现:
class SolverAdapter: """求解器适配器模式""" def __init__(self, solver): self.solver = solver def solve(self, problem): """统一求解接口""" input_data = self._convert_to_solver_format(problem) raw_result = self.solver.solve(input_data) return self._convert_to_unified_format(raw_result)
各求解器继承关系:
Magnetics (抽象基类: run / comp_flux_airgap / solve_FEA) ├── MagFEMM → COM调用 FEMM 4.2(Windows only) ├── MagElmer → 子进程调用 ElmerSolver │ ├── MagGetDP → 子进程调用 GetDP(继承MagElmer) │ ├── MagNGSolve → NGSolve Python API │ ├── MagNGSolve3D → 3D HCurl棱边元(继承MagElmer) │ └── MagPyFEM → 纯Python实现(继承MagElmer)
各求解器只需实现solve_FEA()、comp_flux_airgap()、get_path_save_fea()三个核心方法即可无缝接入系统。
3.4 核心模块交互流程
class SimulationWorkflow: def __init__(self, machine, solver_type="elmer"): self.machine = machine self.solver_type = solver_type self.solver = self._init_solver() def _init_solver(self): if self.solver_type == "elmer": return ElmerSolver() elif self.solver_type == "getdp": return GetDPSolver() else: return FEMMSolver() def run(self): """执行完整仿真流程""" # 1. 几何建模 geometry = self.machine.build_geometry() # 2. 网格生成 mesh = generate_mesh(geometry) # 3. 求解器配置 self.solver.configure(mesh, self.machine) # 4. 执行求解 results = self.solver.solve() # 5. 结果后处理 return self._post_process(results)
完整的五步弱耦合多物理场仿真流程:
Input (电流/转速激励) → Elec (电气等效电路: EEC_PMSM / EEC_SCIM) → Mag (磁场有限元: FEMM/Elmer/NGSolve/GetDP/PyFEM) → Force (电磁力: Maxwell应力张量法 ForceMT) → Struct (结构有限元: StructElmer) → Loss (损耗: Bertotti/Steinmetz/Joule) → Postproc (后处理与报告生成)
四、算法实现说明
4.1 有限元离散化
电机电磁场控制方程采用矢量位A法:
∇ × (1/μ · ∇ × A) = J
在二维(x-y)平面中,磁矢位A仅有z分量Az(x,y)非零,控制方程简化为标量泊松方程:
−ν (∂²Az/∂x² + ∂²Az/∂y²) = Jz
其中ν = 1/μ为磁阻率,Jz为z方向电流密度。有限元离散后得到线性方程组:
[K] {A} = {F}
其中全局刚度矩阵K由各三角形单元的刚度矩阵组装而成:
def assemble_stiffness_matrix(mesh, material_properties): """组装刚度矩阵""" from scipy import sparse K = sparse.lil_matrix((ndof, ndof)) for element in mesh.elements: # 计算单元刚度矩阵: Ke = [ν/(4Δ)] × (b·bᵀ + c·cᵀ) Ke = compute_element_stiffness(element, material_properties) # 组装到全局矩阵 for i, node_i in enumerate(element.nodes): for j, node_j in enumerate(element.nodes): K[node_i, node_j] += Ke[i, j] return K.tocsr()
边界条件:
4.2 自适应求解策略
class AdaptiveSolver: def __init__(self, tolerance=1e-6, max_iter=10): self.tolerance = tolerance self.max_iter = max_iter def solve(self, problem): """自适应有限元求解""" for iteration in range(self.max_iter): # 求解当前网格 solution = self._solve_once(problem) # 误差估计(基于残差或Zienkiewicz-Zhu方法) error = self._estimate_error(solution) if error < self.tolerance: return solution # 自适应加密(加密高误差区域) problem.refine_mesh(error) raise RuntimeError("未达到收敛标准")
4.3 电磁转矩计算
方法一:麦克斯韦应力张量法(气隙线积分)
Tem = L · rag²/μ₀ · ∫₀²π Br · Bt dθ
其中L为铁心长度,rag为气隙半径,μ₀为真空磁导率,Br为径向磁密,Bt为切向磁密。
方法二:虚功法(Virtual Work Principle)
Tem = ∂W/∂θ ≈ ΔW/Δθ, W = ½ ∫ A·J dV
def compute_torque(b_field, h_field, mesh, rotor_radius): """基于麦克斯韦应力张量法计算电磁转矩""" torque = 0.0 for element in mesh.airgap_elements: # 获取单元中心位置 r, theta = element.center # 计算麦克斯韦应力张量的切向分量 B_r, B_theta = b_field.radial, b_field.tangential H_r, H_theta = h_field.radial, h_field.tangential T_maxwell = r * (B_r * H_theta - B_theta * H_r) # 沿气隙圆周积分 torque += T_maxwell * element.area return torque
4.4 铁耗计算
三层递进损耗计算架构:
| | |
|---|
| | |
| | Pfe = Kh·f·Bα + Ke·f²·B² + Kex·f1.5·B1.5 |
| | |
其中Kh为磁滞损耗系数,Ke为涡流损耗系数,Kex为附加损耗系数,α为Steinmetz指数(1.6~2.0)。
五、技术优势与创新点
5.1 多求解器适配
class SolverAdapter: """求解器适配器模式:统一五种求解器接口""" def __init__(self, solver): self.solver = solver def solve(self, problem): """统一求解接口""" # 格式转换为求解器特定格式 input_data = self._convert_to_solver_format(problem) # 调用具体求解器 raw_result = self.solver.solve(input_data) # 结果标准化为统一数据结构 return self._convert_to_unified_format(raw_result)
求解设置窗口的弹出状态如下:
5.2 性能优化策略
5.3 与狄冲教授研究成果对比
根据狄冲团队在《电工技术学报》和《中国电机工程学报》发表的系列研究工作,本软件的求解器在以下方面达到现有水平:
5.4 容错导入机制
由于不同求解器依赖项差异较大,软件采用动态导入+异常兜底策略:
try: from ..Methods.Simulation.MagFEMM.solve_FEMM import solve_FEMMexcept ImportError as error: solve_FEMM = error # 调用时抛出,而非启动时崩溃
该设计确保即使缺少某个求解器依赖,软件的其他功能仍可正常使用。
六、应用案例
6.1 永磁同步电机分析(FEMM SPMSM_003)
以下以一个实际的表贴式永磁同步电机(SPMSM)设计案例,展示从参数化建模到有限元仿真再到结果后处理的完整链路。该案例使用 FEMM 求解器完成电磁仿真,保存于 D:\2023\Pyleecan\LEAF_MOTOR\2026_05_10-20h11min12s_FEMM_SPMSM_003。
电机参数:
|
|
|
|
|
|
|
|
|
| 以上为模型参数设定---下面进入瞬态求解周期和步长的设置 |
|
|
|
仿真配置:
仿真结果文件(路径前缀:D:\2023\Pyleecan\LEAF_MOTOR\2026_05_10-20h11min12s_FEMM_SPMSM_003\):
| |
|---|
SPMSM_003.png | |
flux as fct of angle_radial.png | |
flux as fct of angle_tangential.png | |
flux as fct of time_radial.png | |
flux as fct of time_tangential.png | |
flux FFT over wavenumber_radial.png | |
flux FFT over wavenumber_tangential.png | |
flux FFT over freq_radial.png | |
flux FFT over freq_tangential.png | |
flux 3D FFT_radial.png | |
flux 3D FFT_tangential.png | |
torque as fct of time.png | |
torque FFT over freq.png | |
Stator winding flux.png | |
|
|
| Elmer的结果可直接在后处理中显示...这里展示另一个模型的结果如下 |
|
|
6.2 FEMM求解器仿真流程(对应本案例)
本节以 FEMM_SPMSM_003 为例,展示 FEMM 求解器在具体电机模型上的实际调用流程:
# 加载已保存的SPMSM仿真模型from pyleecan.Functions.load import loadfrom pyleecan.Classes.Simu1 import Simu1from os.path import joinmodel_path = ( "D:/2023/Pyleecan/LEAF_MOTOR" "/2026_05_10-20h11min12s_FEMM_SPMSM_003" "/FEMM_SPMSM_003.json")simu = load(model_path) # 加载JSON定义的完整仿真模型# 查看电机类型print(f"电机类型: {simu.machine.name}")print(f"拓扑: {simu.machine.__class__.__name__}")# 执行有限元求解(调用FEMM COM接口)output = simu.run()# 提取核心性能指标Tem = output.mag.Tem_av # 平均电磁转矩max_B = output.mag.B_max # 最大磁通密度Phi_wind = output.mag.Phi_wind # 三相绕组磁链print(f"平均电磁转矩: {Tem:.4f} N·m")print(f"最大磁通密度: {max_B:.4f} T")print(f"绕组磁链: {Phi_wind}")
六步求解流程对应本案例:
Step 1: openfemm_Windows() → COM启动FEMM 4.2进程 Step 2: draw_FEMM() → 绘制SPMSM几何(6槽4极) ├── Stator: SlotW22槽形, Rext=0.05m, Rint=0.028m ├── Rotor: SlotM11表贴磁钢, Rext=0.02m ├── Magnet: Br=1.0T, 径向充磁 └── Airgap: 滑动带法, 气隙8mm Step 3: create_FEMM_materials() → 分配M400-50A BH曲线+铜线属性 Step 4: create_FEMM_circuit() → 设置3相Y接绕组(10匝/线圈) Step 5: create_FEMM_boundary() → 半周期对称边界 + Dirichlet外边界 Step 6: mi_analyze() → 48时间步 × 12核并行求解 ├── scalars.dat → 转矩波形输出 ├── lines.dat → 气隙Br/Bt输出 └── Result.mat → 磁链结果存储
6.3 Elmer求解器的完整调用管道
Pyleecan将Elmer求解器的调用完整封装为自动化管道:
Step 1: draw_GMSH() → 生成 .msh 网格文件 Step 2: gen_elmer_mesh() → ElmerGrid 2 2 转换为Elmer格式 Step 3: write_sif() → 生成 pyleecan_elmer.sif ├── Header: 网格路径 ├── Materials: B-H曲线(.pmf)、磁钢属性 ├── Bodies: 定子轭/齿、转子轭/齿、磁钢、绕组、气隙 ├── Equations: WhitneyAVSolver(磁矢位) ├── Solvers: │ ├── CalcFields → B/H/J计算 │ ├── ResultOutputSolver → VTU输出 │ ├── SaveLine → 气隙 Br/Bt │ └── SaveScalars → 转矩/能量 └── BCs: 周期边界 + Dirichlet 外边界 Step 4: ElmerSolver_mpi -n N pyleecan_elmer.sif → 求解 Step 5: 结果提取: ├── step_t*.vtu → PyVista 场图渲染 ├── scalars.dat → 转矩波形 └── lines.dat → 气隙 Br/Bt Step 6: comp_flux_airgap() → 绕组磁链和感应电势
七、结论与展望
基于Python开源生态开发的电机磁路有限元分析软件,在保证计算精度的同时,具备以下核心优势:
- 低成本:完全开源,Apache 2.0许可证,无任何License费用
- 高扩展性:六层模块化架构+代码生成引擎,支持快速扩展新型电机拓扑和求解器
- 跨平台:支持Windows/Linux/macOS(特定求解器除外)
- 求解器多元化:五种求解器统一接口,从纯Python自研到高性能并行求解一应俱全
- 二次开发友好:纯Python接口,300+类,完整API文档,便于集成到其他系统
- 自动化闭环:从参数化建模→网格生成→求解控制→后处理→报告生成的完整自动化流程
未来研究方向:
- 多物理场耦合分析深化(电磁-热-结构-噪声全链耦合)
- ONELAB/Elmer求解器接口的进一步优化与性能提升
正如狄冲教授在研究中所述:"开源CAE工具为电机设计带来了新的机遇,关键在于如何将学术研究成果转化为工程应用。"本文基于Pyleecan开源项目的研发实践正是这一理念的探索与践行,希望通过开源社区的力量,共同推动电机设计仿真技术的自主可控与持续进步。
八、控制模块未来规划与系统级仿真应用价值
8.1 从电磁仿真到系统级控制的一体化平台
传统电机设计流程中,电磁仿真与驱动控制开发往往是割裂的两个阶段——电磁设计完成后,控制算法需在另一套工具链中重新建模调试,效率低下且难以实现跨域优化。Python强大的集成控制仿真能力为打破这一壁垒提供了可能。
本软件未来的核心发展方向之一,是构建覆盖"电磁设计→控制算法开发→硬件在环验证→AI智能优化"全链条的一体化平台架构:
电机电磁有限元仿真 (Pyleecan/Elmer/FEMM) ↓ 电机等效电路与系统建模 ↓ 控制算法开发 (SVPWM/FOC/DTC) ↓ 软件在环仿真 (SiL) → 硬件在环测试 (HiL) ↓ SimpleFOCStudio 固件生成 → 硬件部署 ↓ AI智能优化 (DEAP/贝叶斯)
8.2 从FOC算法到硬件部署的全流程贯通
本软件规划深度集成以下开源驱动技术栈:
| | |
|---|
| MotorBridge Python SDK | 电机驱动硬件抽象层,提供统一的PWM/编码器/电流采样接口 | |
| SimpleFOC | 开源FOC算法库,支持磁场定向控制、电流环/速度环/位置环 | |
| SimpleFOCStudio | 图形化参数整定与固件生成工具,一键将驱动算法烧录到硬件 | |
| ACMSimPy | 异步电机高精度动态仿真模型,支持转子磁场定向和直接转矩控制 | |
其中SimpleFOCStudio的引入将实现"仿真参数→驱动固件"的无缝转换——用户在Pyleecan中完成电机设计后,调用SimpleFOCStudio自动生成适配该电机的FOC固件,可快速部署到STM32/ESP32等主流微控制器上,实现从仿真到硬件运行的全链路打通。
ACMSimPy(在集成开发中)提供了异步电机高精度动态仿真能力,支持:
- 鼠笼式/绕线式异步电机在dq坐标系下的动态数学模型
- 转子磁场定向控制(RFOC)与直接转矩控制(DTC)算法验证
8.3 SVPWM与实时仿真高级功能
规划中的系统级仿真模块将支持以下高级功能:
SVPWM(空间矢量脉宽调制)全流程支持:
图形界面(GUI)操作:
8.4 C语言加速与企业级解决方案
针对工业级应用对仿真速度的严苛要求,本软件规划提供:
- C语言加速版本:将核心有限元求解和控制系统仿真热点模块(刚度矩阵组装、SVPWM调制、Park/Clarke变换)以C扩展重写,通过pybind11提供Python调用接口
- 计算效率提升:预计C加速版本相比纯Python实现可获得5~10倍速度提升
- 可定制固化:支持将企业特定电机拓扑和控制算法编译为独立可执行程序包,部署于产线检测设备或嵌入式测试平台
- 行业专项解决方案:面向电动汽车驱动电机、工业伺服电机、家用电器电机等细分行业,提供预配置的行业参数模板与算法库
8.5 基于DEAP的AI智能设计Agent
本软件基于DEAP等进化算法框架,规划构建面向电机企业的AI智能设计工具链:
# 基于DEAP的多目标自动优化框架(规划)from deap import base, creator, tools, algorithmscreator.create("FitnessMulti", base.Fitness, weights=(-1.0, 1.0))creator.create("Individual", list, fitness=creator.FitnessMulti)toolbox = base.Toolbox()toolbox.register("individual", generate_motor_design, topology_set=["IPMSM", "SPMSM", "SynRM"], param_ranges={"pole_pairs": [2,8], "slots": [12,72], "magnet_thickness": [2e-3, 8e-3]})toolbox.register("evaluate", multi_physics_objective, targets=["torque_density", "efficiency", "cost", "weight"])toolbox.register("mate", tools.cxSimulatedBinaryBounded)toolbox.register("mutate", tools.mutPolynomialBounded)# NSGA-II 多目标进化population = toolbox.population(n=100)algorithms.eaMuPlusLambda(population, toolbox, mu=100, lambda_=200, cxpb=0.7, mutpb=0.2, ngen=50)
以DEAP为核心,可进一步将上述全流程部署为电机企业的智能设计SKILL或AGENT工具:
这一架构将为未来的电机AI智能设计探索一条开放式知识融合和跨模块业务集成的基础平台,企业可在该平台上:
- 将资深工程师的设计经验编码为可自动执行的规则与策略
- 通过跨模块任务编排实现设计-仿真-优化-测试的全流程自动化
- 以Agent协作的方式持续优化电机设计方案,逐步逼近帕累托前沿
这正是狄冲教授所说的"将学术研究成果转化为工程应用"的理想实践,也是开源社区与企业协作、共同推动电机设计智能化转型的可行路径。
参考文献
- 狄冲, 鲍晓华, 潘晋, 王春雨. 基于Elmer开源有限元平台的铁氧体辅助同步磁阻电机的建模和分析[J]. 电工技术学报, 2022, 37(5): 1136-1144.
- 狄冲, 等. 基于GetDP的电机电磁场有限元分析[J]. 电机与控制学报, 2023, 27(5): 1-8.
- 狄冲, 等. 电动汽车驱动电机多物理场耦合仿真研究[J]. 中国电机工程学报, 2022, 42(18): 6456-6465.
- Elmer FEM. Open Source Finite Element Software for Multiphysical Problems[EB/OL]. https://www.elmerfem.org/
- ONELAB Project. Open Numerical Engineering LABoratory[EB/OL]. https://onelab.info/
- Pyleecan Developers. Pyleecan: Python Library for Electrical Engineering Computational Analysis[EB/OL]. https://github.com/Eomys/pyleecan
- Pile R, Le Besnerais J, Parent G, et al. Analytical study of air-gap surface force - application to electrical machines[J]. Open Physics, 2020, 18(1): 658-673.