e-works数字化企业网  »  文章频道  »  工业自动化控制  »  控制系统

基于LabVIEW的并行数据采集系统设计(上)

2012/5/25    来源:万方数据    作者:李超  焦瑞莉  陈家田      
关键字:并行数据采集  信息交互  LabVIEW  库函数节点  状态机  
为了解决云粒子测量系统中并行数据采集通道之间的信息交互问题,采用LabVIEW中库函数节点、消息队列和状态机相结合的方法,实现了多路不同速率数据的并行采集,试验验证了该并行数据采集方法的可行性。研究结果表明:基于LabVIEW进行并行数据采集,不但快速、简单,并且能够有效提高数据采集效率,方便进行系统扩展.该方法对多路并行数据采集系统设计具有一定的参考价值。

引言

    LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是虚拟仪器领域最具代表性的图形化编程开发平台,是目前国际上首推并应用最广的数据采集和控制开发环境之一,主要应用于仪器控制、数据采集、数据分析、数据显示等领域,软件提供了大量的驱动和专用工具,几乎能够与任何接口的硬件轻松连接,另外通过DLL、CIN节点、ActiveX、.NET或MATLAB脚本节点等技术,它可以与其它编程语言进行混合编程,从而实现设备驱动程序的扩展。

    通常,多路并行数据采集系统的各数据采集通道之间需要经过信息交互与协作,才能完成系统的数据采集任务,采用LabVIEW可以简单、快速地实现并行数据采集系统通道间的信息交互,本文阐述了基于LabVlEW实现并行数据采集系统的设计方法及过程,并给出设计实例。

1 LabVIEW中实现并行数据采集方法

    所谓并行数据采集,是指系统中存在多个数据采集设备或者采集通道,这些设备或通道同时工作,共同完成整个系统的数据采集任务.采用并行方式进行数据采集,不仅可以满足特定系统的设计需求,还能提高系统采集效率,从而提升系统性能。

    1.1并行数据采集方式分类

    根据应用场合的不同,并行数据采集的工作方式也不一样,可以分为独立性与交互式两种数据采集模式,独立性数据采集模式就是在采集过程中,并行工作的设备之间不存在任何联系,它们按照特定的采集速率独立工作,这种模式在LabVIEW中实现非常简单,编程者只需要为每一个设备建立一个工作状态机,而不用考虑设备之间的并行性关系,由于LabVIEW软件实现了自动多线程,所以工作过程中各状态机都是并发执行,这就保证了设备之间并行数据采集的实现。

    交互式数据采集模式是数据采集设备在工作过程中存在某些功能上、时序上的联系.比如,一个设备需要等待另一个设备完成某个操作后才能继续工作,这种情况称之为“同步”;而对于共享数据存储区的设备来说,一个设备在进行数据存储时另一个设备必须等待,每次只能有一个设备进行数据存储,这种情况称之为“互斥”,所以,这些具有相互联系的设备之间必须进行信息交互,才能保证系统数据采集的顺利进行,LabVIEW中提供了专门的同步机制来实现这些操作,其中最常用的就是队列操作,利用队列技术,可以将一个有序的消息(或数据),从一个状态机传递到另一个与之相独立的并行运行的状态机中。

    1.2 LabVIEW中状态机原理

    状态机由三部分组成:状态(state)、事件(event)、行为(action),这3部分缺一不可,是状态机的三要素。

    LabVIEW中的状态机就是一个在while循环中的case结构:while循环保证状态机的连续运行,case结构的分支与系统的状态一一对应,即case结构的分支名称对应着状态名称,分支里执行代码的功能对应这状态的行为,而case结构的条件变量与系统的事件相对应,引发状态的变迁以及决定状态迁移的方向。

    对于独立工作的并行设备来说,决定其状态迁移条件变量值的,只是该设备本身的工作状态;而对于交互式的并行采集设备来说,其状态转移条件变量的值由其他交互设备的状态和自身状态共同决定。

    1.3 LabVIEW中实现设备驱动扩展的方法

    LabVIEW软件提供了大量的驱动,当使用的M公司开发的数据采集设备,或者使用的设备具有通用型接口(比如串口)时,可以直接使用LabVIEW软件提供的驱动控件进行操作,但是,如果设备不是Nl数据采集设备或者接口不是通用接口,那么就要通过LabVIEW的库函数节点控件调用相应设备的驱动程序动态链接库(DLL)来进行驱动程序扩展.一般情况下,购买的设备都会提供相应的C/C++编程接口,方便用户进行二次开发,利用编程接口,编写设备控制DLL,并通过库函数节点调用该DLL,可以实现LabVIEW对扩展设备的控制。

    DLL与一般C程序的编写没有太大的区别,都需要经过建立工程、添加源文件及编译三步,其区别在于:DLL中的函数需要在前面添加extem”C”( 字符串;另外,文件不存.declspecdllexport)DLL在EXE文件中的main()函数,但是有一个用来表示DLL入口的DllMain0,它不是编程所必需的,编写DLL时可省略。

    在用VS2005编写DLL时,如果想要编写的DLL能够在其他的机器上运行,那么在生成解决方案之前,需要先按“Alt+F7”进入属性配置页,然后打开“配置属性”下的“C/C++”中的“代码生成”,将右边的“运行时库”改为“多线程调试(/MTd)”。

    hbVIEW中库函数节点位于“函数-互连接口-库与可执行函数-调用库函数节点”,其配置方法是:鼠标右键单击,选择“配置”,在函数选项中配置“库名或路径”、“函数名”、“线程”、“调用规范”四项,然后转到参数页面,按照函数调用方法配置相关入口参数,而“回调”及“错误检查”页面一般按照默认设置。

    1.4 LabVIEW中并行数据采集的实现步骤

    LabVlEW中基于队列和状态机的并行数据采集系统实现步骤如下:

    (1)创建一个队列管理子VI,利用该VI来实现对各并行设备信息交互队列的创建及维护管理,编写的队列管理子VI图标见图1。

    (2)为每个并行设备创建一个状态机模型,利用该状态机实现设备的初始化、信息交互、数据采集、数据处理、设备释放等操作。

队列管理子Ⅵ图标

图1 队列管理子Ⅵ图标

2设计实例

    2.1系统设计需求

    云粒子测量系统是探测飞机入云观测的新型系统,用于云降水物理研究及人工影响天气,它由前端高速云粒子采集、高速粒子数据处理(压缩、组帧等)及后端PC端粒子数据接收分析三部分构成,其中,后端PC端粒子数据接收分析专为下位机数据的采集、解压及存储而设计,其主要功能包括:

    (1)1路一维环境参量数据信号的采集,采样率为1 Hz:

    (2)1路二维云粒子图像数据信号的采集,采样率小于10MHz;

    (3)二维云粒子图像数据信号的解压缩(RLE)及实时显示;

    (4)一维环境参量数据信号的提取与实时显示

    (5)所有采集数据的存储。

责任编辑:赵蔓
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
相关资料
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐