高欽和, 董家臣, 邵亞軍, 牛海龍, 陳志翔
(火箭軍工程大學(xué) 二系,西安 710025)
電動(dòng)機(jī)種類繁多,參數(shù)變化和動(dòng)態(tài)性能分析復(fù)雜,在進(jìn)行特性分析時(shí),常給電動(dòng)機(jī)設(shè)計(jì)和科研教學(xué)工作帶來諸多不便。傳統(tǒng)教學(xué)方法較難實(shí)現(xiàn)靈活設(shè)置電動(dòng)機(jī)參數(shù)的要求,不易于分析過程的直觀表述。
為高效獲取對(duì)電動(dòng)機(jī)特性的理解,提升教學(xué)實(shí)踐效果,許多科研工作者針對(duì)電動(dòng)機(jī)特性設(shè)計(jì)了虛擬實(shí)驗(yàn)平臺(tái)。[1-3]但這些平臺(tái)大多只針對(duì)一種實(shí)驗(yàn)特性,界面的優(yōu)化也做得不足,缺乏較好的人機(jī)交互性。本文基于Matlab/GUI開發(fā)了用于電動(dòng)機(jī)特性分析的虛擬實(shí)驗(yàn)平臺(tái)。該平臺(tái)集成了不同種類電動(dòng)機(jī)的多種實(shí)驗(yàn)特性仿真功能,用戶在交互界面上進(jìn)行電動(dòng)機(jī)類型選擇、運(yùn)行參數(shù)設(shè)置等操作可實(shí)現(xiàn)相關(guān)特性的Simulink模型調(diào)用、初始參數(shù)設(shè)置、仿真圖顯示、運(yùn)行結(jié)果輸出、特性曲線繪制等功能,使電動(dòng)機(jī)特性分析更加方便高效;對(duì)平臺(tái)界面進(jìn)行優(yōu)化,能夠?qū)崿F(xiàn)GUI界面互調(diào)、鼠標(biāo)檢測(cè)、特性介紹等功能,使得界面實(shí)用性更強(qiáng)。
以三相異步電動(dòng)機(jī)能耗制動(dòng)特性分析實(shí)例對(duì)虛擬實(shí)驗(yàn)平臺(tái)進(jìn)行驗(yàn)證,得到了特性曲線和穩(wěn)態(tài)運(yùn)行值,體現(xiàn)出該平臺(tái)在電動(dòng)機(jī)特性分析及仿真上具有系統(tǒng)化、便捷化、直觀化的優(yōu)勢(shì)。結(jié)果表明,該平臺(tái)為電動(dòng)機(jī)學(xué)科教學(xué)效率的提高帶來便捷。
虛擬實(shí)驗(yàn)平臺(tái)要實(shí)現(xiàn)電動(dòng)機(jī)特性分析的多項(xiàng)內(nèi)容,設(shè)計(jì)的平臺(tái)功能如圖1所示。
打開平臺(tái)首先進(jìn)入類型選擇界面,選擇電動(dòng)機(jī)類型隨后進(jìn)入次級(jí)界面。在該界面中設(shè)置了運(yùn)行參數(shù)初始設(shè)定模塊、Simulink仿真圖模塊、特性曲線繪制模塊、運(yùn)行穩(wěn)態(tài)值輸出模塊以及各種功能按鈕,用戶可查看Simulink圖,可修改電動(dòng)機(jī)運(yùn)行初始參數(shù),可擦除已繪制的運(yùn)行曲線而后修改初值重新運(yùn)行,可以打開底層Simulink仿真原模型,直接修改參數(shù)。運(yùn)行流程圖如圖2所示。
圖2 平臺(tái)運(yùn)行流程圖
虛擬實(shí)驗(yàn)平臺(tái)以Matlab軟件[4]為開發(fā)工具,依托其強(qiáng)大的科學(xué)計(jì)算和建模仿真功能,大大提高了電動(dòng)機(jī)特性的分析效率。Matlab R2015b版中提供了豐富實(shí)用的用戶界面開發(fā)工具GUI,操作性強(qiáng),使用方便。平臺(tái)采用GUI設(shè)計(jì)主、次級(jí)界面,使用Simulink建模以及程序語言編寫M文件等方法開發(fā)特性分析的底層模型或程序。以“三相異步電動(dòng)機(jī)能耗制動(dòng)[5]”為例,詳述實(shí)驗(yàn)平臺(tái)的開發(fā)過程及功能實(shí)現(xiàn)。
用戶通過操作虛擬平臺(tái)界面,調(diào)用底層電動(dòng)機(jī)仿真模型來實(shí)現(xiàn)電動(dòng)機(jī)特性的分析。首先搭建電動(dòng)機(jī)特性Simulink模型[6]。
在Matlab R2015b環(huán)境下,啟動(dòng)Simulink,對(duì)三相異步電動(dòng)機(jī)能耗制動(dòng)特性進(jìn)行建模仿真[5]。仿真過程分為制動(dòng)前、后兩個(gè)階段。
(1) 制動(dòng)前模型。使用Simulink中Simscape下的SimPowerSystems模塊庫,按圖3所示搭建能耗制動(dòng)前穩(wěn)態(tài)運(yùn)行模型,命名為“YBnhzd_sim_former”。
圖3 電動(dòng)機(jī)能耗制動(dòng)前仿真模型圖
(2) 制動(dòng)后模型。將圖3中的三相交流電源去掉,給定子繞組重新加上直流電源模塊和電阻模塊,構(gòu)造新的制動(dòng)模型如圖4所示。將該模型命名為“YBnhzd_sim_latter”。
圖4 電動(dòng)機(jī)能耗制動(dòng)后仿真模型圖
為實(shí)現(xiàn)與后續(xù)GUI的參數(shù)傳遞,模塊參數(shù)需設(shè)為變量。
(1) 模塊參數(shù)。設(shè)置仿真模型中:三相交流電壓為U,頻率50 Hz;三相異步電動(dòng)機(jī)模塊按所提供的選項(xiàng)依次設(shè)置為:squirrel-cage,20:110 kW(150HP)400 V 50 Hz 1 487 r/min,Torque Tm,Rotor;常量模塊(負(fù)載力矩),設(shè)為T;直流電源模塊,設(shè)為E;電阻模塊,設(shè)為0.5 Ω。
(2) 全局參數(shù)。在后續(xù)GUI編程時(shí)需使用sim函數(shù)獲取模型“YBnhzd_sim_former”的末狀態(tài)xFinal,因此在圖3仿真模型model configuration Parameters面板的“Load from workspace”選項(xiàng)卡中勾選Initial state,并設(shè)為xFinal,以實(shí)現(xiàn)制動(dòng)前、后模型之間的運(yùn)行狀態(tài)傳遞,其他設(shè)置均為默認(rèn)。
Matlab提供了GUIDE和底層代碼編程兩種設(shè)計(jì)界面的方法。前者提供了用戶所需要的控件,通過鼠標(biāo)拖拽添加到設(shè)計(jì)界面中,操作方便但在具體設(shè)置上靈活性不夠;后者通過編寫界面的程序代碼為GUI控制程序提供框架,所有的程序代碼和回調(diào)函數(shù)都包含在該M文件中,便于使用命令行方式進(jìn)行界面控件的創(chuàng)建和編輯,能夠設(shè)計(jì)出功能相對(duì)復(fù)雜的界面,也方便發(fā)布程序。本文采用編寫底層代碼的方式搭建平臺(tái)界面[8]。
首先使用figure函數(shù)、set函數(shù)搭建好基本界面:
h_fig=figure( ‘Name’, ‘電機(jī)虛擬實(shí)驗(yàn)軟件’,…
‘position’, [0.283,0.256,0.469,0.579]);
set(h_fig,‘NumberTitle’, ‘off’, …
‘MenuBar’, ‘none’, ‘unit’, ‘normalized’)
如此設(shè)置,可使圖形窗口標(biāo)題為“電機(jī)虛擬實(shí)驗(yàn)軟件”,不顯示菜單條,單位標(biāo)準(zhǔn)化,并確定窗口相對(duì)于屏幕的大小和位置。
然后添加各類控件設(shè)計(jì)界面布局并實(shí)現(xiàn)相關(guān)功能,控件及屬性設(shè)置見表1(注:調(diào)用時(shí),表中的‘Dong’即為主界面的主體程序名)。
表1 主界面控件及相關(guān)屬性設(shè)置
界面中相關(guān)功能的實(shí)現(xiàn)方法如下:
(1) 鼠標(biāo)響應(yīng)。當(dāng)用戶將鼠標(biāo)移動(dòng)至電動(dòng)機(jī)按鈕上時(shí),為優(yōu)化顯示,并給予一定的提示作用,設(shè)計(jì)鼠標(biāo)指針變?yōu)槭中?。使用函?shù)“WindowButtonMotionFcn”,鼠標(biāo)在窗口上運(yùn)動(dòng)的時(shí)候就會(huì)響應(yīng)此函數(shù):set(gcf,‘WindowButtonMotionFcn’, @btnmotion)。通過編寫回調(diào)函數(shù)btnmotion,使用get(push1, ‘position’)獲得按鈕控件的位置,使用setappdata和getappdata函數(shù)將按鈕位置數(shù)據(jù)從界面h_fig的property傳遞至btnmotion函數(shù)中,同時(shí)使用get(h_fig, ‘CurrentPoint’)獲取當(dāng)前鼠標(biāo)位置,經(jīng)if條件語句判斷出當(dāng)前鼠標(biāo)與按鈕相對(duì)位置,進(jìn)而設(shè)置鼠標(biāo)為手的形狀或默認(rèn)形狀:set(hObject, ‘Pointer’, ‘hand’(或者‘default’ ))。
(2) 注釋信息、設(shè)置按鈕背景圖片。按鈕控件的tooltipstring屬性可顯示鼠標(biāo)所指按鈕的注釋信息,‘cdata’屬性可設(shè)置按鈕背景:
pic=imread(‘icon.png’); %讀取圖片icon的數(shù)據(jù)矩陣
set(push1,‘tooltipstring’,‘分為他勵(lì)、并勵(lì)、串勵(lì)、…
復(fù)勵(lì)直流電動(dòng)機(jī)’, ‘cdata’,pic); %注釋信息、設(shè)置按鈕背景
(3) listbox設(shè)置及關(guān)聯(lián)。使用列表框控件完成電動(dòng)機(jī)選型:listbox=uicontrol(h_fig,‘style’,‘listbox’, ‘string’...)。lisbox1用來實(shí)現(xiàn)電動(dòng)機(jī)類型選擇,編寫的回調(diào)函數(shù)為“select_callback”;lisbox2實(shí)現(xiàn)特性選擇,編寫的回調(diào)函數(shù)為“display_callback”;listbox3進(jìn)行實(shí)例描述,無需回調(diào)。可在callback中使用switch函數(shù)實(shí)現(xiàn)各列表框之間的調(diào)用:
set(listbox1,‘max’,1,‘min’,0,‘callback’,@select_callback);
functionselect_callback
switch get(listbox1,‘value’)
case 1
set(listbox2,‘string’,‘反接制動(dòng)|能耗制動(dòng)|反饋制動(dòng)’);
…
end
可使用HTML標(biāo)記語言設(shè)置listbox中的選項(xiàng)文本格式:
str=cell(1,2); %定義cell類型的數(shù)據(jù)矩陣str
str{1}=‘’; %加粗
str{2}=‘
’;%選項(xiàng)文本設(shè)為杏色
set(listbox1,‘string’,‘str’);%在listbox中顯示選項(xiàng)文本
(4) 主、次級(jí)界面的關(guān)聯(lián)。push4為“確定”按鈕,在callback中調(diào)用property1_callback函數(shù),使用switch函數(shù)實(shí)現(xiàn)與次級(jí)界面的聯(lián)接,callback中的部分程序如下:
function texing1_callback
switch get(h_listbox1,‘value’)
…
case 2 %選擇的是第2種類型電動(dòng)機(jī)
switch get(h_listbox2,‘value’)
case 1%選擇的是第1種實(shí)驗(yàn)特性
YBnhzd; %調(diào)用YBnhzd次級(jí)界面
end
最終界面設(shè)計(jì)效果如圖5所示。
次級(jí)界面主程序命名為YBnhzd,其控件添置與主界面相仿,這里不再贅述。在該界面,主要完成電機(jī)初始參數(shù)設(shè)定、Simulink調(diào)用、仿真結(jié)果讀取、模型圖顯示及特征曲線繪制功能。
(1) 初始參數(shù)設(shè)定。使用文本框控件edit。用戶輸入初始參數(shù),便以字符格式確定該控件的string值。使用global函數(shù)聲明全局變量,使用str2num函數(shù)將字符轉(zhuǎn)換為數(shù)據(jù),即可實(shí)現(xiàn)與simulink模型的參數(shù)傳遞:
圖5 主界面設(shè)計(jì)效果圖
global U;
U=str2num(get(h_edit1,‘string’));
同時(shí)在simulink模型中將電壓模塊的value設(shè)為U,即實(shí)現(xiàn)模型三相電壓的初始設(shè)定。
(2) Simulink調(diào)用。以“制動(dòng)前”為例,在按鈕控件push的回調(diào)函數(shù)中,使用sim函數(shù)完成對(duì)simulink模型的調(diào)用:
h_push=uicontrol(h_fig,‘style’,‘push’,‘string’,‘制動(dòng)前’,…
‘callback’,@sim_callback);
function sim_callback(~,~)
options = simset(‘SrcWorkspace’,‘current’);
%設(shè)置simulink使用當(dāng)前工作空間
[t,x,ira,isa,speed,Te]=sim(‘YBnenghao_sim_former’,…
[],options); %運(yùn)行仿真,輸出相關(guān)參量
xFinal=x(end,:); %獲取制動(dòng)前模型的末狀態(tài)xFinal
save xFinal.matxFinal; %將末狀態(tài)儲(chǔ)存至xFinal.mat,
制動(dòng)后模型設(shè)置初始狀態(tài)時(shí) … 通過importdata命令可調(diào)用end
(3) 仿真結(jié)果讀取。仿真結(jié)束時(shí)的運(yùn)行數(shù)據(jù)視為穩(wěn)定值,將之傳遞至GUI的edit編輯框中:
set(h_edit2,‘string’, speed(end));
(4) 模型圖顯示。為方便用戶操作,將模型圖顯示至界面中。首先將搭建的模型截圖,保存為“能耗制動(dòng).jpg”,然后添加坐標(biāo)軸控件axes,使用imread命令在坐標(biāo)軸中完成圖像顯示。
h_axes=axes(‘parent’,h_fig, ‘unit’,‘normalized’,…
‘position’,[0.007,0.439,0.43,0.315]);
Pi=imread(‘能耗制動(dòng).jpg’);
image(Pi);
axis off;
(5) 特征曲線繪制。添加8個(gè)坐標(biāo)軸控件axes,分別用以繪制能耗制動(dòng)前、后的定子電流、轉(zhuǎn)子電流、轉(zhuǎn)速、電磁轉(zhuǎn)矩。將simulink模型中的仿真數(shù)據(jù)讀出,用plot函數(shù)在相應(yīng)坐標(biāo)軸中完成曲線的繪制。如下:
h_axes1=axes(‘parent’,h_fig,‘unit’,‘normalized’,…
‘position’,[0.56,0.124,0.2,0.15]);
set(h_axes1,‘fontsize’,8,‘XTick’,[],‘YTick’,[]);
plot(h_axes1,t,speed)
ylabel(‘轉(zhuǎn)速[r/min] ’,‘fontsize’,10);
xlabel(‘時(shí)間(s)’,‘fontsize’,10);
為在不同初始條件下重新仿真,需增設(shè)“清除”按鈕,在其callback中使用“delete”命令可刪除axes控件。
實(shí)現(xiàn)上述5步功能后,對(duì)界面顏色、控件位置等繼續(xù)進(jìn)行優(yōu)化,添加適當(dāng)文字說明,最終設(shè)計(jì)的次級(jí)界面效果如圖6所示。
圖6 次級(jí)界面設(shè)計(jì)效果圖
分析正常工作在220 V市電、負(fù)載力矩為25 N·m的三相異步電動(dòng)機(jī),在180 V外接電壓下的能耗制動(dòng)特性。
(1) 運(yùn)行主界面程序,依次選擇“三相異步電動(dòng)機(jī)”“能耗制動(dòng)”,閱讀下方的特性介紹后,點(diǎn)擊“確定”按鈕進(jìn)入次級(jí)界面;
(2) 設(shè)置初始參數(shù),然后點(diǎn)擊 “制動(dòng)前”按鈕,得到正常運(yùn)行特性曲線和輸出數(shù)據(jù);再點(diǎn)擊“制動(dòng)后”按鈕,得到電動(dòng)機(jī)能耗制動(dòng)特性曲線和輸出數(shù)據(jù)。
(3) 點(diǎn)擊“清除”按鈕,擦除所繪曲線,重新設(shè)置初始參數(shù)后,可再次運(yùn)行仿真。
(4) 點(diǎn)擊“返回”按鈕,返回至主界面。
通過操作界面,可快速、直觀、便捷地繪制出不同初始條件下的電動(dòng)機(jī)特性運(yùn)行曲線,還可隨時(shí)改變電動(dòng)機(jī)運(yùn)行的初始參數(shù),便于觀察比對(duì)特性的改變,整個(gè)界面具有較好的操作性。
依照操作步驟運(yùn)行,獲得三相異步電動(dòng)機(jī)能耗制動(dòng)特性仿真界面,如圖7所示。
觀察仿真界面,結(jié)合顯示的穩(wěn)態(tài)數(shù)據(jù),可以很清楚地了解:正常運(yùn)行時(shí),經(jīng)歷大約1.8 s加速后,電動(dòng)機(jī)開始穩(wěn)定運(yùn)轉(zhuǎn),轉(zhuǎn)速達(dá)到188.273 r/min,電磁轉(zhuǎn)矩穩(wěn)定在35.285 9 N·m,此時(shí)轉(zhuǎn)子、定子電流分別達(dá)到13.789 9 A、45.273 1 A; 在制動(dòng)7.3 s后,轉(zhuǎn)速降至-0.003 61 r/min,此時(shí)電磁轉(zhuǎn)矩為24.9831 N·m,制動(dòng)后的轉(zhuǎn)子、定子電流分別為3.396 17 A、-337.813 A。同時(shí)可以分析出,能耗制動(dòng)時(shí)定子電流很大,這是由于制動(dòng)電壓較高,電動(dòng)機(jī)阻抗小所致,因此采用該種制動(dòng)方式,必須控制制動(dòng)時(shí)間,防止燒毀電動(dòng)機(jī)。結(jié)合所學(xué)知識(shí),該制動(dòng)特性曲線與實(shí)際相符。
圖7 能耗制動(dòng)特性仿真界面
以三相異步電動(dòng)機(jī)能耗制動(dòng)為例,詳述了使用Matlab/GUI搭建電動(dòng)機(jī)虛擬實(shí)驗(yàn)平臺(tái)的方法,并通過實(shí)例測(cè)試驗(yàn)證了人機(jī)交互界面各控件的功能以及電動(dòng)機(jī)虛擬實(shí)驗(yàn)平臺(tái)的實(shí)用性。結(jié)果表明:①使用該電動(dòng)機(jī)虛擬實(shí)驗(yàn)平臺(tái),可以實(shí)現(xiàn)電動(dòng)機(jī)仿真的圖形化、特性分析的模塊化;②通過改變初始參數(shù)可以動(dòng)態(tài)研究參數(shù)改變對(duì)電動(dòng)機(jī)特性運(yùn)行的影響,方便直觀;③集成了各種類型、多種特性的電動(dòng)機(jī)仿真實(shí)驗(yàn)?zāi)P?,能夠系統(tǒng)地進(jìn)行電動(dòng)機(jī)學(xué)仿真實(shí)驗(yàn);④該平臺(tái)能夠?qū)崿F(xiàn)電動(dòng)機(jī)特性分析的系統(tǒng)化、便捷化、直觀化,對(duì)于電動(dòng)機(jī)學(xué)教學(xué)及科研分析有較好的幫助。
參考文獻(xiàn)(References):
[1] 童 佳,丁立軍.基于Matlab中GUI功能設(shè)計(jì)電機(jī)仿真實(shí)驗(yàn)系統(tǒng)[J].中國電力教育,2010(34):160-162.
[2] 韓慶慶,肖乾虎.基于GUI功能設(shè)計(jì)的電機(jī)仿真試驗(yàn)系統(tǒng)[J].水電能源科學(xué),2011,29(1):129-131.
[3] 陳顯彪.基于Web的電機(jī)仿真試驗(yàn)平臺(tái)開發(fā).電機(jī)與控制應(yīng)用[J].2013,40(5):10-12.
[4] 陳 杰.Matlab寶典[M].北京:電子工業(yè)出版社,2013.
[5] 羅德榮,江岳春.三相異步電動(dòng)機(jī)能耗制動(dòng)的數(shù)值仿真[D].長沙:湖南大學(xué),2002.
[6] 潘曉晟,郝世勇.Matlab電機(jī)仿真精華50例[M].北京:電子工業(yè)出版社,2007.
[7] 李希林. 三相異步電動(dòng)機(jī)制動(dòng)方式比較分析[J].機(jī)電工程技術(shù),2015, 44(9):41-44.
[8] 羅華飛. Matlab/GUI設(shè)計(jì)學(xué)習(xí)手記[M]. 北京:北京航空航天大學(xué)出版社,2014.
[9] 張建斌, 趙 靜. 基于Matlab-GUI的數(shù)值積分界面設(shè)計(jì)[J]. 實(shí)驗(yàn)室研究與探索, 2016, 36(1): 127-131.
[10] 郭 瓊. 基于Matlab的Powergui性能在電力工程教學(xué)中的應(yīng)用[J]. 電力系統(tǒng)及自動(dòng)化學(xué)報(bào), 2004, 16(2):80-84.
[11] 馬 壯. 基于Matlab的典型二階RLC振蕩電路實(shí)驗(yàn)教學(xué)仿真[J]. 實(shí)驗(yàn)室研究與探索, 2016, 35(10):95-98.
[12] 馬 莉. Matlab語言實(shí)用教程[M]. 北京:清華大學(xué)出版社, 2010.
[13] 林炳強(qiáng),謝龍漢. Matlab 2015從入門到精通[M]. 北京:人民郵電出版社, 2016.
[14] 袁登科,徐延?xùn)|.永磁同步電動(dòng)機(jī)變頻調(diào)速系統(tǒng)及其控制[M]. 北京:機(jī)械工業(yè)出版社, 2015.
[15] Theodore Wildi.Electrical Machines, Drive, And Power Systems(Six Edition)[M]. Beijing:China Machine Press, 2014.