应用领域:现场测试
挑战:利用LabVIEW 开发功能完善的钢轨顶面短波不平顺自动检测
系统,填补中国该技术领域的空白。
应用方案:用NI 公司的多功能数据采集卡和LabVIEW 平台开发一个功能完善的、先进的检测系统。
使用的产品:LabVIEW;PCI-6035E、6711E、PCI-MIO-16E-
4 等数据采集卡
介绍
钢轨顶面短波不平顺是产生噪音和引起火车轮轨相互作用力变化的主要原因之一。随着铁路运输不断向高速、重载方向发展,钢轨顶面短波不平顺程度日益严重,这不仅加剧了轨道结构部件的伤损和几何尺寸的超限,而且影响了钢轨的使用寿命,甚至危及行车安全。目前,中国检测钢轨顶面短波不平顺的现有方法仅是静态逐点手工测量,费时、费力、效率很低。研制和开发新型钢轨顶面短波不平顺检测系统,能够为钢轨打磨计划的制定提供科学依据, 从而指导对钢轨的打磨以延长其使用寿命,提高旅客乘车舒适度,保障行车安全,可见其经济和社会效益都十分可观。
本文介绍了基于LabVIEW 的钢轨顶面短波不平顺检测系统(以下简称“检测系统”)的开发,并就开发过程中的一些问题进行讨论。
检测系统的功能及特点
检测系统分为:在线检测子系统与事后回放子系统两部分。用LabVIEW 开发的两个子系统的前面板分别如图1 和图2 所示。
图1 在线检测子系统前面板
图2 事后回放子系统前面板
在线检测子系统通过外脉冲触发采样,同时测量外脉冲时间间隔,由时间间隔计算出对应的火车速度。在连续采集数据的同时,系统还将对采集到的数据进行必要的分析处理、按一定格式存储并动态地显示原始数据和处理结果的波形;处理完的数据及驱动走纸仪的信号经输出卡输送给走纸仪,这样可以在现场得到所需要的大部分检测结果。
事后回放子系统则通过对现场检测得到的原始数据文件进行数据索引和调用,实现与在线检测子系统相仿的处理功能,进行在线检测过程的信息回放。此外,该子系统还可以对检测结果做出评估,并以报表的形式显示和打印结果,十分便于检测人员对各段钢轨顶面不平顺程度具体情况的了解。
本系统最明显的先进技术特点是集成化,数据的采集、分析处理、保存、显示、输出及画图均在一个系统中实现完成,克服了老式检测系统的数据采
集和分析处理不同步等弱点,基本实现了实时在线检测。
利用NI 公司的LabVIEW开发此系统,不仅可以很方便地实现复杂的数据处理功能,而且用户界面也可以做得十分美观、友好和具有个性化特点,其模块化的设计,又大大方便了程序的修改和维护。
检测系统的实现
作为一种图形化程序设计语言,NI 公司的LabVIEW 带有丰富的VI 库,并且调用也十分方便;此外,其丰富的应用举例子程序和完善的在线帮助功能,也会给程序设计者带来极大的方便。
1. 多任务间的配合
本检测系统设计的难点在于:由于装设在列车上,在线检测子系统要在列车行驶过程中保持长时间稳定运行,并且在连续采集数据的同时还要对各项数据进行处理、显示并驱动走纸仪完成画图。在整个在线检测过程中,要保证数据不会丢失,就要做到数据的采集、处理、显示和输出各个环节的紧密配合,如果其中的处理或输出功能模块占用时间太多,采集的数据将来不及被有序、完全地读取,从而造成缓冲区溢出致使有用数据丢失。基于以上考虑,我们在程序设计中充分利用了LabVIEW 的多任务运行机制,把数据的采集、处理及输出分别作为独立的子任务,调用函数库中的事件(occurrence)函数和时间等待(wait on occurrence)函数来实现多任务之间合理的配合。我们研制出的检测系统的在线检测子系统主程序的流程图如图3 所示。
图3 在线检测子系统主程序流程图
2. 数据传送方式及缓冲区
一般来说,采集功能单元传送数据所采用的方式有:定时、查询(Polling Mode)、中断(Interrupt Mode)以及直接存储器存取(DMA Mode)等。前三种方式都要占用比较多的CPU 时间,而且传送速度也没有DMA 方式快。由于本检测系统采集的数据量大,持续时间长,一般可能要几个甚至十几个小时,并且整个检测系统占用CPU 资源比较多,因而我们在程序设计中采用DMA 方式传送数据。一般的数据采集卡都支持这种数据传送方式,但不同数据采集卡支持的DMA通道数目是不同的,有的可能只有一个DMA 通道。本系统采集数据和测量时间间隔都要用到DMA,因此至少要有两个DMA 通道可供利用。
为了保证在长时间连续采集数据的同时进行数据的处理,并给数据处理留下一定的缓冲时间,必须开辟一块循环缓冲区(circular
buffer)存储采集到的数据。这样,在采集数据的同时就不会耽误对数据的及时处理。当缓冲区放满数据时,它会从缓冲区首端起存储新的数据,因而要求读取数据的速度要足够快,否则也会造成数据丢失。当读取数据时,如果缓冲区中的数据还没达到所需要的读取量,程序会等待其到达后再读取。
3. 程序的优化
为减少程序占用系统资源,提高系统执行速度,我们在程序设计中尽可能采用子VI,充分利用LabVIEW 便于构建模块化系统的
特点,实现了模块化的程序设计。LabVIEW提供有丰富的数据结构,包括数组、字符串、数据群(cluster),以及由它们构成的更复杂的数据结构。但从算法的执行效率以及流程图的可视化方面考虑,我们在程序设计中尽量少采用复杂的数据结构。
结论及体会
目前,我们承担的钢轨顶面短波不平顺检测系统的开发已基本完成,并已到现场进行了多次的验证性测试。相信经过进一步完善,这个用LabVIEW 研制开发的钢轨顶面短波不平顺检测系统将填补国内有关短波不平顺自动检测系统方面的空白。
初学LabVIEW 时,虽然比较容易入门,但在具体应用中还是会
碰到程序设计上各种各样的问题。作为一种图形化的快速编程语言,对许多程序设计者来说,LabVIEW多方面的优点还远未得到充分利用。
以本文作者的亲身体会,LabVIEW 提供了丰富的应用举例子程序,其中许多可以直接利用或稍加修改就可以用到自己的程序中,比如DAQ 的很多应用在例子程序中都可以找到。因此建议多学习一下LabVIEW 自带的应用举例子程序,这对程序设计者一定会有
很大的帮助。
LabVIEW 的多任务并行运行机制是一般传统语言所不具备的,
应充分利用这一优势,方便、灵活地实现多任务调度,快速、高效地构造较为复杂的多任务检测系统。
LabVIEW 的多任务运行机制具有协作式(cooperative)而非抢占式(preemptive)的特点,系统不支持中断,因此无法实现严格意义上的任务定时,在实时性上有一定的局限性,即它只适用于对实时性要求不很高的场合。如果对实时性要求很高,就要选用其他能满足实时性要求的开发系统,例如实时LabVIEW 系统(LabVIEW RT 系列)。但是,实时性是一个相对的概念,对于一些实时性要求不是很高的场合, 采用LabVIEW开发平台,通过对各任务的合理调度,便可以很好地满足要求,没必要选用价格相对较高的实时开发系统。
从程序开发方面考虑,如果选用LabVIEW 作为软件开发平台,建议最好采用NI 公司的板卡,这样可以使程序设计更简单、更方便,从而缩短程序开发周期。