基于CompactRIO的车载多通道数据采集系统
2013-01-06张云雷
张云雷,伍 星,潘 楠,王 旭
(昆明理工大学机电工程学院,云南昆明 650500)
基于CompactRIO的车载多通道数据采集系统
张云雷,伍 星,潘 楠,王 旭
(昆明理工大学机电工程学院,云南昆明 650500)
为精确获得汽车车载测试分析所需关键参数,设计开发了一种基于CompactRIO嵌入式平台的车载多通道数据采集系统。对基于队列、FIFO、中断等同步控制技术及基于状态机及扫描的改进系统架构作了介绍,给出了实际数据采集压力测试的结果。
车载测试;同步采集;CompactRIO;FPGA
汽车智能化发展引发了车载测试技术的新变革,使用自动化仪器对汽车进行性能检测正逐步取代传统人工经验式的检测方式[1]。由于车载测试涉及多种信号、多变环境,还要满足苛刻的可靠性要求。因此迫切需要开发一种高集成、高可靠性且可自定义功能的车载测试系统[2-3]。
现有车载数据采集系统主要有以下几种类型:
a.基于PLC的车载数据采集系统。此类系统硬件装配非常复杂,包括整车布线、信号调理、接口定义及调试、线缆通信调试以及PLC数据采集系统布线、装配、检测等。PLC还不能提供主动的事件通知,系统的集中监视管理有赖于服务器主机的主动定时查询,势必占用系统资源[4]。
b.采用单片机和PC组成的上下位机采集系统。单片机不仅开发难度大,故障率高,并且受其自身指令周期以及处理速度的影响,时钟频率较低,各种功能都要靠软件的运行来实现,软件运行时间在整个采样时间中占有很大的比例,对于多通道、多个A/D组成的阵列进行控制以及数据处理,很难满足数据采集系统实时性和同步性的要求[5]。
c.基于DSP(例如AD-SP21020)设计的数据采集系统。虽然处理速度快,但成本较高,过于频繁的中断会使CPU的效率降低,响应速度变慢。况且采集系统对运算能力要求并不苛刻,而对于DSP极强的运算能力显得相对浪费[6]。
d.基于嵌入式PC设计高速数据采集系统,虽然灵活性好,执行效率高,但若要在采集的同时将数据实时绘制成图形,则难度很大,所以对采集数据的分析处理也只能借助于其他工具才能实现[7-8]。
现场可编程门阵列(FPGA)兼具自定义逻辑功能,高可靠性,满足严格时序要求等特点[9-10]。因此,本文提出一种基于CompactRIO(CRIO)嵌入式开发平台,结合LabVIEW中队列、FIFO、中断等同步控制技术及数据库技术设计并构建出一套具有同步并行采集功能的车载多通道数据采集系统。硬件选用CompactRIO嵌入式平台,它由稳定可靠,低功耗、高性能的实时嵌入式控制器与具备强大处理能力的RIO FPGA芯片构成。其结构小巧而坚固,可在-40°C~70°C的温度范围下操作。软件选用LabVIEW,它是一种图形化的编程语言,内置数百种专用于信号测试、处理、分析的图形化函数模块,使用其来开发应用系统的效率往往比其他编程语言高4~10倍[11]。
1 系统设计方案
本系统的主要工作原理如下:
a.上位机基于TCP通信协议向控制器发送指令。
b.控制器接收指令后,使用FPGA读写控件继而下发到已编译的FPGA上执行,同时指令运行结果实时地通过DMA FIFO或FPGA读写控件反馈回控制器上。
c.最后通过调用同步控制技术中的队列函数,无失真地将数据从采集循环送入传输循环,再次基于TCP协议将数据传回上位机存储。
系统的整体结构如图1所示,代码分别部署于上位机、控制器与FPGA上。在数据的通信与传输过程中通过队列、中断、DMA FIFO等同步控制技术来保证数据在高速采集下无遗失。
图1 系统结构图
2 关键技术实现
2.1 硬件自动检测
由于LabVIEW自身并没有提供基于CRIO编程的采集卡自检函数,因此考虑寻找CRIO插上卡或不插卡所表现出的不同运行状态,进而以此区分。经试验后发现,在没插卡或插错卡的情况下,FPGA上采集循环运行时间间隔始终小于40tips,采得数据为0。在采集卡正确插上的情况下,以NI-9234振动、噪声信号采集卡为例,当采样率设置为51.2kHz/s时,采集循环间隔为781tips,数据非0。因此,可通过判定FPGA采集循环的时差是否低于一个阈值(例如90tips)来推断采集卡是否插上,进而作为硬件自动检测的依据。
2.2 基于单套TCP协议的改进采集模块控制
在传统模式中,实现数据的实时传输与启停控制使用了2套TCP协议:
a.一套TCP协议用于数据通信,通过配置好的TCP连接函数的地址与远程端口号和上位机建立连接。由2个TCP写入函数,首先从FIFO中读取数据的长度属性和数据量本身,再依次写入TCP,最后由上位机的TCP读取函数分别读出。
b.另一套TCP协议则用于监测上位机是否提前退出通信,它通过读取TCP函数的错误簇进行控制:如果上位机停止采集,上位机“监测TCP”关闭,下位机读取TCP函数返回错误。错误簇连接到“队列销毁函数”执行队列销毁操作。如此一来,在生产者与消费者循环中的错误簇也会返回错误,停止两个循环,进而中止数据采集的读取与传输,实现上位机对CRIO数据采集的停止控制。
但是,多套TCP协议的应用使程序响应速度明显变慢。因此考虑通过改变程序的架构,减少TCP协议的数量,使得在采集进行中上位机对下位机的控制成为可能。改进后的架构如图2所示。
图2 改进后架构
新的架构采用状态机架构来接收上位机指令,同时将数据采集传输模块独立出来并配合一个扫描循环来进行控制。这样在数据采集传输过程中,上位机还能同时向下位机发送指令,从而克服了状态机架构的局限性:一个状态执行完毕才能进入下一个状态。
利用上位机发送的停止命令可以实时停止传输循环,继而通过销毁队列,采集循环也将停止,最终实现单套TCP协议对数据采集的控制。改进后程序的响应时间由7s缩短到0.2s,极大地提高了效率。数据通信效能对比见表1。
表1 数据通信效能对比
3 同步控制技术
3.1 DMA FIFO与队列的应用
在采集过程中,FPGA上采集循环速度与控制器上传输循环速度可能并不同步,控制器传输循环速度与上位机接收循环速度也存在异步的问题。因此,引入同步控制来调节循环速度是非常必要的。
使用DMA FIFO可以将控制器上数据直接传输到HOST内存中,它可流化大量来自或者指向HOST的数据,使得FPGA如同使用自己本身的RAM一样来使用HOST的RAM。同样对于HOST来讲,这个过程并不占用RAM CPU的资源,Lab-VIEW是通过控制PCI的总线仲裁功能实现的。
DMA FIFO中的采集数据读出后,需要把它通过TCP传回上位机,采集循环速度与传输循环速度有可能异步,这样会导致采集数据的丢失或复读。因此,调用队列函数来同步两个线程,如果入队列速度快于出队列的速度,队列空间填满,此时线程将自动停止并等待,直到有数据被读出,空出位置后,新的采集数据才能被写入。同理,如果出队列速度快于入队列速度,队列空间无数据,线程也将持续等待,直至有数据才开始取值。可见队列很好地调节了读写线程速度。
3.2 FPGA中断的应用
为了实现硬件检测功能,在FPGA自检模块后方放置一个中断函数,在控制器监测到中断请求前,相应线程处于等待休眠状态,待控制器监测到中断请求后,线程立即唤醒开始工作,而后FPGA等待来自控制器的握手信号。保证一旦自检结果生成后就能立刻反馈到上位机表格中显示,达到实时同步的效果。
4 软件流程设计
车载多通道数据采集系统主要包括人机交互界面、控制器以及FPGA 3个模块。
4.1 上位机人机交互界面
人机交互界面主要包括硬件自检结果显示、通道配置界面、任务创建界面、采集方式设置界面、数据采集界面等,其具体操作流程如下:
a.点击自动检测按钮,被检测到的采集卡将会显示在表格中。
b.点击下一步按钮,进入通道配置界面,选择采集卡使用的通道,设置以下参数:采样率、灵敏度、信号类型等。
c.点击下一步按钮,进入任务创建界面,创建采集任务或复制历史任务,并写入数据。
d.点击下一步按钮,进入采集方式设置界面,选择手动采集或自动触发式采集。
e.系统开始采集数据,并动态显示波形图。具体流程如图3所示。
4.2 FPGA 模块
FPGA芯片上的代码架构是一个顺序结构,第一帧配置传感器,第二帧检测硬件,第三帧进入状态机架构,状态机条件分支中有诸如数据采集、参数动态修改、停止等功能。每一分支独立运行,直到接收上位机的停止命令,才跳出条件分支,等待下一次命令,再次进入相应分支。具体流程如图4所示。
图3 人机交互界面模块流程图
图4 FPGA模块流程图
4.3 控制器模块
控制器模块中的状态机接收到采集指令后,扫描循环停止,进入数据采集传输模块,首先从FIFO中读出采集数据并送入队列,在传输循环中使元素出队列,继而写入TCP,再传回上位机。具体流程如图5所示。
5 压力测试实验
为验证系统的有效性和稳定性,通过实际长时数据采集进行系统压力测试(System Stress Testing)。NI-CRIO 9082机箱中NI-9234振动噪声模块的两个通道分别连接两个声望MPA416传声器,采样率设置为51.2kHz/s,采样点数设置为51.2k,进行了2h 的高速采集。实验设备如图6所示。
长时高速采集状况下,车载采集系统依然能保持高速响应,并且数据在波形图上稳定实时显示。通过对FIFO剩余元素量、采集循环次数、传输循环次数的监测证明系统无数据遗失,数据有效。实际车载声信号采集如图7所示、系统软件界面如图8所示。
图5 控制器模块流程图
图6 实验用NI-9234采集卡及传声器
图7 实际车载声信号采集
6 结束语
图8 系统软件界面
本文设计的车载刹车系统是以CRIO为平台,结合改进的控制方式,高效地实现了对车载参数的长时间采集,系统界面友好,操作人性化。区别于传统方式,其主要有以下特点:
a.经过实验,寻找出实现硬件自动检测的方法,硬件配置无需再通过数据库方式手动配置,操作方式大大简化,配置时间从近20s缩短为5s。
b.相对于传统多套TCP控制,实现基于单套TCP协议数据的数据传输控制,使数据通信及系统响应效率大幅提高。
经过压力测试,验证了本系统数据长时数据采集的能力,表明其能够适用于实际汽车路试。
[1]Zhou Kai,Wang Xu - dong,Liu Jian,et al.Real- time data acquisition system for vehicle ABS test stand[J].International Journal of Vehicle Safety,2011,5(3):271 -285.
[2]Foresti,Regazzoni C S.Multisensory data fusion for autonomous vehicle navigation in risky environments[J].IEEE Transactionson Vehicular Technology,2002,51(5):1165 -1185.
[3]Balasubramanian K,Burks T F,Lehtola C J,et al.Shock and vibration data acquisition system for off-road vehicle operator health and safety assessment[J].Journal of Agricultural Safety and Health,2006,12(4):293 -313.
[4]吴森,陈勇,曹正策,等.基于FameView组态软件和PLC的车载数据采集系统[J].工业控制计算机,2006(2):70-71
[5]张秋云,王黎,高晓蓉,等.基于FPGA的多路高速数据采集系统设计[J].现代电子技术,2012,35(6):69 -72.
[6]皮代军,张海勇,叶显阳,等.基于FPGA的高速实时数据采集系统设计[J].电路设计,2009(6):12-14.
[7]王梦玲,王思明.基于PCI-1713和LabVIEW的高速数据采集系统设计[J].微计算机信息,2006,22(7-1):120-122.
[8]魏红军,金振华,卢青春等.基于嵌入式PC的车载数据采集系统开发[J].武汉理工大学学报:交通科学与工程版,2006,30(3):369-372.
[9]孟武胜,朱剑波,黄鸿,等.基于LabVIEW数据采集系统的设计[J].电子测量技术,2008,31(11):63 -65.
The Vehicle-Carrying Multi Channel Data Acquisition System Based on CompactRIO
ZHANG Yunlei,WU Xing,PAN Nan,WANG Xu
(Kunming University of Science& Technology,Yunnan Kunming,650500,China)
In order to obtain the key parameters from the vehicle-carrying test,it develops the multi-channel data acquisition system based on CompactRIO embedded platform.This system is satisfied the requirement of high reliability,inexpensive,portable and rapid configuration,It also describes the synchronized control technology such as queue,FIFO,interrupt and the superior system architecture.Finally,availability and stability of the system are proved through the pressure text of data acquisition.
Vehicle-Carrying Test;CompactRIO;Synchronized Control;FPGA
TP311.1
A
2095-509X(2013)05-0040-05
10.3969/j.issn.2095 -509X.2013.05.010
2013-02-18
张云雷(1987—),男,四川成都人,昆明理工大学硕士研究生,主要研究方向为车载测试系统研发。