1.问题描述
在半物理仿真测试中需要调用仿真机上的硬件设备实现仿真设备间数据通信、模拟和数字信号的采集或驱动等功能。在Veristand实时测试配置环境中可以通过创建Custom Device自定义设备实现PXI机箱(仿真机)上的硬件设备调用。
那么什么是Custom Device?
个人理解Custom Device是Veristand功能上的一种扩展。Veristand只作为一种环境配置工具存在,可以将Simulink模型编译生成的dll文件配置在实时环境中运行。但是不能实现对模型产生或接收数据的运算操作(编程、运算),特别是涉及到硬件调用的操作,比如需要将串口接收到的数据传送给Simulink模型。这时就需要Custom Device作为数据的“二传手”,首先从串口中接收数据并处理,然后将处理好的数据发送给模型的输入端口。Custom Device的实质是通过特定的Labview编程方式调用PXI机箱(仿真机)上的硬件外设,将编好的程序通过“程序生成”,生成特定的llb文件,在Veristand配置环境中,可以调用生成的llb文件,最终实现Labview程序在RT环境中运行,实现数据采集或处理的功能。
这里可能有疑惑要问LabVIEW程序要是在RT下运行可以通过在LabVIEW下创建实时工程的方法来解决,为什么还要生成llb文件这么繁琐?这又回到了最核心的问题,因为我们想实现Simulink模型在实时环境下运行!想要调用Simulink模型就必须在Veristand环境下配置!想在Veristand环境下调用硬件就必须创建Custom Device(调用硬件可能不只有创建Custom Device这一种方法)!
本文将会讲解如何创建一个涉及到串口的Custom Device并在Veristand环境中配置运行。
另注:以上对Custom Device说明的源自于个人理解,不代表官方资料解释.
2.问题解答
2.1准备工作
软件环境:NI Labview 2015,NI Veristand 2015,Microsoft Visual Studio 2008
硬件环境:PXIe-8135,PXI-8434 RS232串口卡,Serial S8串口线,飞行控制器V3。
2.2程序功能
(1)在Veristand实时环境中加入一个串口的自定义设备。
(2)将模型产生数据通过串口发送至飞行控制器,并接收飞控发送的控制量,将控制量传送至模型中对应的input端口。
2.3开发过程
(1)打开LabVIEW安装目录下的LabVIEW 2015\vi.lib\NI Veristand <vi.lib>\NI Veristand\Custom Device Tools\Custom Device Template Tool\Custom Device Template Tool.vi。这个vi的作用是配置我们要建立的Custom Device工程的信息。运行这个vi后会生成一个Labview工程,Custom Device的具体功能会在到时候生成的工程中去设计。Target Folder含义为该Custom Device项目的保存目录,Custom Device Name为自定义设备的名称,Execution Mode选择异步运行方式。由于这个教程不涉及到Extra Page,所以对第4项不用更改。
图1 配置Custom Device Template Tool.vi
(2)运行该vi,得到PXI_8434 Custom Device Project.lvproj,关闭Custom Device Template Tool.vi。
(3)展开新创建工程中的PXI_8434 Custom Device.lvlib,如下图所示:
图2 自动生成的Custom Device Project
展开后可以看到工程中包括4个vi文件,其中:
PXI_8434 Initialization.vi实现的功能是当Veristand中创建该Custom Device时,为Custom Device创建相对应的属性和通道;
PXI_8434 Main Page.vi实现的功能是在Veristand中显示Custom Device的属性和通道的信息;
PXI_8434 RT Driver.vi是Custom Device的执行核心,也是最终在RT环境下运行的程序,Custom Device调用外设和数据处理的功能就是在这个vi中实现的。
(4)打开PXI_8434 Initialization.vi,利用Projiect里面Custom Device API.lvlib里面的API函数创建通道和属性。
这里解释一下通道和属性的区别:
Channel(通道):Channel(通道)是针对我们要生成的Custom Device而言的。因为我们创建的Custom Device需要与Simulink模型实现数据交互,因此需要有与模型数据相对应的输入和输出通道。输入是指从模型向Custom Device注入数据的通道。输出是指从Custom Device向Simulink模型注入数据的通道。
Property(属性):Property(属性)是针对我们生成Custom Device时所调用的硬件设备(板卡等)而言的。因为硬件设备(板卡等)在调用时需要设置板卡的属性,比如对于多用IO卡需要配置板卡的通道对应的功能,对于串口卡需要配置所使用的串口号、波特率等。
对PXI_8434 Initialization.vi修改后包括5个部分,如图3所示。1、3部分中使用的VI是Add Custom Device Section,实现逻辑上的分组,如输入和输出;2、4部分使用的VI是Add Custom Device Channel,为各分组添加通道;第5部分属性配置在Main Page中介绍。
图3 修改后的PXI_8434 Initialization.vi
(5)保存好PXI_8434 Initialization.vi后打开PXI_8434 Main Page,在此VI中配置 Custom Device属性,在该项目中也就是配置串口板卡的属性,我们通过MAX确定我们调用的串口为COM3,因此在COM Board Resource Name设置为COM3。由于串口的参数可以在RT中设置,因此本例中的Pattern只做创建工作,不会真正去调用,设置Pattern默认为0。
另外多说明一下,Main page中采用了一个顺序帧结构和一个事件结构。在顺序帧结构中所做的工作是读取默认的属性,当属性在Veristand中的配置改变时,会通过事件结构将新值赋给Custom Device属性。
图4 修改后的Main page程序框图
(6)保存PXI_8434 Main Page,打开PXI_8434 RT Driver VI.vi。添加代码来读取Custom Device属性中的Resource和Pattern,默认Resource为COM3,默认Pattern为0,如图5所示。除了串口名外,对传口其他参数的配置采用VISA串口配置控件,设置波特率等参数。
图5 RT Driver VI中获取板卡资源和Pattern信息,初始化并配置串口
利用RT FIFO Read获取模型产生的数据,并利用局部变量写入到VISA串口板卡里面;利用RT FIFO Write,将VISA串口板卡获得的信息写入到OUT_1里面,系统框图如图:
图6 RT.vi系统框图
(7) 保存所有VI,打开项目中程序生成规范“Configuration”。一般情况下不需要更改里面的设置,如果你在一开始的时候创建了Extra Page,请在生成规范里面的“源文件”中,将Extra Page相关的VI添加到“始终包含”里面。
(8)在“Engine”程序生成规范的“源文件设置”里面,将目标变为“PXI_8434 Engine LLB”。设置的目的在于Veristand下载程序到RT的时候只会下载Custom Device的Engine LLB,如果不将所需要支持的文件放到这个LLB里面,Veristand会在部署的过程中提示VI断开,无法执行。另外一种方式就是通过FTP,将所需的文件手动地添加到Real-time控制里面Custom Device相对应的文件夹中(C:\ni-rt\Veristand\Custom Devices\Custom Device Name)。
(9)保存配置,生成“Configuration”和“Engine”。两个LLB和相对应的XML文件会自动生成在Veristand的<Custom Device>文件夹中,如图7所示。(Win7的位置位于:C:\Users\Public\Documents\National Instruments\NI VeriStand 2015\Custom Devices)
图7 生成的文件
2.3试验验证
(1)建立一个Simulink模型,具有两个输出端口和一个输入端口,按照要求配置编译器,注意模型Solver需要选择为定步长求解,步长可选择为1ms,编译后生成模型对应的dll文件。
图8 测试模型
(2)在Veristand中创建测试项目,配置Controller,添加Custom Device(PXI_8434),配置Resource为COM3(根据MAX的串口名和自己的使用需求设定),如下图所示。
图9 配置Veristand,创建PXI_8434的Custom Device
(3) 保存并关闭System Explorer,打开Project Explorer里面的Tools->Workspace Tools->Console Viewer,如下图所示:
图10 控制台信息
(4)在System Explorer中,通过Tools->Edits Mappings映射Simulink模型与Custom Device的引脚,如图11所示。
图10 Edits Mappings映射
(5)在台式机上接入一根Usb转串口的连接线,打开串口助手后选择好对应的Com口通道。
(6)在Workspace中创建两个个数值输入控件和数值显示控件,分别映射到Custom Device上面的IN和OUT:
图11 在work space中创建输入和显示控件并关联Custom Device通道
(7)通过串口线缆将板卡上的COM3与USB串口连接,明确DB9引脚的定义,保证收发对接正确。
(8)运行Veristand,运行串口助手,以1000ms为周期向pxi_8434发送字符串“1.0000”,同时观察串口接收区,如图12所示。
图12 串口数据发送及监测
观察Workspace,可以看到模型产生两个数据分别为1、2,这两个数据通过串口Custom Device发送至串口助手,也就是我们在串口接收区接到的数据。同时我们还可以Workspace看到Out显示值为1.这个值就是我们通过串口助手向串口板卡的“1.00”,如图13所示。
图13 WorkSpace数据状态显示
2.4最终发布
Custom Device调试完之后需要发布到另外一台电脑上面,进行更进一步的测试和最终发布。
- 创建Readme.txt用来介绍该Custom Device实现的功能、适用条件以及使用方法。
- 将源代码(往往创建一个Source文件夹)、生成的Custom Device(往往创建一个Built文件夹)以及Readme.txt打包发布。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)