韓 巍,胡義軍,張文敏,牛超群
基于ironpython的Maxwell軟件二次開(kāi)發(fā)在永磁電機(jī)設(shè)計(jì)中的應(yīng)用
韓 巍,胡義軍,張文敏,牛超群
(武漢船用電力推進(jìn)裝置研究所,武漢 430064)
本文介紹了基于ironpython語(yǔ)言對(duì)maxwell軟件從模型建立、邊界設(shè)定、激勵(lì)加載、網(wǎng)格剖分、求解以及結(jié)果后處理的二次開(kāi)發(fā)的方法步驟,并以一臺(tái)90kW永磁電機(jī)為例,利用開(kāi)發(fā)的軟件完成了從建模、激勵(lì)加載、優(yōu)化變量的設(shè)置到進(jìn)一步后處理結(jié)果選擇優(yōu)化方案。整個(gè)設(shè)計(jì)過(guò)程快速便捷,顯著地提高了電機(jī)設(shè)計(jì)效率,具有一定的工程應(yīng)用價(jià)值。
永磁電機(jī) 模型建立 二次開(kāi)發(fā) Ironpython Maxwell software
永磁電機(jī)已經(jīng)在各行各業(yè)得到了廣泛應(yīng)用,其結(jié)構(gòu)形式多樣。對(duì)于設(shè)計(jì)人員來(lái)說(shuō),永磁電機(jī)設(shè)計(jì),簡(jiǎn)單地依賴(lài)磁路設(shè)計(jì),需要積累大量的數(shù)據(jù),以便獲取精確度高的經(jīng)驗(yàn)系數(shù)。這種設(shè)計(jì)方式無(wú)法滿(mǎn)足設(shè)計(jì)需要。隨著有限元法的廣泛應(yīng)用,已經(jīng)可以做到不依賴(lài)經(jīng)驗(yàn)系數(shù)完成電機(jī)電磁設(shè)計(jì),而且精度更高,設(shè)計(jì)結(jié)果與試驗(yàn)對(duì)比更加接近。但是應(yīng)用有限元法設(shè)計(jì)電機(jī)流程繁瑣,耗時(shí)長(zhǎng),需要根據(jù)每臺(tái)電機(jī)的參數(shù),完成建模、邊界設(shè)定、激勵(lì)加載、網(wǎng)格剖分等重復(fù)性工作,會(huì)占用設(shè)計(jì)人員的大量時(shí)間,不利于快速得到設(shè)計(jì)方案。為了提高設(shè)計(jì)效率,文章給出了借助于ironpython對(duì)Maxwell進(jìn)行二次開(kāi)發(fā)的方法,方便設(shè)計(jì)人員更加快捷方便的完成設(shè)計(jì)。
本文基于ironpython對(duì)Maxwell軟件進(jìn)行了二次開(kāi)發(fā),從電機(jī)定子模型、轉(zhuǎn)子模型、邊界設(shè)定、激勵(lì)加載,再到后處理,進(jìn)行參數(shù)化、程序化,并且針對(duì)定子槽型以及轉(zhuǎn)子結(jié)構(gòu)模型進(jìn)行選型,設(shè)計(jì)過(guò)程中繞組的相數(shù)、節(jié)距、每槽導(dǎo)體數(shù)等參數(shù)不受限制,僅需輸入相應(yīng)的參數(shù)即可完成設(shè)計(jì)。據(jù)此,完成一款電機(jī)的設(shè)計(jì)計(jì)算從模型建立、邊界設(shè)定、激勵(lì)加載、網(wǎng)格剖分到求解設(shè)置僅僅需要幾分鐘,大大縮短了工程設(shè)計(jì)周期,提高了設(shè)計(jì)人員工作效率。
利用ironpython對(duì)Maxwell進(jìn)行二次開(kāi)發(fā),可以分為以下幾個(gè)模塊,包括變量定義、定子模型、轉(zhuǎn)子模型、邊界、激勵(lì)、網(wǎng)格設(shè)置及求解,結(jié)果后處理等。其中,定轉(zhuǎn)子分開(kāi)建模一方面便于建模過(guò)程中問(wèn)題的查找,另一方面永磁電機(jī)轉(zhuǎn)子磁極類(lèi)型多樣,分開(kāi)建模,便于轉(zhuǎn)子磁極的選型,可以根據(jù)應(yīng)用環(huán)境不同,選擇不同的轉(zhuǎn)子類(lèi)型。
程序設(shè)計(jì)流程如下:
圖1 設(shè)計(jì)流程圖
Maxwell中變量分為局部變量和全局變量,局部變量和全局變量的定義都是用命令oDesign. ChangeProperty來(lái)完成,通過(guò)參數(shù)加符號(hào)$加以區(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,該模型將電機(jī)常用的典型的幾種槽型都包含在內(nèi),可以滿(mǎn)足設(shè)計(jì)人員絕大部分需要,還可以在基礎(chǔ)槽型上進(jìn)行自定義修改。故直接應(yīng)用其對(duì)應(yīng)的程序函數(shù)oEditor.CreateUserDefinedPart即可。
表1 定子鐵心基本參數(shù)表
定子線(xiàn)圈建模,具體程序如:
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"
],
程序包含線(xiàn)寬coil_w、線(xiàn)高coil_h、槽數(shù)slot_ num等參數(shù),實(shí)現(xiàn)了程序的通用性,再次使用時(shí),僅僅改變變量的值,即可快速實(shí)現(xiàn)模型建立。
永磁電機(jī)轉(zhuǎn)子磁極類(lèi)型多樣,針對(duì)不同的類(lèi)型形成不同的程序,可以通過(guò)條件語(yǔ)句來(lái)調(diào)用不同的轉(zhuǎn)子模型程序。例如,轉(zhuǎn)子"類(lèi)型1"對(duì)應(yīng)程序名為rotor1的程序,轉(zhuǎn)子"類(lèi)型2"對(duì)應(yīng)程序名為rotor2的程序,諸如此類(lèi)。程序如下:
if rotortype=="類(lèi)型1":
oDesktop.RunScript("e:\Maxwell\python\rotor1.py")
elif rotortype=="類(lèi)型2":
oDesktop.RunScript("e:\Maxwell\python\rotor2.py")
永磁電機(jī)極數(shù)較多,為了簡(jiǎn)化模型方便分析,往往建立模型時(shí)選取一對(duì)極,處理方法為建立局部坐標(biāo),利用局部坐標(biāo)系數(shù)對(duì)全模型進(jìn)行切割,形成一對(duì)極模型。轉(zhuǎn)子模型的建立和定子模型類(lèi)似,可參照定子模型進(jìn)行修改。此處不再重復(fù)。
一對(duì)極的永磁電機(jī)一般要設(shè)置外邊界矢量為0邊界以及模型周期對(duì)稱(chēng)邊界,其主要是通過(guò)選中外圍邊界線(xiàn)的ID號(hào)實(shí)現(xiàn),以矢量為0邊界為例,程序如下,首先根據(jù)位置坐標(biāo)定位邊界所在的邊的ID號(hào),然后將其賦予矢量為0。
激勵(lì)設(shè)置時(shí),繞組的分相工作量較大,電機(jī)的繞組連接形式多樣,一般常見(jiàn)的相帶為按照A、Z、B、X、C、Y排列的60°相帶,可以根據(jù)繞組所在位置編號(hào)以及每極每相槽數(shù),通過(guò)循環(huán)程序來(lái)定位線(xiàn)圈所在的相帶。此外,為了保證繞組不受相數(shù)限制可以為十二相、六相以及三相等,其電流激勵(lì)加載可以通過(guò)讀取不同的外電路*.sph文件來(lái)實(shí)現(xiàn)。
網(wǎng)格設(shè)置一般僅需要選擇對(duì)應(yīng)面物體的名稱(chēng),給出最大網(wǎng)格長(zhǎng)度。以永磁體為例,設(shè)其最大網(wǎng)格長(zhǎng)度為永磁體厚度mag_h的三分之一。
計(jì)算完成后,有些結(jié)果需要經(jīng)過(guò)數(shù)據(jù)處理后以*.cvs的形式存儲(chǔ)。以相電壓為例,相電壓波形進(jìn)行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表示一個(gè)電周期的計(jì)算步數(shù)。這里只列舉了Freq和Dil,需要其他相關(guān)參數(shù)在程序相同位置添加即可。
以一臺(tái)90 kW永磁電機(jī)為例,借助ironpython對(duì)Maxwell軟件二次開(kāi)發(fā)的程序,對(duì)永磁磁極進(jìn)行優(yōu)化設(shè)計(jì)計(jì)算,并且對(duì)設(shè)計(jì)計(jì)算的結(jié)果人工參與判斷、選擇滿(mǎn)足設(shè)計(jì)要求的優(yōu)化方案,該永磁電機(jī)具體參數(shù)如表2所示。
表2 90 kW永磁電機(jī)電磁設(shè)計(jì)參數(shù)
根據(jù)表2的設(shè)計(jì)參數(shù),完成具體參數(shù)變量的輸入后,從模型建立、加載邊界激勵(lì)、設(shè)置優(yōu)化變量及目標(biāo)變量求解,一鍵完成,得到的永磁電機(jī)模型如圖2所示:
圖2 永磁電機(jī)模型
優(yōu)化設(shè)計(jì)過(guò)程以偏心距和極弧系數(shù)為設(shè)計(jì)變量,以電磁轉(zhuǎn)矩脈動(dòng)量最小、電磁轉(zhuǎn)矩滿(mǎn)足設(shè)計(jì)要求為目標(biāo)變量,以氣隙磁密、功率因數(shù)為作為參考變量,按照上述程序格式進(jìn)行修改程序即可。
計(jì)算完成后,需要輸出多個(gè)優(yōu)化計(jì)算的結(jié)果,包括電磁轉(zhuǎn)矩平均值、電磁轉(zhuǎn)矩峰峰值、電磁轉(zhuǎn)矩脈動(dòng)量等,將這些結(jié)果保存在指定的工作文件夾,通過(guò)python編寫(xiě)的界面程序進(jìn)一步讀取計(jì)算結(jié)果,并對(duì)結(jié)果進(jìn)行處理后呈現(xiàn)出來(lái),呈現(xiàn)的優(yōu)化設(shè)計(jì)結(jié)果截圖如圖3所示。
圖3 優(yōu)化方案列表截圖
圖4 空載徑向氣隙磁密
設(shè)計(jì)人員可以根據(jù)目標(biāo)變量電磁轉(zhuǎn)矩脈動(dòng)的計(jì)算結(jié)果,結(jié)合電機(jī)的功率因數(shù)以及氣隙磁磁密的計(jì)算結(jié)果,綜合分析選擇出最優(yōu)的方案。
優(yōu)化過(guò)程中的一些曲線(xiàn)以及分布云圖等也可以圖片的形式存儲(chǔ),方便后期撰寫(xiě)報(bào)告讀取,90 kW永磁電機(jī)優(yōu)化的過(guò)程中氣隙磁密分布圖及氣隙磁密的傅里葉分析圖如圖4、5所示。
圖5 空載氣隙磁密FFT圖
基于ironpython的maxwell軟件的二次開(kāi)發(fā),實(shí)現(xiàn)了永磁電機(jī)從模型建立、邊界設(shè)置、激勵(lì)加載、網(wǎng)格剖分以及求解設(shè)置的參數(shù)化設(shè)計(jì),一方面減少了設(shè)計(jì)人員的重復(fù)性工作,提高了設(shè)計(jì)人員的工作效率;另一方面通過(guò)對(duì)maxwell的二次開(kāi)發(fā),設(shè)計(jì)人員僅需輸入設(shè)計(jì)參數(shù),即可完成設(shè)計(jì),整個(gè)過(guò)程避免了設(shè)計(jì)過(guò)程中人為操作的錯(cuò)誤,提高了設(shè)計(jì)邊界的準(zhǔn)確性;此外,二次開(kāi)發(fā)的過(guò)程集中設(shè)計(jì)人員多年的設(shè)計(jì)經(jīng)驗(yàn),通過(guò)二次開(kāi)發(fā)使得設(shè)計(jì)過(guò)程更加固化統(tǒng)一,不會(huì)因?yàn)樵O(shè)計(jì)人員習(xí)慣操作不同,導(dǎo)致設(shè)計(jì)結(jié)果出現(xiàn)偏差。
[1] 唐任遠(yuǎn)等.現(xiàn)代永磁電機(jī)[M]. 北京: 機(jī)械工業(yè)出版社, 2000.
[2] 姚維康, 徐余法, 黃厚佳, 閆鑫洋. 基于VBA的Maxwell二次開(kāi)發(fā)在無(wú)刷交流勵(lì)磁機(jī)電磁計(jì)算中的應(yīng)用[J]. 電機(jī)與控制應(yīng)用, 2018, 45(12): 82-87.
[3] 徐媛媛, 葛紅娟, 荊巖. 永磁同步電機(jī)偏心磁極優(yōu)化設(shè)計(jì). 哈爾濱工程大學(xué)學(xué)報(bào)[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-),男,高工。研究方向:永磁電機(jī)工程設(shè)計(jì)研究。E-mail:hw1208@sina.com