本期帶來基于Matlab與LabVIEW聯合開發的電機測試平臺,LabVIEW是一款圖形化開環設計軟件,可以實現VXI、串口、GPIBPXI等總線的通信,具有良好的通用性能,可以極大的縮短系統的研發時間,提高工作效率。本系統能實時采集電機在不同工況運行下的各種參數,對電機的電壓、電流、功率等進行監測,實現對電機性能的檢測。LabVIEW通過SIT工具包調用來實現Matlab對電機啟動的電流等信號進行分析與處理。
1、系統構成
系統基于虛擬儀器為核心的測試平臺,其數據采集卡選用的是美國NI公司產品,并配以外圍電機驅動電路如直流電機的供電電源控制、起動大電路等部分,由程序來控制外圍驅動電路以實現對電機的起動和制動控制。整個過程充分發揮了計算機在數據處理、顯示和存儲上的強大功能,使得整個測試系統的高效性得到了保證,極大提高了系統的靈活性。編程環境選擇LabVIEW編程語言,并結合Matlab對電機信號處理分析,充分利用二者的混合編程技術,提高電機測試平臺的效率。
2、硬件系統設計
電機測試系統硬件主要包括為電機提供能量及驅動的電機控制柜,用于測量電機功率信息的功率分析儀,兩電機間用于測量扭矩、電機轉速的扭矩傳感器,為系統降溫的水冷系統和用于測量水冷系統水溫的溫度采集卡,讀取系統數字信號及模擬信號的數據釆集卡。
3、軟件系統設計
利用LabVIEW良好的人機交互特性,將所需調用的參數和仿真信息全部顯示在界面上,以便實時觀測電機各參數檢測結果。
4、Matlab實時通訊
LabVIEW通過仿真接口工具包(SIT)可調用MATLAB/Simulink程序并能夠實現同步通訊。安裝MATLAB、LabVIEW和仿真接口工具包SIT后打開MATLAB,運行edit MATLABrc,在打開的MATLABrc 文件末尾添加:
addpath('C:\\Simulation InterfaceToolkit'); % 將SimilinkInterface Toolkit添加到Path中
NISIT_Add Paths;
NISITServer;
MATLAB,在命令窗口上會出現以下信息:
Starting the SIT Server on Port 6011
SIT Server started
打開Simulink可以在Libraries找到NISIT Blocks 模塊。建立MATLAB與LabVIEW實時通訊主要分為兩個步驟,即指定模型路徑和控件與模型建立連接。
(1)指定MATLAB仿真路徑
打開前面建立的LabVIEW控制界面,選擇工具下的SITConnection Manager, 進入配置頁面。首先選擇Modeland Host選項卡,在Current Model中,指定Sinulink路徑
(2)控件與模塊建立連接
選擇Mappings選項卡,指定LabVIEW前面板中輸入控件、波形圖表與永磁同步電機矢量控制系統MATLAB/Simulink仿真模型模型的參數一一對應。
%%%%%%%%%總體改變%%%%%%%
%%%% n 行波波數
%%%% u 定轉子動摩擦系數
%%%% ke 摩擦材料的等效剛度
%%%% R 轉子等效半徑
%%%% Dz 軸向阻尼系數
%%%% Dr 轉子光電總阻尼
%%%% Fn 預壓力
%%%%電機工作頻率
%%%%行波波長
%%%%%%%%%%總體改變%%%%%%%%
%%%%%%%%%%%%%%%%參數值
J17=9;
J18=0.2;
J19=2.6E+09;
J21=3.10E-03;
J25=9300;
J26=10;
J27=70000;
J29=0.00014;
J30=0.0005;
J20=1.5E-03;
J22=0.00000066675;
J23=0.000000142;
J24=0.0005;
J28=2*3.1415926*J27;
%%%%%%%%%%%%%%%%%參數值
gain0=J17/J21;
gain1=1/gain0;
gain2=gain0;
gain3=gain1;
gain4=2*J18*J19*J22;
gain5=2;
gain6=J17*J21;
gain7=1/J23;
gain8=J21/gain0/J28;
gain9=gain1;
gain10=60/3.1415926/2;
gain11=2*J17*J19;
gain12=J25;
gain13=1/J24;
gain14=1;
gain15=gain1;
%%%%%%%%%%%%%轉換為set_para可以用的字符串類型,并且不丟失精度
temp=sym(gain0);
gain0=char(vpa(temp,15));
temp=sym(gain1);
gain1=char(vpa(temp,15));
temp=sym(gain2);
gain2=char(vpa(temp,15));
temp=sym(gain3);
gain3=char(vpa(temp,15));
temp=sym(gain4);
gain4=char(vpa(temp,15));
temp=sym(gain5);
gain5=char(vpa(temp,15));
temp=sym(gain6);
gain6=char(vpa(temp,15));
temp=sym(gain7);
gain7=char(vpa(temp,15));
temp=sym(gain8);
gain8=char(vpa(temp,15));
temp=sym(gain9);
gain9=char(vpa(temp,15));
temp=sym(gain10);
gain10=char(vpa(temp,15));
temp=sym(gain11);
gain11=char(vpa(temp,15));
temp=sym(gain12);
gain12=char(vpa(temp,15));
temp=sym(gain13);
gain13=char(vpa(temp,15));
temp=sym(gain14);
gain14=char(vpa(temp,15));
temp=sym(gain15);
gain15=char(vpa(temp,15));
%%%將三個simulink模型參數調整
open ModerForJ.slx
set_param('ModerForJ/Gain0','Gain',gain0);
set_param('ModerForJ/Gain1','Gain',gain1);
set_param('ModerForJ/Gain2','Gain',gain2);
set_param('ModerForJ/Gain3','Gain',gain3);
set_param('ModerForJ/Gain4','Gain',gain4);
set_param('ModerForJ/Gain5','Gain',gain5);
set_param('ModerForJ/Gain6','Gain',gain6);
set_param('ModerForJ/Gain7','Gain',gain7);
set_param('ModerForJ/Gain8','Gain',gain8);
set_param('ModerForJ/Gain9','Gain',gain9);
set_param('ModerForJ/Gain10','Gain',gain10);
set_param('ModerForJ/Gain11','Gain',gain11);
set_param('ModerForJ/Gain12','Gain',gain12);
set_param('ModerForJ/Gain13','Gain',gain13);
set_param('ModerForJ/Gain14','Gain',gain14);
set_param('ModerForJ/Gain15','Gain',gain15);
save_system;
close_system
open ModerForT.slx
set_param(