韓 巍,胡義軍,張文敏,牛超群
基于ironpython的Maxwell軟件二次開發(fā)在永磁電機設(shè)計中的應(yīng)用
韓 巍,胡義軍,張文敏,牛超群
(武漢船用電力推進裝置研究所,武漢 430064)
本文介紹了基于ironpython語言對maxwell軟件從模型建立、邊界設(shè)定、激勵加載、網(wǎng)格剖分、求解以及結(jié)果后處理的二次開發(fā)的方法步驟,并以一臺90kW永磁電機為例,利用開發(fā)的軟件完成了從建模、激勵加載、優(yōu)化變量的設(shè)置到進一步后處理結(jié)果選擇優(yōu)化方案。整個設(shè)計過程快速便捷,顯著地提高了電機設(shè)計效率,具有一定的工程應(yīng)用價值。
永磁電機 模型建立 二次開發(fā) Ironpython Maxwell software
永磁電機已經(jīng)在各行各業(yè)得到了廣泛應(yīng)用,其結(jié)構(gòu)形式多樣。對于設(shè)計人員來說,永磁電機設(shè)計,簡單地依賴磁路設(shè)計,需要積累大量的數(shù)據(jù),以便獲取精確度高的經(jīng)驗系數(shù)。這種設(shè)計方式無法滿足設(shè)計需要。隨著有限元法的廣泛應(yīng)用,已經(jīng)可以做到不依賴經(jīng)驗系數(shù)完成電機電磁設(shè)計,而且精度更高,設(shè)計結(jié)果與試驗對比更加接近。但是應(yīng)用有限元法設(shè)計電機流程繁瑣,耗時長,需要根據(jù)每臺電機的參數(shù),完成建模、邊界設(shè)定、激勵加載、網(wǎng)格剖分等重復(fù)性工作,會占用設(shè)計人員的大量時間,不利于快速得到設(shè)計方案。為了提高設(shè)計效率,文章給出了借助于ironpython對Maxwell進行二次開發(fā)的方法,方便設(shè)計人員更加快捷方便的完成設(shè)計。
本文基于ironpython對Maxwell軟件進行了二次開發(fā),從電機定子模型、轉(zhuǎn)子模型、邊界設(shè)定、激勵加載,再到后處理,進行參數(shù)化、程序化,并且針對定子槽型以及轉(zhuǎn)子結(jié)構(gòu)模型進行選型,設(shè)計過程中繞組的相數(shù)、節(jié)距、每槽導(dǎo)體數(shù)等參數(shù)不受限制,僅需輸入相應(yīng)的參數(shù)即可完成設(shè)計。據(jù)此,完成一款電機的設(shè)計計算從模型建立、邊界設(shè)定、激勵加載、網(wǎng)格剖分到求解設(shè)置僅僅需要幾分鐘,大大縮短了工程設(shè)計周期,提高了設(shè)計人員工作效率。
利用ironpython對Maxwell進行二次開發(fā),可以分為以下幾個模塊,包括變量定義、定子模型、轉(zhuǎn)子模型、邊界、激勵、網(wǎng)格設(shè)置及求解,結(jié)果后處理等。其中,定轉(zhuǎn)子分開建模一方面便于建模過程中問題的查找,另一方面永磁電機轉(zhuǎn)子磁極類型多樣,分開建模,便于轉(zhuǎn)子磁極的選型,可以根據(jù)應(yīng)用環(huán)境不同,選擇不同的轉(zhuǎn)子類型。
程序設(shè)計流程如下:
圖1 設(shè)計流程圖
Maxwell中變量分為局部變量和全局變量,局部變量和全局變量的定義都是用命令oDesign. ChangeProperty來完成,通過參數(shù)加符號$加以區(qū)別,參數(shù)前面帶有“$”即為全局變量,否則為局部變量,以定子內(nèi)徑Di1為例,如果利用ironpython在Maxwell軟件中定義全局變量程序如下:
oDesign.ChangeProperty(
[
"NAME:AllTabs",
[
"NAME:LocalVariableTab",
[
"NAME:PropServers",
"LocalVariables"
],
[
"NAME:NewProps",
[
"NAME: $Di1",
"PropType:=" , "VariableProp",
"UserDef:=", True,
"Value:=", Di1
]
]
]
定子鐵心模型的基本參數(shù)如表1所示,鐵心建??衫肕axwell自帶的 UDP-Rxmprt-SlotCore,該模型將電機常用的典型的幾種槽型都包含在內(nèi),可以滿足設(shè)計人員絕大部分需要,還可以在基礎(chǔ)槽型上進行自定義修改。故直接應(yīng)用其對應(yīng)的程序函數(shù)oEditor.CreateUserDefinedPart即可。
表1 定子鐵心基本參數(shù)表
定子線圈建模,具體程序如:
oEditor.CreateRectangle(
[
"NAME:RectangleParameters",
"IsCovered:=", True,
"XStart:=", "-coil_w/2",
"YStart:=", "Di1/2+hs0+hs1",
"ZStart:=", "0mm",
"Width:=", "coil_w",
"Height:=", "coil_h",
"WhichAxis:=", "Z"
],
程序包含線寬coil_w、線高coil_h、槽數(shù)slot_ num等參數(shù),實現(xiàn)了程序的通用性,再次使用時,僅僅改變變量的值,即可快速實現(xiàn)模型建立。
永磁電機轉(zhuǎn)子磁極類型多樣,針對不同的類型形成不同的程序,可以通過條件語句來調(diào)用不同的轉(zhuǎn)子模型程序。例如,轉(zhuǎn)子"類型1"對應(yīng)程序名為rotor1的程序,轉(zhuǎn)子"類型2"對應(yīng)程序名為rotor2的程序,諸如此類。程序如下:
if rotortype=="類型1":
oDesktop.RunScript("e:\Maxwell\python\rotor1.py")
elif rotortype=="類型2":
oDesktop.RunScript("e:\Maxwell\python\rotor2.py")
永磁電機極數(shù)較多,為了簡化模型方便分析,往往建立模型時選取一對極,處理方法為建立局部坐標(biāo),利用局部坐標(biāo)系數(shù)對全模型進行切割,形成一對極模型。轉(zhuǎn)子模型的建立和定子模型類似,可參照定子模型進行修改。此處不再重復(fù)。
一對極的永磁電機一般要設(shè)置外邊界矢量為0邊界以及模型周期對稱邊界,其主要是通過選中外圍邊界線的ID號實現(xiàn),以矢量為0邊界為例,程序如下,首先根據(jù)位置坐標(biāo)定位邊界所在的邊的ID號,然后將其賦予矢量為0。
激勵設(shè)置時,繞組的分相工作量較大,電機的繞組連接形式多樣,一般常見的相帶為按照A、Z、B、X、C、Y排列的60°相帶,可以根據(jù)繞組所在位置編號以及每極每相槽數(shù),通過循環(huán)程序來定位線圈所在的相帶。此外,為了保證繞組不受相數(shù)限制可以為十二相、六相以及三相等,其電流激勵加載可以通過讀取不同的外電路*.sph文件來實現(xiàn)。
網(wǎng)格設(shè)置一般僅需要選擇對應(yīng)面物體的名稱,給出最大網(wǎng)格長度。以永磁體為例,設(shè)其最大網(wǎng)格長度為永磁體厚度mag_h的三分之一。
計算完成后,有些結(jié)果需要經(jīng)過數(shù)據(jù)處理后以*.cvs的形式存儲。以相電壓為例,相電壓波形進行FFT后,數(shù)據(jù)以Uamag.csv的形式保存,程序如下:
oModule.CreateReport("XY Plot 1", "Transient", "Rectangular Plot", "Setup1 : Transient",
[
"Domain:=", "Spectral",
"StartTime:=" , 1/Ifrequence/step_num*2,
"EndTime:=" , 1/Ifrequence+1/Ifrequence/step_num*2,
"MaxHarmonic:=" , 101,
"NumSamples:=", step_num+1,
"WindowType:=", 0,
"Normalize:=", 0,
"Periodic:=", 0,
"FundementalFreq:=", Ifrequence,
"CutoffFreq:=", 0
],
[
"Freq:=", ["All"],
"Di1:=", ["Nominal"],
],
[
"X Component:=", "Freq",
"Y Component:=", ["mag (NodeVoltage(IVa1))"]
], [])
oModule.ExportToFile("XY Plot 3", "E:/Maxwell//opt/Uamag.csv")
程序中變量Ifrequece表示電源頻率;step_num表示一個電周期的計算步數(shù)。這里只列舉了Freq和Dil,需要其他相關(guān)參數(shù)在程序相同位置添加即可。
以一臺90 kW永磁電機為例,借助ironpython對Maxwell軟件二次開發(fā)的程序,對永磁磁極進行優(yōu)化設(shè)計計算,并且對設(shè)計計算的結(jié)果人工參與判斷、選擇滿足設(shè)計要求的優(yōu)化方案,該永磁電機具體參數(shù)如表2所示。
表2 90 kW永磁電機電磁設(shè)計參數(shù)
根據(jù)表2的設(shè)計參數(shù),完成具體參數(shù)變量的輸入后,從模型建立、加載邊界激勵、設(shè)置優(yōu)化變量及目標(biāo)變量求解,一鍵完成,得到的永磁電機模型如圖2所示:
圖2 永磁電機模型
優(yōu)化設(shè)計過程以偏心距和極弧系數(shù)為設(shè)計變量,以電磁轉(zhuǎn)矩脈動量最小、電磁轉(zhuǎn)矩滿足設(shè)計要求為目標(biāo)變量,以氣隙磁密、功率因數(shù)為作為參考變量,按照上述程序格式進行修改程序即可。
計算完成后,需要輸出多個優(yōu)化計算的結(jié)果,包括電磁轉(zhuǎn)矩平均值、電磁轉(zhuǎn)矩峰峰值、電磁轉(zhuǎn)矩脈動量等,將這些結(jié)果保存在指定的工作文件夾,通過python編寫的界面程序進一步讀取計算結(jié)果,并對結(jié)果進行處理后呈現(xiàn)出來,呈現(xiàn)的優(yōu)化設(shè)計結(jié)果截圖如圖3所示。
圖3 優(yōu)化方案列表截圖
圖4 空載徑向氣隙磁密
設(shè)計人員可以根據(jù)目標(biāo)變量電磁轉(zhuǎn)矩脈動的計算結(jié)果,結(jié)合電機的功率因數(shù)以及氣隙磁磁密的計算結(jié)果,綜合分析選擇出最優(yōu)的方案。
優(yōu)化過程中的一些曲線以及分布云圖等也可以圖片的形式存儲,方便后期撰寫報告讀取,90 kW永磁電機優(yōu)化的過程中氣隙磁密分布圖及氣隙磁密的傅里葉分析圖如圖4、5所示。
圖5 空載氣隙磁密FFT圖
基于ironpython的maxwell軟件的二次開發(fā),實現(xiàn)了永磁電機從模型建立、邊界設(shè)置、激勵加載、網(wǎng)格剖分以及求解設(shè)置的參數(shù)化設(shè)計,一方面減少了設(shè)計人員的重復(fù)性工作,提高了設(shè)計人員的工作效率;另一方面通過對maxwell的二次開發(fā),設(shè)計人員僅需輸入設(shè)計參數(shù),即可完成設(shè)計,整個過程避免了設(shè)計過程中人為操作的錯誤,提高了設(shè)計邊界的準(zhǔn)確性;此外,二次開發(fā)的過程集中設(shè)計人員多年的設(shè)計經(jīng)驗,通過二次開發(fā)使得設(shè)計過程更加固化統(tǒng)一,不會因為設(shè)計人員習(xí)慣操作不同,導(dǎo)致設(shè)計結(jié)果出現(xiàn)偏差。
[1] 唐任遠(yuǎn)等.現(xiàn)代永磁電機[M]. 北京: 機械工業(yè)出版社, 2000.
[2] 姚維康, 徐余法, 黃厚佳, 閆鑫洋. 基于VBA的Maxwell二次開發(fā)在無刷交流勵磁機電磁計算中的應(yīng)用[J]. 電機與控制應(yīng)用, 2018, 45(12): 82-87.
[3] 徐媛媛, 葛紅娟, 荊巖. 永磁同步電機偏心磁極優(yōu)化設(shè)計. 哈爾濱工程大學(xué)學(xué)報[J]. 2013, 34(7): 873-877.
The Secondary Development of Maxwell Software Based on Ironpython and its Application in a Permanent Motor Design
Han Wei, Hu Yijun, Zhang Wenmin, Niu Chaoqun
( Wuhan Marine Electric Propulsion Research Institute, Wuhan 430064, China )
TM351
A
1003-4862(2021)07-0014-04
2021-05-13
韓?。?977-),男,高工。研究方向:永磁電機工程設(shè)計研究。E-mail:hw1208@sina.com