前言
虛擬儀器是全新概念的最新一代測量儀器,它將傳統儀器由硬件電路實現的數據分析與顯示功能改由功能強大的計算機及其顯示器來執行,它是按照測量原理采用適當的信號分析技術和處理技術編制某種測量功能的軟件就構成了該種功能的測試儀器。因此,如果我們在電機型式試驗中引入虛擬儀器,利用計算機強大的處理功能,開發出完全替代真實測量工具的虛擬儀器對試驗進行自動采集并實現試驗的自動處理和生成報告。可以看出,虛擬儀器這一全新測量儀器在傳統的電機試驗應用上將帶來重大影響。
虛擬儀器VI及其編程語言LabWindows/CVI
虛擬儀器(Virtual Instrument,簡稱VI)是現代計算機技術和儀器技術深層次的結合。隨著計算機技術和儀器技術的發展,由硬件電路實現的信號處理功能正逐步由軟件替代。虛擬儀器是以軟件為核心,由計算機及必要的硬件組建起來的測試系統或儀器系統,在計算機上對虛擬儀器面板的操作與現實中的儀器面板操作一樣。在虛擬儀器中,用戶可以自己設計或定義新的理論和新的算法來適應不同的測量需求,儀器的功能更加靈活、強大,所以有“軟件就是儀器”的說法。因此,虛擬儀器是計算機硬件資源、儀器與測控系統硬件資源和虛擬儀器軟件資源的有效結合。
虛擬儀器的實質是利用計算機顯示器模擬傳統儀器的控制面板,以多種形式輸出檢測結果,利用計算機軟件實現信號數據的運算、分析和處理,利用I/O接口設備完成信號的采集、測量和調理,從而完成各種測試功能的一種計算機儀器系統。操作者使用鼠標或鍵盤操作虛擬面板就如同使用一臺專用測量儀器。
虛擬儀器的硬件包括計算機和I/O接口設備。計算機可以是一臺PC機或者工作站,它是硬件平臺的核心。I/O接口設備主要完成被測輸入信號的采集、放大、模/數轉換。按照總線的不同可以分為PC總線的DAQ(數據采集卡/板) 、GPIB總線儀器和VXI總線儀器等等。
虛擬儀器的編程語言有多種。LabWindows/CVI是其中最優秀的語言之一,它是美國NI(National Instruments)公司開發的32位面向計算機測控領域的軟件開發平臺。它以ANSI為核心,將功能強大的、使用靈活的C語言平臺與數據采集、分析和表達等測控專業工具有機結合,它支持事件驅動與回調函數編程技術,它的集成化開發平臺、交互式編程方法、豐富的功能面板和庫函數大大增強了C語言的功能,為熟悉C的開發人員開發檢測、數據采集、過程監控等系統提供了一個理想的軟件開發環境。
可以看出,虛擬儀器這一適合測控領域的開發平臺完全適合于電機試驗領域。引入虛擬儀器將改善電機試驗測量的適時性要求,提高儀器儀表的精度并可以自己開發特殊要求的儀器,利用計算機的處理功能可以實現試驗后數據的自動處理和報表,當然也可以實現試驗數據的數據庫管理。
虛擬儀器的異步機空載試驗采集處理系統
虛擬儀器的電機試驗應用程序結構
以LabWindows/CVI開發平臺設計的基于PC-DAQ的虛擬儀器測試系統為例,其在電機試驗領域應用的系統結果如圖所示:
由傳感器接受被測信號轉換為電量信號,送入信號處理電路進行整形、轉換和濾波處理,變成標準信號,數據采集卡采集信號處理電路的電壓信號,轉換為計算機能處理的數字信號,經過設備驅動程序數字信號送入計算機在LabWindows/CVI平臺下調用信號處理函數,編寫程序和設計虛擬儀器面板,形成不同針對試驗的測量處理系統。
異步機空載采集處理系統
異步電機空載試驗計算機處理的數學模型
異步電機的空載試驗是在被試電機空載運行時測量三相電壓、三相電流、功率,作出電壓-電流、電壓平方-空載損耗、電壓-功率的關系曲線, 在電壓-電流曲線上我們查出額定電壓的空載電流值,在電壓-功率的曲線上我們查出額定電壓的空載損耗值,結合電壓平方-空載損耗曲線分離出鐵耗和風摩耗值。
因此,曲線擬合的表達式是決定我們處理空載損耗的關鍵。參考電機學相關書籍和實際經驗,我們知道電壓-電流、電壓平方-空載損耗是呈直線-三次趨向關系,而電壓-功率是高階曲線函數關系。很顯然,我們只需要擬合出n個試驗數據點的這三條曲線的準確表達式來,上述問題就迎刃而解。對于電壓-功率的高階曲線函數關系,LabWindows/CVI函數庫提供了n個數據點的高階曲線擬合函數PolyFit,只需要確定或選擇階數并代入有關數據即可。因此,我們需要解決的是直線-三次擬合曲線表達式的求取。
設分段函數
曲線的連接點在x=x0處。 顯然,上述曲線應滿足以下條件: (1)x=x0在處,倆式表達式值相等,有 (2) 在x=x0處,倆式斜率相等,有(3) 曲線要光滑,則斜率的變化率相等,即二階倒數值相等,有根據上述關系,我們可以消去a0,a1和b2,得出函數與b0,b1,b3的關系表達式。 并代入擬合曲線方程:
令每一觀測值對擬合曲線的偏差為Vi則有則
我們假設共有個觀測數組,(Xi,Yi),i=1-n,其中在Xi《=Xo時有n1個觀測值,在時有n2個觀測值,則n1+n2=n; 則偏差平方和為:
要使Q最小,則則可求出b0,b1,b3,有:其中,a11=n,
對于X0,可以選擇X0為區間Xi的最小值,求取直線-三次曲線,求得偏差平方和Q值,再以步長X0=X0+ih變化計算不同連接點的Q值,取Q值最小的X0即可。 對于空載試驗電壓平方-空載損耗的直線-三次曲線來說,顯然a0的值就是風摩耗。
實際上,由于電機磁路可能飽和的關系,直線-三次擬和有可能不能更為客觀真實的反映上述兩條曲線的關系時,我們也提供高階擬和函數PolyFit來替代。
異步機空載試驗的虛擬儀器系統
本系統的軟件是在LabWindows/CVI開發平臺下實現。
數據采集是采用DAQ數據采集卡,采集通道通過daq::s!(i:j)格式確定,下面的程序為采集程序的部分:
char DaqStr34A[20] = “daq::1!(0:5)”;
char DaqStr34B[20] = “daq::1!(6:11)”;
SetCtrlAttribute (hMainPanel, PANEL_ReadData, ATTR_DIMMED, 1);
strcpy(channelStringA, DaqStr34A); //設置采樣通道
strcpy(channelStringB, DaqStr34B);
GetCtrlVal (hMainPanel, PANEL_numCyc, &numCyc);
numChannels=6; numScans=64;
rate=50*numScans;
DataCount= numScans * numCyc;
iTestedWaveform = (double *) malloc (DataCount * numChannels * sizeof (double));
iLoadWaveform = (double *) malloc (DataCount * numChannels * sizeof (double));
err = nidaqAIScanOp (channelStringA, numScans * numCyc, rate, upper,
lower, kNidaqGroupByChannel, & actualRate, iTestedWaveform);
err=nidaqAIScanOp (channelStringB, numScans * numCyc, rate, upper, lower,
kNidaqGroupByChannel, & actualRate, iLoadWaveform);
采集的每一點的電壓電流每相值用Labwindows/CVI庫自帶的RMS函數進行有效值計算,再通過Mean函數計算出平均值,求取每一相的功率值。從上述儀表中可以將試驗采集的數據記錄保存。
Kp = 0;
for (index = 0; index 《 numChannels*numCyc; index++){
Copy1D (&iTestedWaveform[Kp*numScans], numScans, Upek[index]);
RMS ( Upek[index], numScans, & Up[index] ); //有效值計算
++Kp; //Upek:試驗原始數據(行:numchannels*numcyc,列:numScans)
} //Up:numChannels*numCyc個數據,對應于原始數據的RMS
MyVal = numCyc;
Kp = 0;
for (index = 0; index 《 numChannels; index++){
Mean (&Up[Kp*numCyc], numCyc, & aUIrms[index]);
//aUIrms[0]-[5]:各Channel中各Cycle的RMS值的平均值
aUIrms[index] = aUIrms[index]*PTCT[index]; //乘以預設比例
SetCtrlVal (hTestedMotor, METERPANEL_NumU1 + index, aUIrms[index]/mtDisplay[0][index].iRat);
++Kp;} //六個電壓電流值設定
}
Mean (&aUIrms[0], 3, & Uav); //電壓平均值
Mean (&aUIrms[3], 3, & Iav); //電流平均值
SetCtrlVal ( hTestedMotor, METERPANEL_VOLTAGEMETER, Uav );
SetCtrlVal ( hTestedMotor, METERPANEL_CurrentMeter, Iav );
MyVal = numScans;
for (kk = 0; kk 《 3*numCyc; kk++) //功率計算
DotProduct (Upek[kk], Upek[kk+3*numCyc], numScans, &PP[kk]);
Kp = 0;
for (index = 0; index 《 numChannels/2; index++){
Mean (& PP[Kp*numCyc], numCyc, &aUIrms[6+index]);
//aUIrms[6]-[9]:三個周期功率平均
aUIrms[6+index] = PTCT[index]*PTCT[index+3]*aUIrms[6+index]/MyVal; //各點功率
SetCtrlVal (hTestedMotor,METERPANEL_NumP1+index, aUIrms[6+index]);
++Kp;
}
通過編寫處理函數就可以實現對于試驗數據的自動處理。根據空載試驗處理的數學模型,我們編寫直線-三次擬合函數
void linefit13(int datanum, double x[], double y[], double *p, double eps)
對試驗數據進行曲線擬合,計算出給最后結果數據。曲線的繪制我們用庫函數PlotXY輸出顯示在控件Graph中。如圖,最后的結果數據同手工計算的結果數據定子電流103.2A,空載損耗93.424kW,鐵耗37.682kW,風摩耗48.165kW相比還是比較精確的。
結束語
可以看出,將虛擬儀器引入電機的型式試驗將給試驗帶來重要影響。利用傳感器測量克服了傳統測量方法的不便,減小了傳統測量儀器的精度對于試驗的影響,試驗的自動采集使得試驗采集的數據更具實時性,試驗的自動處理也減小了人的勞動量、提高了效率和準確性,我們還可以利用計算機進行報表的自動生成和試驗數據的數據庫管理。虛擬儀器大大提高了電機型式試驗的自動化過程。
責任編輯:gt
評論
查看更多