《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于LabVIEW和USB-CAN卡的实时数据采集系统及应用

基于LabVIEW和USB-CAN卡的实时数据采集系统及应用

2008-07-07
作者:杜 青,汪殿龙,王兴媛,齐铂金

    摘 要: 针对燃料电池电动汽车所用大功率DC/DC" title="DC/DC">DC/DC变换器" title="变换器">变换器开发了一套基于LabVIEW和USB-CAN" title="USB-CAN">USB-CAN卡的数据采集" title="数据采集">数据采集" title="实时数据采集" title="实时数据采集">实时数据采集">实时数据采集和控制系统,实现了PC机与CAN总线间的通信。
    关键词: 虚拟仪器  LabVIEW  USB-CAN  ActiveX  数据采集

 

    大功率DC/DC变换器在燃料电池电动汽车中是关键零部件之一。为了研究其变换规律及进行数据分析,需要对其各类参数进行数据采集。LabVIEW是美国NI公司推出的一种虚拟仪器软件开发工具,是当今计算机辅助测试(CAT)领域的一项重要技术,功能强大,开发效率高,界面友好美观,因此采用基于LabVIEW的开发平台研究大功率DC/DC变换器数据采集系统是一种有效可行的途径。
1 测试系统结构图
    燃料电池电动汽车用DC/DC变换器功率高达100kW以上,输入输出电压电流、工作温度是变换器的主要状态参数。为了及时准确地了解和分析DC/DC的工作状态就需要记录并分析上述各参数,因此,开发一套DC/DC变换器实时数据采集系统是必要的。
    CAN总线因具有实时性强、可靠性高、通信速率快、总线协议错误处理机制完善等特点而广泛应用于汽车电子业;USB总线因其传输速率快、即插即用、通用性强、易扩展和性价比高等特点而越来愈多地应用于数据采集系统中。本系统采用TI公司的DSP2407作为下位机DC/DC变换器控制板主控芯片,通过改变PWM驱动波形来控制主电路IGBT开关管通断,以实现对出口电压电流的调节。同时通过霍尔传感器将上述参数采集到2407芯片中通过CAN总线经USB-CAN转换器将信号发送到PC机的USB口,并用LabVIEW处理显示,硬件平台如图1所示。

                 
    LabVIEW提供了PCI总线、GPIB总线、VIX总线、串口总线的图形化驱动程序,但是没有直接支持USB总线驱动程序的功能模块,这给使用USB设备完成数据采集的用户带来了一定的困难。
2 软件编程设计思路
2.1 虚拟仪器开发层次图

    虚拟仪器的核心思想是“软件即是仪器”,用软件来代替传统的硬件仪器,以节约成本,提高开发效率和增强系统的灵活性。它的层次结构图如图2所示[1]

                  
    图2中每个模块都具有标准化接口,可以纵向与相邻的模块互相通信,也可以使同层次的虚拟模块之间互连。底层驱动程序是整个软件的基础,其功能首先是利用硬件模块标准接口对其进行控制和管理,同时为上一层模块提供标准的调用接口,使上一层软件设计与硬件无关,从而使整个系统的开发与仪器的硬件变化无关。
2.2 USB总线驱动模型
    由于本系统的硬件平台是通过USB总线实现与PC机通信,了解和掌握USB总线的驱动机制是有必要的。Windows操作系统下USB总线驱动模型如图3所示[2]

                     
    USB驱动程序属于WDM(Win32 Driver Module)驱动程序,采用分层驱动模式。驱动程序最上层包含一个函数驱动程序,它可以是一个类别驱动程序或一个特定的设备驱动程序,用于管理应用层与较低层总线间的通信;驱动程序模型最底层包含一个总线驱动程序,用于管理函数驱动程序与设备硬件之间的通信;驱动程序中间有一个或数个过滤驱动程序用来辅助函数驱动程序与总线驱动程序。应用程序使用Win32 API函数与操作系统通信,驱动程序彼此间使用I/O请求封包IRP(I/O Request Packet)来通信。Windows定义了一群驱动程序可以使用的IRP,每一个IRP执行一个输入或输出要求。总线驱动程序由操作系统提供,用户不需要自己编程开发,设备驱动程序可以由操作系统提供,也可以由设备生产厂商提供[2]
3 具体编程实现
3.1 VCI函数调用流程图
    本系统采用德国IXXAT公司的USB-CAN卡完成信号转换。与诸多CAN卡厂商一样,IXXAT公司为其每块PC/CAN-Interface都提供了一套功能强大的软件开发包VCI(Virtual CAN Interfaces),以备用户在PC机上开发应用程序使用,该开发包包含了基于Windows API函数的Demo程序和通用通信程序模块DLL文件,剩下的工作主要是通过LabVIEW实现提供的各种功能函数的调用,从而完成应用程序对设备的访问。具体操作流程图如图4所示。

                             
3.2 LabVIEW编程实现
    在LabVIEW中实现对VCI的访问有两种方法:一种方法是通过Advanced面板中CLF(Call Library Function)节点调用动态链接库,另一种方法是通过Communication 面板中的ActiveX控件[3]直接使用VCI中的方法和属性。
    CLF节点的配置方法如图5所示:用户通过Library Name or Path来选择DLL存放的路径,通过Function Name来选择要使用的函数名,Calling Conventions来选择WinAPI或是自己开发的C函数,通过Add/Delete Parameter来增加或删除参数,通过Parameter来设置参数名,通过Type来指定参数类型。该节点使得LabVIEW的功能更加全面灵活,应用极为广泛。本系统采用的是第二种方法,即用ActiveX控件来实现函数的调用。

                            
3.2.1 ActiveX简介
    ActiveX通常翻译为“微软倡导的网络化多媒体对象技术”,它实际上是一整套建立在COM(The Component Object Model组件对象模型)和OLE(Object Linked And Embedded对象连接与嵌入)基础之上跨越编程语言的软件开发方法与规范。所有的ActiveX 控件都是属性和方法的组合体,一组属性和方法就构成了通常所说的接口。通过利用ActiveX,LabVIEW 既可以作为客户机控制其他外部应用程序,又可以担当服务器,从外部应用程序控制LabVIEW [3]。LabVIEW 中的ActiveX Controls 子模板提供的控制型控件包括:包容器(container)、变体数据类型(variant)、自动化标志(automation refnum)、调用节点(Invoke Node)及属性节点(Property Node)。对于这些控件来说,LabVIEW已经变为客户端。一般情况下, 任何ActiveX控件都可以嵌入到LabVIEW中,然后使用其属性和方法,实现所需的功能[4],从而使程序功能更加强大,节约开发时间。
    本系统是以LabVIEW作为客户端,以VCI作为服务器实现PC与USB-CAN卡的通信。
3.2.2 USB-CAN卡初始化
    欲调用VCI对象的属性和方法,首先要通过Automation Open节点来开启ActiveX服务器,而Automation Open节点的Refnum输入是由Automation Refnum节点提供的。如图6所示,在前面板放置Automation Refnum节点,右击鼠标弹出菜单,选择Select ActiveX Class,从子菜单选择“Browse”,可以看到能够获取的控件及其属性列表以及系统中的LabVIEW接口,在这里笔者选择VCIWrapper 1.0 Type Library Version 1.0中的VCIWrap对象,再将该节点与Automation Open节点相连,这样就打开了与VCI服务器相连的Refnum。通过该Refnum传递给模板中其他节点函数,进而编程实现具体功能。
    
                       

    USB-CAN卡初始化是通过Invoke Node节点调用VCI_SelectHardware和VCI_PrepareBoard两个函数完成,前者读取设备号、设备类型、名称、厂商等信息,后者生成Board-Handle以供后续程序使用。
3.2.3 CAN总线初始化
    CAN总线初始化是通过VCI_InitCan、VCI_SetAccMask、VCI_ConfigQueue、VCI_ConfigRx-QueObj
和VCI_StartCAN这几个函数完成的。根据约定的协议,调用VCI_InitCan设置CAN通道、波特率(250kbps)和工作模式(扩展帧),调用VCI_SetAccMask、VCI_ConfigQueue和VCI_ConfigRxQueObj设置PC机接收ID及其掩码以及接收和发送队列长度等准备工作,最后由VCI_StartCAN启动CAN总线。
3.2.4 数据发送和接收
    发送采取手动方式,当发送按钮按下时,给定的电压、电流和电源工作方式信号将通过VCI_TransmitObj函数送出给DSP2407。接收端采用循环采样方式接收2407每隔50ms发送过来的数据,该数据包括DC/DC实际电流、电压、温度、life值和Status_Flag状态码。
3.2.5  数据显示和储存
    采样进来的电压和电流信号可以通过LabVIEW前面板中的Numeric Control以数字方式显示,也可以通过Waveform Chart以波形方式实时显示,温度信号可以通过Thermometer显示,Life值通过Horizontal Graduated Bar显示;数据存储一般是用Excel表完成的,可以通过使用LabVIEW中文件I/O模块或用ActiveX调用Excel组件[4],笔者认为前者更方便些,用户可以根据自己的喜好选择。
3.2.6 实验数据结果
    图7是通过Excel实时记下的实验数据。可以看出,基于LabVIEW的大功率DC/DC变换器数据采集系统实现了数据采集的实时性,在上位机上能够动态地显示采集到的电压、电流等数值和波形,并可以将采集到的数据以电子表格的形式保存下来,达到设计的要求。

                       
    本文设计了一种硬件基于USB-CAN卡,软件基于LabVIWE的实时数据采集控制系统,分析了开发虚拟仪器与USB总线通信的软件编程思路,详述了基于ActiveX技术的VCI功能的调用,成功实现了LabVIEW与USB-CAN卡的数据交换。通过调试和实际使用,本测试系统达到了设计要求,效果良好。
参考文献
[1]  吴立力. 信号采集系统中的信号传输显示与处理[D].北京:北京工业大学,2001.
[2]  宋吉超. 基于USB2.0接口的虚拟仪器研究[D]. 西安:西安电子科技大学,2005.
[3]  杨乐平,李海涛,赵勇,等. LabVIEW高级程序设计[M].北京: 清华大学出版社,2003.
[4]  雷振山. LabVIEW 7 Express实用技术教程[M]. 北京:中国铁道出版社,2004.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。