NI CompactRIO、labview在车载数据采集中的应用

概述:自行搭建操作面板,提供传感器电源及信号接口,控制开关,以及状态指示灯。应用NI CompactRIO平台读取各路信号,响应面板开关动作,执行数据存储,指示运行状态。

在新款汽车的工程开发过程中,制动系统的设计与验证是一个重要的试验环节。试验过程首先由数据采集系统采集各项数据并保存为文件,随后由另一程序读取记录文件并进行分析。本文着重讨论数据采集部分。

泛亚汽车技术中心整车性能试验股自2003年起应用NI的数采设备和LabVIEW软件,在试验数据采集和分析方面积累了一定的经验。通常,道路试验需要两名工程师参与,分别负责车辆驾驶和数采操作。车辆在道路行驶中产生的颠簸对设备及电脑硬盘会造成一定影响,而且在车载条件下采集仪器和笔记本电脑还需要逆变器提供交流电。考虑NI的CompactRIO平台集成了信号调理、A/D转换、实时控制器、以及USB闪存接口,直流供电,加电即可自动运行,可以耐受高温振动等不良工况,故决定以CompactRIO平台为基础开发这套采集系统用于制动试验。

此次试验主要关注制动蹄片温度,需要记录的通道有车速、整车加速度、四个制动蹄片的温度、环境温度以及一个制动触发信号。以下对开发过程做一介绍。

务分析及整体架构

在所有需要记录的通道中,五个温度信号来自热电偶,使用两块NI 9211模块采集;整车加速度来自一个伺服式加速度传感器,输出幅度为±5V的模拟电压,采集模块为NI 9215。车速信号来自光电式非接触车速传感器,通过模拟电压、频率信号或CAN总线输出车速信号,为简便起见,暂也使用NI 9215读取模拟电压。车速和加速度的采样频率均为100 Hz。制动触发信号会在制动踏板踩下时产生一个12V的高电平,由于我们采用的数字I/O模块9401可接受的最高电平为5V,所以需要接一个分压电路,或者用模拟模块采集这个信号。

除了上述数据通道,该系统还需要处理一些开关量,用于操作界面的输入输出。包括一个存盘开关,决定是否将当前采集数据存盘。当开关合上时,控制器会根据当前系统时间自动生成文件名并将数据存入优盘,将此开关断开再合上可以实现另起文件名的作用。一个带复位的零位开关,用于在数据文件中表示零位,从而便于在数据分析时消去传感器的零漂。清零功能可以在采集时同步实现,也可以只作记录,留到PC上分析时再做相减。

此外,由于该系统运行时不用显示器等监视工具,笔者在操作面板上设立一组发光二极管用于指示系统正常或故障,以及闪存容量过低等信息。以上开关量和指示灯信号通过9401模块输入输出。

整机照片如图1所示。

图1 车载数据采集系统外观

程序设计

此采集系统的软件由两部分组成,分别运行于Real-Time控制器和FPGA背板。根据起初的规划,FPGA.vi (注:指运行在FPGA Target上面的vi程序,下同)负责定时(100 Hz)采集各模块各通道数据,并将数据写入DMA fifo,这是连接背板和控制器的缓存。在Real-Time.vi中由一个循环定时读取缓存中的原始值,通过binary-to-nominal函数把二进制数转换成电压量再乘以相应系数转换成物理量。转换后的数据写入RT fifo,这相当于一个磁盘缓冲区。另一个低速循环每30秒读取一次缓冲区,将数据一次性写入闪存。设立两个循环的好处是由控制器尽快读取DMA fifo,可避免DMA fifo体积过于庞大,避免过度占用FPGA资源。而低速循环可以降低读写闪存的频率,有利于保护闪存,也减少读写出错几率。

图2 程序基本结构

调试改进

在后续的调试和改进过程中,该架构的主线没有更改。但是针对出现的问题,做了下列改进:

1. 由于热电偶采集模块9211的A/D转换速率较低(14S/s),当该组通道数据与其他模块数据在FPGA.vi的同一个循环内使用FPGA I/O Node读取的时候会导致该循环的整体运行速率严重降低。解决方案是使用不同速率的循环,使原先通过9215模块读取的通道不受影响,热电偶读数不通过DMA传递,而是利用前面板通信读到Real-Time.vi再与其他数据另行同步。

2. 为减少由A/D转换引入的误差,将通过9215读入的加速度传感器信号的采样频率由100 Hz提高至800 Hz,并对每8个点进行平均后输出。希望通过这样的方法使转换中产生的毛刺部分抵消,提高信号的质量。之所以选定8倍采样频率是因为8点平均可以占用较少的FPGA门电路资源。对比以往的数采系统需要软件运算实现类似的功能而言,CompactRIO系统使用可定制的硬件电路实现同样的功能,完全不占用额外的时间和资源,也不用增加经济成本。

3. 由于车速信号将在后续数据处理中进行微分运算,而先D/A再A/D的传输方法给信号带来一定噪声,不利于微分运算,故改用NI 9853模块从车速传感器的CAN总线直接读取车速数值。CAN信号使用数据帧传送,传感器端的发送周期约为4ms/帧。因此在FPGA.vi内另建一个循环每读取5个数据帧(20 ms)并从中分离出代表车速的数值后输出2个数据点写入另一个DMA fifo,由Real-Time.vi定时读两个fifo和记录热电偶读数的控件,重新同步成100 Hz的数据。随着CAN总线应用的日益普及,使用CompactRIO的CAN通信模块不仅可以连接传感器,也可以同时连接汽车总线,获取更多信息。在将来的应用中,甚至不仅可以读取,还可以向车辆发送一些控制信号,如清除故障码等等。

4. 由于该系统本身没有基于显示器的用户界面,笔者设计了一个指示信号通过闪烁提示运行正常。实现方法是设置一个布尔量,在主循环内每次运行时取反(见图3),将其值输出至9401模块的数字I/O端口,在端口上连接一发光二极管(LED)。这样,当程序正常运行时,LED会随该布尔量的循环取反而闪烁,当程序异常停止时,该指示灯停止闪烁。这样,试车员就可以不需要电脑而通过最直观的方式了解采集系统的工作状况,避免程序异常停止造成无效试验。当然,在条件允许时,也可以为该系统配置一个触摸屏(如NI 2016),从而获得更好的图形化交互界面和控制功能。

图3 布尔量取反实现指示灯闪烁

5. 一般使用计算机进行数据采集时会利用文件名或其他方式记录当前试验工况,而CompactRIO系统不具备直接输入条件,因此需要另外的方法对试验工况进行标识。为此笔者在设备面板上设置了一个旋转开关,经过适当连线后形成一个分段式的电位器,当系统输入电压为12V时,开关四个档位的输出电压分别为0、3、6、9V(见图4)。记录该电压就可反映相应的四个工况。

图4 工况输入电路示意图

6. LabVIEW内置了web server,当程序没有专门部署PC-host部分的时候,利用web server通过网络将Real-Time.vi的前面板显示在PC的浏览器上是非常高效的调试手段。开发者只需将CompactRIO通过网线与电脑相连,再在浏览器地址栏输入RT上设定的网页名称就可以看到程序前面板,从而实时了解程序的运行情况和错误信息,甚至在必要的时候可以获取控件的控制权修改一些参数。要实现这些功能完全不用编写任何网络通信方面的代码,而只需要点击鼠标在Web Publishing…菜单处进行简单配置,极大的提高了调试效率,也便于工程师在试验中观察现场数据时使用。

应用实践

在实验室完成开发以后,此系统被安装在汽车副驾座位上,使用乘客安全带进行固定,从汽车电瓶获取电源。预装在试验车上的传感器通过接插件与系统面板连接,由数采系统负责统一供电和信号连接。在试验中,试车员所要做的仅仅是在试验开始时插入优盘并打开系统电源,以及在工况切换时拨动存盘开关以产生一个新的记录文件,此外也包括在必要的时候旋转旋钮标识当前工况或者按下清零按钮以表示传感器零位。

由于此次试验中适逢道路泥泞,溅起的泥水遮蔽了光电式车速传感器的镜头导致车速输出异常。在发现这个问题以后,笔者及时调整了程序,当车速为零时通过数采面板上的指示灯给予提示。这样当试车员在行驶过程中发现此灯亮时即可及时清洁镜头。此方法也可用于检测热电偶开路等异常。由此可见,使用NI CompactRIO平台开发的数据采集系统不但强大可靠,而且功能灵活,可及时根据用户需求而调整,这在传统仪器上几乎是不可想象的。

 小结:

使用NI CompactRIO平台开发的道路试验数据采集系统实现了多种不同类型信号的采集,实现了开关量的交互控制和响应,在较短的时间内达到了预期的功能,且运行稳定可靠,是汽车道路试验中的理想选择。

NI CompactRIO、labview在车载数据采集中的应用相关推荐

  1. LabVIEW NI CompactRIO控制器:性能和吞吐量基准测试

    LabVIEW NI CompactRIO控制器:性能和吞吐量基准测试 CompactRIO控制器基于LabVIEW RIO架构,采用了功能强大的64位Intel Atom E3800片上系统(SoC ...

  2. 【关于NI CAN USB-8473在实际应用中的案例分析】

    [NI CAN USB-8473在实际应用中的案例分析] NI CAN USB-8473是国际上比较先进的一种控制器区域网络(Controller Area Network,CAN)总线适配器,可实现 ...

  3. LabVIEW编程LabVIEW开发高级数据采集技术定时与触发 例程与相关资料

    LabVIEW编程LabVIEW开发高级数据采集技术定时与触发 例程与相关资料 实现高级数据采集的智能DAQ主要用于定制定时和触发. 下图是NI-DAQmx的触发式模拟输入任务. DAQ并未使用不同函 ...

  4. matlab怎么控制采集卡,用MATLAB控制NI采集卡实现高精度数据采集与分析功能-l采.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 用MATLAB控制NI采集卡实现高精度数据采集与分 ...

  5. LabVIEW在无线设备中的应用

    LabVIEW在无线设备中的应用 利用IrDA技术,设备通信可通过无线红外接口实现.在LabVIEW中,两个运行在不同计算机上的VI可利用内置IrDA功能进行通信.例如,在台式计算机上创建一个运行测试 ...

  6. 车载T-BOX中MCU和SoC通信方案(SPI通信方式)

    在车载T-BOX中,MCU和SoC之间必然存在数据通信,本篇博文将分享一种基于SPI方式的通信方案. 对汽车电子.CAN通信.UDS诊断技术感兴趣的小伙伴请关注公众号:美男子玩编程,公众号优先推送最新 ...

  7. 语音交互在车载场景中的应用

    汽车驾驶体验的智能化升级 自动驾驶技术可谓是当今最为热门的一个话题,同时也是人工智能技术实现落地的重要场景之一.目前我们距离机器全自动驾驶技术的实现还有一定的距离.不过,在自动驾驶技术完全实现之前,人 ...

  8. 工业低频RFID读卡器|识读器|阅读器L8820在自动化生产输送线数据采集中的安装说明与各行业应用效果

    工业低频RFID读卡器|识读器|阅读器L8820采用134.2K频率,符合自动化话输送线需求,强抗干扰性,性能稳定,防水.防震.抗压,在复杂的环境皆可使用,可广泛使用在各自动化物品输送线:五金生产线. ...

  9. android自定义窗口层级(自定义车载系统中倒车影像显示层级)

    在车载系统或者TV系统中,通过WindowManager添加一个窗口时,又由于存在多个应用添加窗口,且用的同一窗口层级,会出现相互覆盖的情况.这时可以考虑自定义一个更高层级的Window Type来避 ...

  10. 数据采集中的采样率、缓冲区大小以及,每通道采样数之间的关系

    采样率:每秒钟才多少次 每通道采样数:指的是每次从通道读取的数据长度,其实是从buffer里面读取.如果每次读的太少,读取时间间隔长那么buffer数据堆积会导致溢出.因此buffer size应该大 ...

最新文章

  1. linux时间轮算法,关于时间轮的设计 linux hashed Hierarchical timing wheel
  2. Java虚拟机(JVM)的内存划分
  3. filter函数的用法_这几个超牛函数,你的Excel里有没有?
  4. java web技术及应用_Java Web技术及应用
  5. 常见的Content-Type类型
  6. 注册Tomcat服务为系统服务
  7. nginx log response_nginx优化配置大全
  8. es6判断对象key是否存在,ES6中获取对象的key
  9. Docker基础学习笔记02:Docker基本操作
  10. 程序员如何淡定度过 2.14 情人节?
  11. python进制转换大全
  12. Google 今天抽风了!
  13. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-11层驱动之FSMC
  14. CentOS 8 安装Tomcat
  15. 费曼先生 找数学家“麻烦”
  16. 现代ADC中采样率往往远低于输入信号带宽
  17. [Codeforces Round #428 DIV2E (CF839E)] Mother of Dragons
  18. Java程序:编程模拟和表达老虎Tiger和猫咪Cat等具体种类的生物都是一种动物。即它们都具有共同的名字属性name和运动行为run,只不过具体的名字叫法不同,运动行为的具体方式也不同。
  19. python自己制作节奏大师游戏_十分钟利用Python制作属于你自己的个性logo
  20. 自然语言处理入门理论知识

热门文章

  1. 最新带后台收录的娱乐导航网网站源码
  2. Java集合类源码分析汇总
  3. 运筹学 $5约束极值
  4. MFC图片类CImage数据转换:yuv422转CImage、rgb转CImage、CImage拷贝到CImage、rgb数据垂直镜像
  5. Verilog——38译码器(包括仿真文件和约束文件的格式)
  6. 将txt文件编码改为utf-8格式
  7. 有限元分析的基本知识 (一份培训资料) (1)
  8. 单片机原理与应用技术(一)———51单片机延时汇编语言
  9. Web基础配置篇(八): 远程操作工具、命令的介绍、安装及基本使用
  10. Python + ElasticSearch:轻松玩转跨越千年的两百三十万条地震数据