高欽和, 董家臣, 邵亞軍, 牛海龍, 陳志翔
(火箭軍工程大學 二系,西安 710025)
電動機種類繁多,參數變化和動態性能分析復雜,在進行特性分析時,常給電動機設計和科研教學工作帶來諸多不便。傳統教學方法較難實現靈活設置電動機參數的要求,不易于分析過程的直觀表述。
為高效獲取對電動機特性的理解,提升教學實踐效果,許多科研工作者針對電動機特性設計了虛擬實驗平臺。[1-3]但這些平臺大多只針對一種實驗特性,界面的優化也做得不足,缺乏較好的人機交互性。本文基于Matlab/GUI開發了用于電動機特性分析的虛擬實驗平臺。該平臺集成了不同種類電動機的多種實驗特性仿真功能,用戶在交互界面上進行電動機類型選擇、運行參數設置等操作可實現相關特性的Simulink模型調用、初始參數設置、仿真圖顯示、運行結果輸出、特性曲線繪制等功能,使電動機特性分析更加方便高效;對平臺界面進行優化,能夠實現GUI界面互調、鼠標檢測、特性介紹等功能,使得界面實用性更強。
以三相異步電動機能耗制動特性分析實例對虛擬實驗平臺進行驗證,得到了特性曲線和穩態運行值,體現出該平臺在電動機特性分析及仿真上具有系統化、便捷化、直觀化的優勢。結果表明,該平臺為電動機學科教學效率的提高帶來便捷。
虛擬實驗平臺要實現電動機特性分析的多項內容,設計的平臺功能如圖1所示。
打開平臺首先進入類型選擇界面,選擇電動機類型隨后進入次級界面。在該界面中設置了運行參數初始設定模塊、Simulink仿真圖模塊、特性曲線繪制模塊、運行穩態值輸出模塊以及各種功能按鈕,用戶可查看Simulink圖,可修改電動機運行初始參數,可擦除已繪制的運行曲線而后修改初值重新運行,可以打開底層Simulink仿真原模型,直接修改參數。運行流程圖如圖2所示。

圖2 平臺運行流程圖
虛擬實驗平臺以Matlab軟件[4]為開發工具,依托其強大的科學計算和建模仿真功能,大大提高了電動機特性的分析效率。Matlab R2015b版中提供了豐富實用的用戶界面開發工具GUI,操作性強,使用方便。平臺采用GUI設計主、次級界面,使用Simulink建模以及程序語言編寫M文件等方法開發特性分析的底層模型或程序。以“三相異步電動機能耗制動[5]”為例,詳述實驗平臺的開發過程及功能實現。
用戶通過操作虛擬平臺界面,調用底層電動機仿真模型來實現電動機特性的分析。首先搭建電動機特性Simulink模型[6]。
在Matlab R2015b環境下,啟動Simulink,對三相異步電動機能耗制動特性進行建模仿真[5]。仿真過程分為制動前、后兩個階段。
(1) 制動前模型。使用Simulink中Simscape下的SimPowerSystems模塊庫,按圖3所示搭建能耗制動前穩態運行模型,命名為“YBnhzd_sim_former”。

圖3 電動機能耗制動前仿真模型圖
(2) 制動后模型。將圖3中的三相交流電源去掉,給定子繞組重新加上直流電源模塊和電阻模塊,構造新的制動模型如圖4所示。將該模型命名為“YBnhzd_sim_latter”。
圖4 電動機能耗制動后仿真模型圖
為實現與后續GUI的參數傳遞,模塊參數需設為變量。
(1) 模塊參數。設置仿真模型中:三相交流電壓為U,頻率50 Hz;三相異步電動機模塊按所提供的選項依次設置為:squirrel-cage,20:110 kW(150HP)400 V 50 Hz 1 487 r/min,Torque Tm,Rotor;常量模塊(負載力矩),設為T;直流電源模塊,設為E;電阻模塊,設為0.5 Ω。
(2) 全局參數。在后續GUI編程時需使用sim函數獲取模型“YBnhzd_sim_former”的末狀態xFinal,因此在圖3仿真模型model configuration Parameters面板的“Load from workspace”選項卡中勾選Initial state,并設為xFinal,以實現制動前、后模型之間的運行狀態傳遞,其他設置均為默認。
Matlab提供了GUIDE和底層代碼編程兩種設計界面的方法。前者提供了用戶所需要的控件,通過鼠標拖拽添加到設計界面中,操作方便但在具體設置上靈活性不夠;后者通過編寫界面的程序代碼為GUI控制程序提供框架,所有的程序代碼和回調函數都包含在該M文件中,便于使用命令行方式進行界面控件的創建和編輯,能夠設計出功能相對復雜的界面,也方便發布程序。本文采用編寫底層代碼的方式搭建平臺界面[8]。
首先使用figure函數、set函數搭建好基本界面:
h_fig=figure( ‘Name’, ‘電機虛擬實驗軟件’,…
‘position’, [0.283,0.256,0.469,0.579]);
set(h_fig,‘NumberTitle’, ‘off’, …
‘MenuBar’, ‘none’, ‘unit’, ‘normalized’)
如此設置,可使圖形窗口標題為“電機虛擬實驗軟件”,不顯示菜單條,單位標準化,并確定窗口相對于屏幕的大小和位置。
然后添加各類控件設計界面布局并實現相關功能,控件及屬性設置見表1(注:調用時,表中的‘Dong’即為主界面的主體程序名)。

表1 主界面控件及相關屬性設置
界面中相關功能的實現方法如下:
(1) 鼠標響應。當用戶將鼠標移動至電動機按鈕上時,為優化顯示,并給予一定的提示作用,設計鼠標指針變為手形。使用函數“WindowButtonMotionFcn”,鼠標在窗口上運動的時候就會響應此函數:set(gcf,‘WindowButtonMotionFcn’, @btnmotion)。通過編寫回調函數btnmotion,使用get(push1, ‘position’)獲得按鈕控件的位置,使用setappdata和getappdata函數將按鈕位置數據從界面h_fig的property傳遞至btnmotion函數中,同時使用get(h_fig, ‘CurrentPoint’)獲取當前鼠標位置,經if條件語句判斷出當前鼠標與按鈕相對位置,進而設置鼠標為手的形狀或默認形狀:set(hObject, ‘Pointer’, ‘hand’(或者‘default’ ))。
(2) 注釋信息、設置按鈕背景圖片。按鈕控件的tooltipstring屬性可顯示鼠標所指按鈕的注釋信息,‘cdata’屬性可設置按鈕背景:
pic=imread(‘icon.png’); %讀取圖片icon的數據矩陣
set(push1,‘tooltipstring’,‘分為他勵、并勵、串勵、…
復勵直流電動機’, ‘cdata’,pic); %注釋信息、設置按鈕背景
(3) listbox設置及關聯。使用列表框控件完成電動機選型:listbox=uicontrol(h_fig,‘style’,‘listbox’, ‘string’...)。lisbox1用來實現電動機類型選擇,編寫的回調函數為“select_callback”;lisbox2實現特性選擇,編寫的回調函數為“display_callback”;listbox3進行實例描述,無需回調。可在callback中使用switch函數實現各列表框之間的調用:
set(listbox1,‘max’,1,‘min’,0,‘callback’,@select_callback);
functionselect_callback
switch get(listbox1,‘value’)
case 1
set(listbox2,‘string’,‘反接制動|能耗制動|反饋制動’);
…
end
可使用HTML標記語言設置listbox中的選項文本格式:
str=cell(1,2); %定義cell類型的數據矩陣str
str{1}=‘’; %加粗
str{2}=‘
’;%選項文本設為杏色
set(listbox1,‘string’,‘str’);%在listbox中顯示選項文本
(4) 主、次級界面的關聯。push4為“確定”按鈕,在callback中調用property1_callback函數,使用switch函數實現與次級界面的聯接,callback中的部分程序如下:
function texing1_callback
switch get(h_listbox1,‘value’)
…
case 2 %選擇的是第2種類型電動機
switch get(h_listbox2,‘value’)
case 1%選擇的是第1種實驗特性
YBnhzd; %調用YBnhzd次級界面
end
最終界面設計效果如圖5所示。
次級界面主程序命名為YBnhzd,其控件添置與主界面相仿,這里不再贅述。在該界面,主要完成電機初始參數設定、Simulink調用、仿真結果讀取、模型圖顯示及特征曲線繪制功能。
(1) 初始參數設定。使用文本框控件edit。用戶輸入初始參數,便以字符格式確定該控件的string值。使用global函數聲明全局變量,使用str2num函數將字符轉換為數據,即可實現與simulink模型的參數傳遞:

圖5 主界面設計效果圖
global U;
U=str2num(get(h_edit1,‘string’));
同時在simulink模型中將電壓模塊的value設為U,即實現模型三相電壓的初始設定。
(2) Simulink調用。以“制動前”為例,在按鈕控件push的回調函數中,使用sim函數完成對simulink模型的調用:
h_push=uicontrol(h_fig,‘style’,‘push’,‘string’,‘制動前’,…
‘callback’,@sim_callback);
function sim_callback(~,~)
options = simset(‘SrcWorkspace’,‘current’);
%設置simulink使用當前工作空間
[t,x,ira,isa,speed,Te]=sim(‘YBnenghao_sim_former’,…
[],options); %運行仿真,輸出相關參量
xFinal=x(end,:); %獲取制動前模型的末狀態xFinal
save xFinal.matxFinal; %將末狀態儲存至xFinal.mat,
制動后模型設置初始狀態時 … 通過importdata命令可調用end
(3) 仿真結果讀取。仿真結束時的運行數據視為穩定值,將之傳遞至GUI的edit編輯框中:
set(h_edit2,‘string’, speed(end));
(4) 模型圖顯示。為方便用戶操作,將模型圖顯示至界面中。首先將搭建的模型截圖,保存為“能耗制動.jpg”,然后添加坐標軸控件axes,使用imread命令在坐標軸中完成圖像顯示。
h_axes=axes(‘parent’,h_fig, ‘unit’,‘normalized’,…
‘position’,[0.007,0.439,0.43,0.315]);
Pi=imread(‘能耗制動.jpg’);
image(Pi);
axis off;
(5) 特征曲線繪制。添加8個坐標軸控件axes,分別用以繪制能耗制動前、后的定子電流、轉子電流、轉速、電磁轉矩。將simulink模型中的仿真數據讀出,用plot函數在相應坐標軸中完成曲線的繪制。如下:
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(‘轉速[r/min] ’,‘fontsize’,10);
xlabel(‘時間(s)’,‘fontsize’,10);
為在不同初始條件下重新仿真,需增設“清除”按鈕,在其callback中使用“delete”命令可刪除axes控件。
實現上述5步功能后,對界面顏色、控件位置等繼續進行優化,添加適當文字說明,最終設計的次級界面效果如圖6所示。

圖6 次級界面設計效果圖
分析正常工作在220 V市電、負載力矩為25 N·m的三相異步電動機,在180 V外接電壓下的能耗制動特性。
(1) 運行主界面程序,依次選擇“三相異步電動機”“能耗制動”,閱讀下方的特性介紹后,點擊“確定”按鈕進入次級界面;
(2) 設置初始參數,然后點擊 “制動前”按鈕,得到正常運行特性曲線和輸出數據;再點擊“制動后”按鈕,得到電動機能耗制動特性曲線和輸出數據。
(3) 點擊“清除”按鈕,擦除所繪曲線,重新設置初始參數后,可再次運行仿真。
(4) 點擊“返回”按鈕,返回至主界面。
通過操作界面,可快速、直觀、便捷地繪制出不同初始條件下的電動機特性運行曲線,還可隨時改變電動機運行的初始參數,便于觀察比對特性的改變,整個界面具有較好的操作性。
依照操作步驟運行,獲得三相異步電動機能耗制動特性仿真界面,如圖7所示。
觀察仿真界面,結合顯示的穩態數據,可以很清楚地了解:正常運行時,經歷大約1.8 s加速后,電動機開始穩定運轉,轉速達到188.273 r/min,電磁轉矩穩定在35.285 9 N·m,此時轉子、定子電流分別達到13.789 9 A、45.273 1 A; 在制動7.3 s后,轉速降至-0.003 61 r/min,此時電磁轉矩為24.9831 N·m,制動后的轉子、定子電流分別為3.396 17 A、-337.813 A。同時可以分析出,能耗制動時定子電流很大,這是由于制動電壓較高,電動機阻抗小所致,因此采用該種制動方式,必須控制制動時間,防止燒毀電動機。結合所學知識,該制動特性曲線與實際相符。

圖7 能耗制動特性仿真界面
以三相異步電動機能耗制動為例,詳述了使用Matlab/GUI搭建電動機虛擬實驗平臺的方法,并通過實例測試驗證了人機交互界面各控件的功能以及電動機虛擬實驗平臺的實用性。結果表明:①使用該電動機虛擬實驗平臺,可以實現電動機仿真的圖形化、特性分析的模塊化;②通過改變初始參數可以動態研究參數改變對電動機特性運行的影響,方便直觀;③集成了各種類型、多種特性的電動機仿真實驗模型,能夠系統地進行電動機學仿真實驗;④該平臺能夠實現電動機特性分析的系統化、便捷化、直觀化,對于電動機學教學及科研分析有較好的幫助。
參考文獻(References):
[1] 童 佳,丁立軍.基于Matlab中GUI功能設計電機仿真實驗系統[J].中國電力教育,2010(34):160-162.
[2] 韓慶慶,肖乾虎.基于GUI功能設計的電機仿真試驗系統[J].水電能源科學,2011,29(1):129-131.
[3] 陳顯彪.基于Web的電機仿真試驗平臺開發.電機與控制應用[J].2013,40(5):10-12.
[4] 陳 杰.Matlab寶典[M].北京:電子工業出版社,2013.
[5] 羅德榮,江岳春.三相異步電動機能耗制動的數值仿真[D].長沙:湖南大學,2002.
[6] 潘曉晟,郝世勇.Matlab電機仿真精華50例[M].北京:電子工業出版社,2007.
[7] 李希林. 三相異步電動機制動方式比較分析[J].機電工程技術,2015, 44(9):41-44.
[8] 羅華飛. Matlab/GUI設計學習手記[M]. 北京:北京航空航天大學出版社,2014.
[9] 張建斌, 趙 靜. 基于Matlab-GUI的數值積分界面設計[J]. 實驗室研究與探索, 2016, 36(1): 127-131.
[10] 郭 瓊. 基于Matlab的Powergui性能在電力工程教學中的應用[J]. 電力系統及自動化學報, 2004, 16(2):80-84.
[11] 馬 壯. 基于Matlab的典型二階RLC振蕩電路實驗教學仿真[J]. 實驗室研究與探索, 2016, 35(10):95-98.
[12] 馬 莉. Matlab語言實用教程[M]. 北京:清華大學出版社, 2010.
[13] 林炳強,謝龍漢. Matlab 2015從入門到精通[M]. 北京:人民郵電出版社, 2016.
[14] 袁登科,徐延東.永磁同步電動機變頻調速系統及其控制[M]. 北京:機械工業出版社, 2015.
[15] Theodore Wildi.Electrical Machines, Drive, And Power Systems(Six Edition)[M]. Beijing:China Machine Press, 2014.