搭建基于labview的xPC目标实时仿真系统控制平台

2015-01-25 10:50颜艳腾
电子设计工程 2015年3期
关键词:宿主机调用IP地址

颜艳腾 , 叶 周 , 张 锐

(1.中国科学院 上海微系统与信息技术研究所,上海 200050;2.上海微小卫星工程中心 上海 201203)

xPC目标是MathWorks公司提供和发行的一个基于RTW体系框架的附加产品,可将Intel80x86/Pentium计算机或PC兼容机转变为一个实时系统,而且支持许多类型的I/O设备,用户只需安装相关的软件、一个编译器和I/O设备板,就可将一个PC兼容机作为实时系统,来实现控制系统或DSP系统的快速原型化、硬件在回路中的测试和配备实时系统的功能[1-2]。xPC目标通过以太网连接或串口线连接来实现宿主机和目标机之间的通信[3]。然而xPC目标机显示界面单一,基本不能人为操作,大大降低了目标程序的可操作性。而labview作为图形化编程语言,具有编程效率高界面友好直观的特点[4],LabVIEW能够提供强大的外部接口能力,可以调用xPC目标的API实现对目标程序的操作,可以利用labview来编制宿主机的控制界面,具有一定的工程意义。

1 xPC目标机

xPC目标是一种用于产品原型开发,测试和配置实时系统的PC机解决途径。xPC目标采用了宿主机-目标机的技术途径,即“双机”模式,宿主机和目标机可以是不同类型的计算机。其中,宿主机用于运行Simulink,而目标PC机则用于执行所生成的代码。xPC目标提供了一个高度减缩型的实时操作核,运行在目标PC机上,该实时核采用了32位保护模式。xPC目标通过以太网连接或串口线连接来实现宿主机和目标机之间的通信。显示了快速原型化环境中xPC目标的使用情况。

图1 双机模式的xPC目标Fig.1 Dual mode of xPCtarget

xPC可实现在宿主机上设计、创建目标应用程序,然后在目标机上运行并测试目标应用程序。xPC目标的功能包括可对目标应用程序进行交互式的控制、获取信号数据和实时地调整参数。

xPC目标实时仿真的基本步骤:

1)通过xPCTarget Explorer设置宿主机和目标机的通信机制,如通信协议设为TCP/IP,设置目标机的IP地址、子网掩码、端口号等。

2)根据配置的xPC目标运行环境制作目标启动盘,最为方便的是U盘启动盘,引导成功后即可启动xPC Target的实时内核。

3)设置Simulink仿真模型的仿真参数,其中必须设置的是Solver options为固定步长,在Real-Time Workshop中系统目标文件为xpctarget.tlc。编译模型,得到后缀名为.dlm的已编译文件。

4)启动连接xPC目标,下载执行应用程序。在宿主机使用xPCTarget Explorer或调用xPCTarget API函数连接目标机,下载已编译的.dlm文件,启动应用程序,即可实现宿主机对目标机的控制与遥测,如设置模块参数和读取输出信号等。

2 labview与xPC目标接口设计

2.1 xPC目标API函数分析

2.1.1 API函数介绍

xPC目标为用户创建自己的宿主机图形界面程序提供了一组API函数,这组API函数包括:处理宿主机/目标机通信的函数;目标机程序管理函数;数据记录函数;示波器管理函数;信号监视和参数调整函数;错误处理和其他用途函数。xPC目标的API函数以两种方式提供给用户,动态链接库(dynamic link library,DLL),对象组件模块(component object model,COM)[5]。任何一种方式都可以用于创建控制目标机实时程序的用户界面。

根据xPC外部接口程序调用流程可做如下归类分析:

1)建立宿主机和目标机的通信连接。我们采用TCP/IP协议进行通信,通信函数为:int xPCOpenTcpIpPort(const char*ipAddress,const char*ipPort);注意函数返回一个正整数值,称为port,若port值为非负整数,则表明宿主机与目标机连接成功,并且作为连接句柄,后面的API函数都要用到该port值作为传入参数;若port值为-1,则表明连接失败。

2)下载目标应用程序到目标机上。函数为:void xPCLoadApp(int port, const char*pathstr, const char*filename)。

3)启动目标机上的目标应用程序。函数为:void xPCS tartApp(int port)。

4)监控并记录目标应用程序在目标机上的运行情况。这里包括设置目标应用程序运行参数,监测目标应用程序中信号,使用文件系统函数保存记录数据等一系列函数。

2.1.2 设置目标机上应用程序参数

xPC目标为目标应用程序中每个可调的参数分配唯一的ID值,可以根据Simulink模型中参数所在的模块名以及参数名获取该参数在目标应用程序中分配的ID值。获取指定参数 ID 值的函数为:int xPCGetParamIdx (int port,const char*blockName,const char*paramName)。得到参数的ID值后就可以调用函数 void xPCSetParam(int port, int paramIdx, const double*paramValue)完成目标应用程序参数的设置。

2.1.3 监测目标机上应用程序中的信号

信号在Simulink模型中主要体现在输出上,获取目标机上目标应用程序信号的方法和调整参数类似,也需要获得目标应用程序中指定信号的唯一ID值,调用的函数为int xPCGetSignalIdx(int port, const char*sigName)。 读取单个信号值的函数为 double xPCGetSignal (int port, int sigNum),值得一提的是,信号可以批量获取,对应函数为int xPCGetSignals(int port, int numSignals, const int*signals, double*values),此时应该传入信号集ID的数组。

2.2 labview调用xPC目标API函数

2.2.1 创建初始化DLL动态链接库

xPC目标API是以DLL文件的形式提供的,所有的API函数都封装在xpcapi.dll中,因此在调用API函数之前必须正确加载xpcapi.dll。xPC目标提供了在C程序中加载xpcapi.dll的C代码源程序xpcinitfree.c,在该源程序中定义了初始化函数int xPCInitAPI(void)用于显示加载 xPC目标 API DLL。程序在设计时需在初始化阶段调用该函数加载DLL,结束时则需要释放DLL,同样在xpcinitfree.c中提供了释放DLL的函数 int xPCFreeAPI(void)。

Matlab只提供了用于初始化加载和释放xPC目标API DLL的C语言接口头文件xpcapi.h和C源代码xpcinitfree.c,并没有提供可供LabVIEW直接调用的DLL文件,因此我们首先需要利用现有资源编写生成能够实现初始化加载和释放xPC目标API DLL的DLL文件xPCInitFree.dll。本文在Visual C++6.0环境下建立支持xPC目标API调用初始化与资源释放的动态链接库。使用Visual C++6.0创建DLL的一般步骤为:新建一个MFC AppWizard(dll)工程,定义外部接口,编写外部接口函数的实现。参考在源文件xpcinitfree.c中分别用于实现xpcapi.dll的加载和卸载函数int xPCInitAPI(void)和 void xPCFreeAPI(void),定义 2 个主要的动态链接库接口xPCInitAPI和xPCFreeAPI。执行加载操作的同时初始化xPC目标API定义的的常量,映射xPC目标API与C程序之间的数据类型,定义API中使用的数据结构;执行卸载操作时恢复xPC目标API使用的常量的初始值,并注销所使用的数据结构类型。

2.2.2 启动xPC目标

在使用xPC目标前,需要启动xPC目标,一般通过USB启动[6],在 Matlab命令行中键入 xpcexplr进入 xPC Target Explorer进行配置,如通信、多核支持等,生成DOS启动镜像,通过DOS启动盘进行引导启动。

图示采用TCP/IP通信协议,IP地址和端口即为xPC目标启动的IP地址和端口。

3 利用labview创建宿主机控制界面

下面我们依照xPC调用API流程来设计labview程序。首先链接xPC目标,此时我们需要知道xPC目标机的IP及端口值(可以在制作xPC目标机启动盘时设置)。

图2 配置xPC目标Fig.2 Configuration of xPCtarget

图3 xPC目标运行界面Fig.3 xPCtarget running interface

在labview面板找到调用库函数节点,查找路径互连接口→库与可执行程序→调用库函数节点。设计连接xPC目标机的labview程序,如图4所示。

图4 连接xPC目标Fig.4 Connect the xPCtarget

依次设计下载目标应用程序、启动目标应用程序、卸载目标应用程序、关闭xPC目标连接、释放资源的基本流程实现LabVIEW调用xPC目标API函数,并将各个流程模块打包设计成子vi,完整labview程序设计如图5所示。

此时便设计完成了一个基于labview的宿主机控制平台。经过实验测试,完全可以实现来控制xPC目标程序的链接、下载、运行、信号监测等一些列功能,并且可以在此基础上通过调用不同API函数来实现对xPC目标程序更多的控制。

软件的基本运行流程为:

1)配置目标机IP地址和端口,连接网络

根据xPC目标机的IP地址及其端口,可以执行连接网络和断开网络的操作。首先确保上位机和下位机网络接口的连接,并设置上位机IP地址和xPC目标IP地址在同一个局域网内,然后才能进行TCP/IP连接操作。后面涉及xPC目标的所有操作必须建立在宿主机和目标机的连接基础上。

图5 基于labview的宿主机控制程序Fig.5 Labview-based host control program

2)选择待下载应用程序(.dlm),下载程序

Simulink实时框架模型通过C编译会生成后缀名为dlm的编译文件,目标机连接成功后,可选择待下载的已编译程序,执行下载程序、运行程序、停止程序和卸载程序操作。

3)设置参数并运行程序

设置参数和获取信号是xPC目标API提供的核心功能,调用相应的API函数,我们只需要传入参数模块在Simulink程序模型中的路径和参数值。可以在软件中设置路径常量,也可以通过UI输入路径。

4)数据遥测

数据遥测的方式包括读取信号和示波器控制。获取信号也是需要传入参数模块在Simulink程序模型中的路径,遥测的数据可以通过文本和数据图表实时显示。示波器控制可为xPC目标添加目标示波器观察信号,基本步骤为添加示波器、

添加新号和启用示波器。

5)卸载程序并断开网络

在程序运行结束后,可以选择卸载程序和断开网络。

4 结束语

该测试系统采用具有高速数据采集卡的便携式测试计算机为硬件平台,软件设计采用模块化设计思想本文介绍了xPC目标的双机模式,以及模型仿真的具体步骤。详细分析了xPC目标API函数的结构与用途,研究了labview与xPC的接口问题,实现了通过labview调用xPC目标API函数的目的,并基于labview[7]设计某模型的xPC目标程序的控制软件,实现了宿主机对目标机的远程控制。这样也弥补了xPC目标界面单一操作不友好的问题,可以充分有效的发挥xPC目标实时仿真系统的优势。

[1]吴剑,孙秀霞.采用MATLAB中的xPCTarget对硬件进行操作[J].现代电子技术,2002(4):59-60.WU Jian,SUN Xiu-xia.Hardware practised with matlab of xPCtarget[J].Modern Electronics Technique,2002(4):59-60.

[2]张江滨,姚辉,杨晓萍.构建基于XPC目标的实时仿真测试系统[J].水利水电技术,2005,36(1)70-72.ZHANG Jiang-bing,YAO Hui,YANG Xiao-Ping.A real-time simulation testing systembased on XPC target[J].Water Resources And Hydropower Engineering,2005,36(1)70-72.

[3]王超,王仕成,刘志国.基于Matlab/xPC Target的实时仿真系统研究[J].控制工程,2007(7):165-167.WANG Chao,WANG Shi-cheng,LIU Zhi-guo.Research on beal time simulation system based on matlab/xPC target[J].Control Engineering of China,2007(7):165-167.

[4]侯国屏,王坤,叶齐鑫,等.labview7.1编程与虚拟仪器设计[M].北京:清华学出版社,2005.

[5]朱野,王旭永,陶剑峰,等.实时控制系统平台xPC与labview接口分析及应用[J].上海交通大学学报,2008,42(2):266-269.ZHU Ye,WANGXu-yong,TAO Jian-feng,et al.Analysis and utilization of interface between xPC target and LabVIEW[J].Journalof ShangHaiJiaoTongUniversity,2008,42(2):266-269.

[6]江绍明,毕效辉.采用U盘制作xPC目标启动盘[J].自动化与仪表,2008(6):53-56.JIANG Shao-ming,BI Xiao-Hui.Creation of an xPC target boot based on USB flash disk[J].Process Automation Instrumentation,2008(6):53-56.

[7]姚丽,刘东东.基于LabVIEW的数据采集与信号处理系统设计[J].电子科技,2012(5):79-81.YAO Li,LIU Dong-dong.Design of the data acquisition and signal processing system based on LabVIEW[J].Electronic Science and Technology,2012(5):79-81.

猜你喜欢
宿主机调用IP地址
嵌入式计算机软件测试关键技术研究
铁路远动系统几种组网方式IP地址的申请和设置
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
IP地址切换器(IPCFG)
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
基于系统调用的恶意软件检测技术研究
利用RFC技术实现SAP系统接口通信