APP下载

基于LabVIEWd的xPC—Target人机界面的研究综述

2016-10-11袁威

科技视界 2016年24期

袁威

【摘 要】针对实时仿真器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.

[责任编辑:王伟平]