袁威
【摘 要】針對實時仿真器xPC傳統(tǒng)界面單一;難操作;不友好和不能獨立脫離Simulink運行問題,本文分析基于LabVIEW開發(fā)出一種能夠解決以上問題的人機(jī)界面。探討了xPC實時仿真平臺界面的開發(fā)原理,分別對xPC的接口函數(shù)API、LabVIEW的調(diào)用庫函數(shù)節(jié)點和界面實現(xiàn)過程及原理進(jìn)行詳細(xì)分析,并且在C語言環(huán)境開發(fā)編寫加載和釋放API的DLL文件。最后LabVIEW通過調(diào)用API構(gòu)建xPC仿真平臺實時控制功能的圖形化界面,分析表明利用LabVIEW開發(fā)的界面與xPC自帶的傳統(tǒng)界面相比,更友好,美觀,易操作并能脫離MATLAB/Simulink運行,具有一定的工程實踐意義。
【關(guān)鍵詞】xPC Target;LabVIEW;Simulink;API;監(jiān)控界面
【Abstract】Because the traditional interface of real-time simulator xPC is single, difficult to operate, not friendly and cannot run without Simulink, the intention of this paper is to develop a Man-interface to solve the above problems based on LabVIEW. The paper discusses the development principle of the interface of xPC hardware simulation platform. The interface functions of API, library function node of LabVIEW, the process and principle of the interface are analyzed in detail, and the xPCInitAPI and xPCFreeAPI dynamic link library are developed to achieve the function of loading and unloading of .DLL files in C language environment. Finally, the graphical interface of real time control function of xPC simulation platform is constructed by calling API. The analysis show that the use of LabVIEW development of the interface is friendlier and more beautiful than the traditional interface of xPC, and easy to operate. Most importantly, it can run without MATLAB/Simulink and has a certain practical significance.
【Key words】xPC Target; LabVIEW; Simulink; API; Monitor interface
0 引言
隨著智能電網(wǎng)的發(fā)展,對電網(wǎng)的自動化水平提出了新要求。由于計算機(jī)信息技術(shù)在電力行業(yè)越來越廣泛的應(yīng)用,管理者可以通過監(jiān)控系統(tǒng)監(jiān)控變配電現(xiàn)場的運行工況,并根據(jù)實際情況可以對電網(wǎng)進(jìn)行遠(yuǎn)程操作。這給管理者帶來了極大的便利,但是xPC傳統(tǒng)的控制界面單一、不友好、操作繁瑣和不能建立脫離Matlab/Simulink環(huán)境的控制程序的缺點,給現(xiàn)代工業(yè)測量或控制系統(tǒng)帶來不便。
針對以上問題本文探討利用LabVIEW的強大虛擬儀器控件優(yōu)點開發(fā)出豐富、美觀、更友好、操作簡單的界面。通過LabVIEW中的調(diào)用庫函數(shù)節(jié)點對xPC Target中的API函數(shù)進(jìn)行調(diào)用開發(fā)圖形化界面。通過LabVIEW中的調(diào)用庫函數(shù)節(jié)點對xPC Target中的API函數(shù)進(jìn)行調(diào)用,與常規(guī)基于Windows系統(tǒng)開發(fā)實時監(jiān)控系統(tǒng)及采用MathWorks公司自己提供的Matlab中的GUIDE工具進(jìn)行開發(fā)(通過調(diào)用API函數(shù))的界面相比,該方法減少了開發(fā)成本及簡化了開發(fā)過程,且提高了界面的友好性[1]。同時解決了xPC Target和LabVIEW實時通信難題。
1 xPC Target
xPC Target是MathWorks公司基于RTW體系框架的實時仿真平臺,通過Simulink搭建模型,通過Real-Time Workshop和Stateflow Code自動生成代碼,將Simulink模型生成代碼實時運行在低成本的X86或是兼容的PC機(jī)實時內(nèi)核中。并且xPC Target擁有外圍I/O,可以通過它驅(qū)動外圍系統(tǒng)或采集。xPC Target通過以太網(wǎng)或串口的連接實現(xiàn)和宿主機(jī)的通信,但其宿主機(jī)的界面單一,所以本文采用LabVIEW調(diào)用DLL開發(fā)友好實時監(jiān)控界面,具有一定的現(xiàn)實意。
2 xPC Target的API
API全稱是應(yīng)用程序編程接口(Application Programming Interface),xPC Target的API是MathWorks公司在開發(fā)xPC Target提供的應(yīng)用程序接口之一,用戶可以通過調(diào)用這種接口可以對實時仿真器xPC Target進(jìn)行控制并且可脫離Simulink環(huán)境運行。通過LabVIEW調(diào)用API開發(fā)的界面更友好和直觀[2]。開發(fā)出的軟件運行在另一臺PC機(jī)上即可以對xPC Target中運行的系統(tǒng)實現(xiàn)遠(yuǎn)程操作。
3 LabVIEW的程序接口
LabVIEW是美國國家儀器(NI)公司推出的一種程序開發(fā)軟件,和C語言開發(fā)環(huán)境類似,但它和別的開發(fā)軟件有顯著的區(qū)別,別的開發(fā)軟件是采用基于本文的語言代碼,編程難度較大,而LabVIEW是基于圖形化語言編寫程序,它提供很多儀器儀表類似的控件并且擁有美化界面的功能,因此是現(xiàn)代工業(yè)和學(xué)術(shù)研究機(jī)構(gòu)用于開發(fā)測量或控制系統(tǒng)的理想選擇。LabVIEW具有強大的外部接口能力,該軟件提供了調(diào)用庫函數(shù)節(jié)點(Call Library Function)控件,可以通過該控件對xPC Target中的API的接口函數(shù)進(jìn)行調(diào)用,從而開發(fā)出實時仿真器xPC的圖形化界面[3]。
4 開發(fā)LabVIEW界面原理
MALAB公司提供的xpcapi.dll包含了所有的API接口函數(shù),還提供了源文件xpcintfree.c和頭文件xpcapi.h,這是用于開發(fā)加載API( xPCInitAPI)以及釋放API( xPCFreeAPI)的動態(tài)鏈接庫。因此要通過LabVIEW開發(fā)出xPC的用戶監(jiān)控界面,首先通過Visual Studio 2013語言環(huán)境開發(fā)一個用于加載或釋放xpcapi.dll的DLL文件。然后把用于顯示加載API的動態(tài)鏈接庫xPCInitAPI加載到LabVIEW的“調(diào)用庫函數(shù)節(jié)點”控件里面,加載API成功后,通過該控件即可方便選擇不同函數(shù)實現(xiàn)相應(yīng)的功能,當(dāng)程序結(jié)束后通過調(diào)用動態(tài)鏈接庫xPCFreeAPI釋放API。當(dāng)在調(diào)用不同函數(shù)時一定要注意入口參數(shù)和出口參數(shù)的數(shù)據(jù)類型。
實現(xiàn)整個用戶界面的過程:
1)通過調(diào)用API中的int xPCInitAPI(void)函數(shù)進(jìn)行初始化,若初始化成功,該函數(shù)返回參數(shù)為1。
2)通過調(diào)用int xPCOpenTcpIpPort(const char *ipAddress,const char *ipPort)實現(xiàn)宿主機(jī)和目標(biāo)機(jī)之間的網(wǎng)卡通信連接,入口參數(shù)Address是指xPC Target的地址,Port是端口號,當(dāng)宿主機(jī)和目標(biāo)機(jī)連接成功后該函數(shù)返回參數(shù)為不為-1。當(dāng)然也可以調(diào)用別的函數(shù)實現(xiàn)串口通信(int xPCOpenSerialPort(int comPort,int baudRate)。
3)通過調(diào)用void xPCLoadApp(int port,const char *pathstr,const char *filename)下載仿真系統(tǒng)的相關(guān)文件(.dlm)到xPC Target中,入口參數(shù)port為xPCOpenTcpIpPort連接成功后的返回參數(shù),參數(shù)pathstr為.dlm文件的路徑,filename是相應(yīng)的文件名。
4)啟動目標(biāo)機(jī)的應(yīng)用程序通過調(diào)用void xPCStartApp(int port),其入口參數(shù)為xPCOpenTcpIpPort連接成功后的返回參數(shù)。
5)對xPC Target中程序進(jìn)行監(jiān)控。監(jiān)控包含對模型的參數(shù)進(jìn)行調(diào)整,和對數(shù)據(jù)的采集。
(1)對運行參數(shù)的調(diào)整,在xPC運行的程序中每一個可調(diào)的參數(shù)都有一個唯一的ID值??梢酝ㄟ^int xPCGetParamIdx(int port,const char *blockName,const char *paramName),獲得相應(yīng)參數(shù)的ID后,即可通過void xPCSetParam(int port,int paramIdx,const char *paramValue)進(jìn)行參數(shù)的調(diào)整。
(2)對數(shù)據(jù)的采集,同樣通過函數(shù)xPCGetParamIdx獲得其參數(shù)名的ID號,然后通過函數(shù)double xPCGetSignal(int port,int sigNum)即可完成對數(shù)據(jù)的采集。
6)當(dāng)要停止目標(biāo)應(yīng)用程序,可以通過調(diào)用函數(shù)void xPCStopApp(int port)即可停止目標(biāo)程序。其中入口參數(shù)為連接xPC Target成功后生成的返回參數(shù)。
7)當(dāng)停止目標(biāo)應(yīng)用程序后,可以由于實踐中的需要,可以通過調(diào)用開始運行的函數(shù)從新開始運行程序。如無此需要可以通過調(diào)用void xPCUnloadApp(int port)對目標(biāo)機(jī)中的程序進(jìn)行卸載。并通過void xPCClose(int port)關(guān)閉端口釋放API。
5 結(jié)語
本文首先詳細(xì)解釋了xPC Target中API以及使用LabVIEW調(diào)用庫函數(shù)節(jié)點的原理及過程,并通過調(diào)用庫函數(shù)實現(xiàn)了xPC和LabVIEW的互聯(lián),解決了通信問題,充分利用了LabVIEW強大虛擬儀器的優(yōu)點,該方法與傳統(tǒng)的xPC Target界面相比,更友好和直觀,同時和基于文本語言開發(fā)過程相比,開發(fā)難度小且周期短,可以用于對廣泛應(yīng)用在工業(yè)生產(chǎn)中的xPC Target進(jìn)行實時監(jiān)控。
【參考文獻(xiàn)】
[1]顏艷騰,葉周,張銳.搭建基于labview的xPC目標(biāo)實時仿系統(tǒng)控制平臺[J].電子設(shè)計工程,2015,23(3):70-71.
[2]李丁夏.基于xPC Target的數(shù)據(jù)采集系統(tǒng)開發(fā)[D].吉林大學(xué),2013:8-17.
[3]朱野,王旭永,陶建峰,閆述.實時控制系統(tǒng)平臺xPC與LabVIEW接口分析與應(yīng)用[J].上海交通大學(xué)學(xué)報,2008,42(2):267-269.
[責(zé)任編輯:王偉平]