袁威
【摘 要】針對實時仿真器xPC傳統界面單一;難操作;不友好和不能獨立脫離Simulink運行問題,本文分析基于LabVIEW開發出一種能夠解決以上問題的人機界面。探討了xPC實時仿真平臺界面的開發原理,分別對xPC的接口函數API、LabVIEW的調用庫函數節點和界面實現過程及原理進行詳細分析,并且在C語言環境開發編寫加載和釋放API的DLL文件。最后LabVIEW通過調用API構建xPC仿真平臺實時控制功能的圖形化界面,分析表明利用LabVIEW開發的界面與xPC自帶的傳統界面相比,更友好,美觀,易操作并能脫離MATLAB/Simulink運行,具有一定的工程實踐意義。
【關鍵詞】xPC Target;LabVIEW;Simulink;API;監控界面
【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 引言
隨著智能電網的發展,對電網的自動化水平提出了新要求。由于計算機信息技術在電力行業越來越廣泛的應用,管理者可以通過監控系統監控變配電現場的運行工況,并根據實際情況可以對電網進行遠程操作。這給管理者帶來了極大的便利,但是xPC傳統的控制界面單一、不友好、操作繁瑣和不能建立脫離Matlab/Simulink環境的控制程序的缺點,給現代工業測量或控制系統帶來不便。
針對以上問題本文探討利用LabVIEW的強大虛擬儀器控件優點開發出豐富、美觀、更友好、操作簡單的界面。通過LabVIEW中的調用庫函數節點對xPC Target中的API函數進行調用開發圖形化界面。通過LabVIEW中的調用庫函數節點對xPC Target中的API函數進行調用,與常規基于Windows系統開發實時監控系統及采用MathWorks公司自己提供的Matlab中的GUIDE工具進行開發(通過調用API函數)的界面相比,該方法減少了開發成本及簡化了開發過程,且提高了界面的友好性[1]。同時解決了xPC Target和LabVIEW實時通信難題。
1 xPC Target
xPC Target是MathWorks公司基于RTW體系框架的實時仿真平臺,通過Simulink搭建模型,通過Real-Time Workshop和Stateflow Code自動生成代碼,將Simulink模型生成代碼實時運行在低成本的X86或是兼容的PC機實時內核中。并且xPC Target擁有外圍I/O,可以通過它驅動外圍系統或采集。xPC Target通過以太網或串口的連接實現和宿主機的通信,但其宿主機的界面單一,所以本文采用LabVIEW調用DLL開發友好實時監控界面,具有一定的現實意。
2 xPC Target的API
API全稱是應用程序編程接口(Application Programming Interface),xPC Target的API是MathWorks公司在開發xPC Target提供的應用程序接口之一,用戶可以通過調用這種接口可以對實時仿真器xPC Target進行控制并且可脫離Simulink環境運行。通過LabVIEW調用API開發的界面更友好和直觀[2]。開發出的軟件運行在另一臺PC機上即可以對xPC Target中運行的系統實現遠程操作。
3 LabVIEW的程序接口
LabVIEW是美國國家儀器(NI)公司推出的一種程序開發軟件,和C語言開發環境類似,但它和別的開發軟件有顯著的區別,別的開發軟件是采用基于本文的語言代碼,編程難度較大,而LabVIEW是基于圖形化語言編寫程序,它提供很多儀器儀表類似的控件并且擁有美化界面的功能,因此是現代工業和學術研究機構用于開發測量或控制系統的理想選擇。LabVIEW具有強大的外部接口能力,該軟件提供了調用庫函數節點(Call Library Function)控件,可以通過該控件對xPC Target中的API的接口函數進行調用,從而開發出實時仿真器xPC的圖形化界面[3]。
4 開發LabVIEW界面原理
MALAB公司提供的xpcapi.dll包含了所有的API接口函數,還提供了源文件xpcintfree.c和頭文件xpcapi.h,這是用于開發加載API( xPCInitAPI)以及釋放API( xPCFreeAPI)的動態鏈接庫。因此要通過LabVIEW開發出xPC的用戶監控界面,首先通過Visual Studio 2013語言環境開發一個用于加載或釋放xpcapi.dll的DLL文件。然后把用于顯示加載API的動態鏈接庫xPCInitAPI加載到LabVIEW的“調用庫函數節點”控件里面,加載API成功后,通過該控件即可方便選擇不同函數實現相應的功能,當程序結束后通過調用動態鏈接庫xPCFreeAPI釋放API。當在調用不同函數時一定要注意入口參數和出口參數的數據類型。
實現整個用戶界面的過程:
1)通過調用API中的int xPCInitAPI(void)函數進行初始化,若初始化成功,該函數返回參數為1。
2)通過調用int xPCOpenTcpIpPort(const char *ipAddress,const char *ipPort)實現宿主機和目標機之間的網卡通信連接,入口參數Address是指xPC Target的地址,Port是端口號,當宿主機和目標機連接成功后該函數返回參數為不為-1。當然也可以調用別的函數實現串口通信(int xPCOpenSerialPort(int comPort,int baudRate)。
3)通過調用void xPCLoadApp(int port,const char *pathstr,const char *filename)下載仿真系統的相關文件(.dlm)到xPC Target中,入口參數port為xPCOpenTcpIpPort連接成功后的返回參數,參數pathstr為.dlm文件的路徑,filename是相應的文件名。
4)啟動目標機的應用程序通過調用void xPCStartApp(int port),其入口參數為xPCOpenTcpIpPort連接成功后的返回參數。
5)對xPC Target中程序進行監控。監控包含對模型的參數進行調整,和對數據的采集。
(1)對運行參數的調整,在xPC運行的程序中每一個可調的參數都有一個唯一的ID值??梢酝ㄟ^int xPCGetParamIdx(int port,const char *blockName,const char *paramName),獲得相應參數的ID后,即可通過void xPCSetParam(int port,int paramIdx,const char *paramValue)進行參數的調整。
(2)對數據的采集,同樣通過函數xPCGetParamIdx獲得其參數名的ID號,然后通過函數double xPCGetSignal(int port,int sigNum)即可完成對數據的采集。
6)當要停止目標應用程序,可以通過調用函數void xPCStopApp(int port)即可停止目標程序。其中入口參數為連接xPC Target成功后生成的返回參數。
7)當停止目標應用程序后,可以由于實踐中的需要,可以通過調用開始運行的函數從新開始運行程序。如無此需要可以通過調用void xPCUnloadApp(int port)對目標機中的程序進行卸載。并通過void xPCClose(int port)關閉端口釋放API。
5 結語
本文首先詳細解釋了xPC Target中API以及使用LabVIEW調用庫函數節點的原理及過程,并通過調用庫函數實現了xPC和LabVIEW的互聯,解決了通信問題,充分利用了LabVIEW強大虛擬儀器的優點,該方法與傳統的xPC Target界面相比,更友好和直觀,同時和基于文本語言開發過程相比,開發難度小且周期短,可以用于對廣泛應用在工業生產中的xPC Target進行實時監控。
【參考文獻】
[1]顏艷騰,葉周,張銳.搭建基于labview的xPC目標實時仿系統控制平臺[J].電子設計工程,2015,23(3):70-71.
[2]李丁夏.基于xPC Target的數據采集系統開發[D].吉林大學,2013:8-17.
[3]朱野,王旭永,陶建峰,閆述.實時控制系統平臺xPC與LabVIEW接口分析與應用[J].上海交通大學學報,2008,42(2):267-269.
[責任編輯:王偉平]