LabVIEW数据流控制方法研究

2014-11-06 12:10:26来源: ck365
0 引言

  Labview(Laboratory Virtual Instrument Engineering Workbench)是虚拟仪器概念的首创者,是世界上最优秀的虚拟仪器软件开发平台[1][2]。它使用图形化数据流编程语言,这种新兴的编程方式给编 程人员带来了新的困难,主要体现于对数据流的控制上。LabVIEW编程人员遇到困难往往求助于C语言[3]。随着虚拟仪器的广泛应用,为提高编程效率, 真正理解并灵活掌握LabVIEW数据流语言是必要的。

1 数据流编程的特点

  数据流语言的每个节点在执行之前需要提供其所有输入端口的有效数据,LabVIEW允许用户在一个图表上拥有任意数量的不同节点,所有的节点可 以并行执行。LabVIEW环境还支持多个VI并行执行,而不管操作系统或者计算机的功能如何。这些功能使得用户无须做任何特殊编程工作就可以非常自由地 同步执行各种不同的任务。

  LabVIEW数据流编程克服了文本语言编程内存管理中的许多困难。在LabVIEW中,不必给变量分配内存,也不必为变量赋值或者从变量取 值,只需创建一个带有描述数据转换关系的内部联系的框图程序。产生数据的函数可以精心地为数据分配内存,当数据不再使用时,相应的内存被释放。当向数组或 字符串添加新数据时,管理新数据的足够内存资源会自动进行分配,这种自动的内存分配操作是LabVIEW的主要优势之一。

2 数据流编程的难点及若干解决方案

  LabVIEW程序的内存管理是自动进行的,中间状态的捕捉和控制十分困难。例如,实时显示现场采集数据串的最大值问题、通过按钮手动控制现场采集数据串某一时刻数据作为比较对象的问题以及单选功能按钮的实现问题等等,似简实难。经编程实践,总结方案如下:

  (1)结构控制

  循环结构,如For循环和while循环结构;顺序(Sequence)结构,适当使用Sequence结构能提高程序可读性,让数据清晰流 动;分支结构(case Structure);事件结构(Event Structure),允许用户在前面板的直接干预或程序不同部分之间的交流影响程序的执行;定时循环(Timed Loop)结构,可创建多采样率(multi-rate)的、对时间要求严格(time-critical)的数据采集应用程序,并定义不同优先级的循 环。

  (2)移位寄存器(Shift Register)控制

  移位寄存器与While或For循环结合能够保存各种状态信息,未初始化的移位寄存器则保留着以前的内容。

  (3)变量控制

  变量在这里指局部变量和全局变量。局部变量用来在一个VI程序内部传递数据,它不仅可以解决连线的困难,而且可以对同一个控件多次写入和读出数 据。全局变量则可用于在不同程序之间传递数据,全局变量也是用一个控件的形式存放数据,但是这个控件独立于调用它的VI,以一个特殊的VI作为自己的容 器。

  (4)通告(Notifier)和队列(Queue)控制

  通告和队列的方式有时可代替变量方式来传递数据。使用通告方式传递数据时,只有写入数据并告知后才能读取数据。通告以广播的方式发布,收到广播的用户都可以去读数据。队列方式传递数据是最先去读数据的用户读完数据就将它擦掉,只有一个接收数据的用户。

  单一使用上述某种方案往往力不从心,综合灵活运用才能在编程中产生较好的效果。

3 实例分析

  单选功能按钮的设计是许多综合测试系统设计中的一部分。它要求完成的功能是:

  ⑴ 某一个按钮按下去时,其余按钮全部处于无效的工作状态。

  ⑵ 按下去的按钮要求能无误地启动系统的该项功能。

  设计中需要解决以下问题:

  ⑴ 变量冲突。程序包含按钮间的相互控制,其控件及局部变量间的冲突问题十分突出;

  ⑵ 响应时序控制。按钮操作和读按钮状态的先后次序需进行适应控制,否则容易产生空档(按钮按下却不启动系统的功能)和几个按钮同时被按下等异常情况,导致程序紊乱;

  ⑶ 初始状态自适应调整问题。

  用LabVIEW设计流程图及流程图示说明如下所示:

  BUTTON ARRAY :按钮合在一起的数组;

  SEARCH 1D ARRAY:比较两数组的不同,返回不同元素的序号;

  INDEX ARRAY(INDEX,ELEM):数组ARRAY, INDEX是序号,ELEM是元素。此函数是找出数组ARRAY中序号为INDEX的元素;

  NULL:空操作;

  DIFFERENCES:差异信息;

  D.B.:Digital buttons数字化按钮,即用编号表示不同按钮。

  总流程为将框图1所示流程循环两次!再进行框图2所示流程,具体步骤详述如下:

  针对问题⑴,程序遵循“对操作的按钮不操作”的原则。如框图1,用SEARCH 1D ARRAY分辨出被操作的按钮,对其它按钮置“假”。这样,按钮间就可不发生冲突。

[1] [2]

关键字:LabVIEW  数据流控制  语言编程

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2014/1106/article_9968.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LabVIEW
数据流控制
语言编程

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved