不得不看的LabVIEW新手5大错误

2019-11-07来源: elecfans关键字:LabVIEW  5大错误  编程

  虽然NI LabVIEW软件长期以来一直帮助工程师和科学家们快速开发功能测量和控制应用,但不是所有的新用户都会遵循LabVIEW编程的最佳方法。 LabVIEW图形化编程比较独特,因为只需看一眼用户的应用程序,就马上可以发现用户是否遵循编码的最佳方法。有些用户会犯这些错误是因为他们没有真正理解LabVIEW框图数据流背后的原理,而有些用户则是不知道哪些特性可提高LabVIEW编程质量。


  本文介绍了经验欠缺的LabVIEW程序员最经常犯的一些编程错误,同时也提供了采用正确LabVIEW编程方法的建议。

不得不看的LabVIEW新手5大错误

  图 1. LabVIEW新手典型“杰作”


  过度使用平铺式顺序结构

  许多LabVIEW新手并不完全了解“数据流”执行背后的概念,而这些概念却是LabVIEW编程的基础。其中一个现象是用户往往在程序框图中过度使用平铺式顺序结构。用户经常依赖平铺式顺序结构来实现程序框图的代码串行执行,而不是使用数据流和节点之间的连线。

不得不看的LabVIEW新手5大错误

  图 2. 用户往往过度依赖平铺式顺序结构,而没有充分理解数据流编程概念。

  数据流编程是指只有在所需的数据输入全部到达时,框图上的节点(子VI、本原、结构等)才开始执行。 这对于使用LabVIEW的程序员来说非常有用,因为独立的进程本身就可以实现并行运行,而命令式语言却需要额外的设置才能实行并行执行。随着计算机CPU的不断增多,LabVIEW可自动分解并行流程,提高代码性能,而无需用户编写任何额外代码。而强行使用平铺式顺序结构来执行程序框图不仅会限制并行运行,还会丧失这一优势。限制程序框图中不必要的结构有助于提高整体可读性和保持更简洁的框图。


  错误连线可以有效地实现程序框图上的数据流,而不需要依靠平铺式顺序结构,此外错误连线还有助于实现错误处理策略。


  何时应该使用平铺式顺序结构?

  通过平铺式顺序结构来执行程序框图有助于代码性能的基准测试。通过使用框架内具有时间计数器的顺序结构,您可以决定两个时间计数器之间代码执行所花费的时间。这是一般数据流执行所无法实现的。

不得不看的LabVIEW新手5大错误

  图 3. 平铺式顺序结构和时间计数器VI有助于代码的基准测试。


  关于数据流编程的更多信息,请访问在线自学培训(ni.com/self-paced-training)LabVIEW核心课程1的“数据流”。购买LabVIEW或具有标准服务项目(ni.com/ SSP)会员资格的用户可以免费参加在线自学培训。


  错误使用局部变量

  LabVIEW编程中另一个常见的错误是过度使用局部变量。局部变量是共享内存中的一个区域,用于在计算机程序不同部分之间传递数据。局域变量通常用于文本编程语言,具有非常强大的功能,但如果出现竞争条件,就会产生问题。

  

  对于其他编程语言来说,通过变量传递数据是必需的,而LabVIEW则提供了一种数据流方法,可将数据从程序的一个部分移动到另一个部分。LabVIEW固有的并行性机制决定着用户不能过度使用变量,因为同一时间内通常会有多个不同的位置的程序访问共享内存。如果过度使用变量,则会出现某个读/写操作赢了“竞争”,而其他操作则输了“竞争”,丢失数据的操作会被忽视,因此在LabVIEW中过度使用变量可能会最终导致数据丢失。


  您可以通过多种方法安全地将数据从LabVIEW程序的一个部分传递到另一个部分,包括连线、队列、事件、通知、功能全局变量等等。每个机制都是针对特定情况设计的,但都具有消除竞争条件的功能。


  关于在LabVIEW程序内正确移动数据的更多信息,请访问在线自学培训(ni.com/self-paced-training)LabVIEW核心课程1的“局域变量”和LabVIEW核心课程2的“通知、队列和事件”。


  忽略代码模块化

  通常情况下,新LabVIEW用户创建的是“即写即忘”应用程序去完成简单的任务,而没有考虑到以后是否会用到这些代码。随着编程工作越来越多,他们会发现自己一遍又一遍地重写同一段代码。而如果在编程同时创建一个可复用于其他应用的模块化子VI,就可以节省大量的开发时间。


  如果您知道代码的特定部分将会重用于同一应用程序,或感觉该部分代码可能会用于未来的应用程序,那么您应该花一点时间将该部分代码变成一个子VI。如果要使某部分代码成为一个子VI,您需要做的主要是添加一个文档、使用“接线端”、禁用某些VI属性。创建子VI的最简单方法之一是高亮标记程序框图中的某部分代码,然后从菜单栏中选择“编辑>>创建子VI”。这样这部分代码就会放到一个单独的VI,然后使用“接线端”。您仍然需要为图标添加说明,并将文档记述添加到程序框图和VI属性中,然后取消某些VI设置,但“编辑>>创建子VI”可帮助您很好地了解代码的模块化功能。

不得不看的LabVIEW新手5大错误

  图 4. 采用正确的LabVIEW代码模块化操作可以帮助您节省大量开发时间。


  代码模块化时必须取消的一项设置是“允许调试”。 您可在“VI属性(文件》》VI属性)”下的“执行”目录中找到此选项。代码完全正常运行无需再使用高亮执行等调试功能时,在执行设置中取消“允许调试”,然后再次运行VI。这样做的好处是由于在编译过程中进行了优化,应用程序的运行速度可能加快,而且由于启动调试的代码被关闭,VI所占的磁盘物理空间也相应减少了。


  关于代码模块化的更多信息,请访问在线自学培训LabVIEW核心课程1的“理解模块化”。


  创建庞大繁琐的程序框图

  许多新LabVIEW用户都会把程序框图编写得非常繁琐庞大。对于一些复杂的应用程序,我们难免需要编写较大的程序框图,但庞大的程序框图从一定程度上也可以表明该程序缺乏编程架构。如果没有一个基本的架构,要长期维护该程序是非常困难的,而且如果以后要添加新功能也会非常困难。正如只有一个好的框架才能建造一栋结构合理的房子,一个好的编程架构可以为您构建应用程序提供了一个安全可靠的框架。


  几乎所有的程序员都会发现常见的框架中,软件架构是非常有用的。实际上LabVIEW中的许多架构,如生产者/消费者和状态机,与其他编程语言非常相似。


  了解LabVIEW的架构可以缩短开发时间和提高应用程序的可扩展性。 LabVIEW 2012包含了模板和项目范例,使理解架构变得更加容易。模板解释了不同的架构及应用。项目范例则是基于模板的更大型应用程序,演示了如何使用模板来应对实际的挑战。您可以将硬件加入到范例项目中,或者需要时可将项目范例作为一个整体应用程序,同时项目范例具有开放性且文档记述也很完整,所以您可针对具体应用进行自定义。


  不重视文档记录

  优秀的代码文档可以有效地帮助他人理解自己写的程序。遗憾的是,许多程序员通常在开发周期末期功能开发结束之后才开始进行文档撰写。这使得用于对代码进行文档记录的时间变得非常少。正确的做法应该是在开发过程中就需抽出时间来开始进行文档记录。文档对于编程人员自身也非常有用,尤其是当他们过段时间回来看代码却不记得当初他们为什么选择某些代码时。程序员经常会一边喝着咖啡,一边熬夜编程,这往往会出现“短暂失忆”。而文档则可以帮助程序员进行回忆。


  一般情况下,相对于基于文本的程序,LabVIEW的图形化特性使得程序阅读更为容易,但是有效的文档记录可以减少“解码”程序所需的时间。添加文档注释到程序框图的最简单方式是使用自由标签。您可以在框图的空白位置双击左键,并输入文字,添加注释。然后,使用箭头标记来指向自由标签引用的特定代码。如果需要添加图片,则可将它们复制到剪贴板,然后粘贴到程序框图中。物理系统图片和数学公式均有助于清晰说明程序框图内的代码上下文。

不得不看的LabVIEW新手5大错误

  图 6.架构正确且文档记录充分的代码不仅可帮助其他人理解您的代码,也可帮助您更好地理解自己的代码。


  对代码进行文档记录不仅只是针对复用程序库,而应该是针对每一个程序。当一个人需要为其他人讲解时,他对该主题将会有更深刻的理解。文档记录从本质上看就是在迫使程序员进行讲解,以帮助他们更好地了解自己的代码。

关键字:LabVIEW  5大错误  编程 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/Test_and_measurement/ic479226.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:我的LABVIEW快速开发串口测试软件实例
下一篇:构建以软件为中心的下一代自动化测试系统

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

LabVIEW和NI CompactDAQ助力UFSC复杂的车辆噪声测试
  声学图像识别50公里时速、1,904.3 Hz下的轮胎和排气噪声  “我们选择了紧凑且直流供电的NI硬件,它能为阵列中的麦克风提供电源。”  - Samir N.。 Gerges, Federal University of Santa Catarina (UFSC)  挑战:  开发一款便携且价格合理的声学波束形成形,实现通过噪声测量和其他应用中的噪声源识别 。  解决方案:  使用32个麦克风组成的螺旋阵列、NI LabVIEW软件、NI声音和振动测量套件,以及32通道的NI CompactDAQ系统,搭配8个NI 9234 4通道动态信号采集(DSA) 模块来获取噪声源的可视化图像,从而识别行驶车辆
发表于 2019-11-11
LabVIEW和NI CompactDAQ助力UFSC复杂的车辆噪声测试
LabVIEW无线传感器网络(WSN)模块先锋的介绍
使用图形化编程快速开发的优势对无线传感器节点编程传统上是需要具有嵌入式系统的知识,还要能够理解供应商所选用的特定的基于文本的编程语言。通过LabVIEW WSN Pioneer,您可使用相同的已成为工业开发采集、处理数据应用标准的图形化编程方法来向NI无线传感器节点添加智能性。LabVIEW WSN PiONeer还可灵活地将C代码与图形化代码直接结合,并在节点上运行,从而可实现算法重用。LabVIEW WSN Pioneer极大地简化了创建NI WSN测量节点的嵌入式应用过程,正如上述LED以1Hz的频率闪烁的案例LabVIEW WSN Pioneer包括
发表于 2019-11-11
LabVIEW无线传感器网络(WSN)模块先锋的介绍
利用LabVIEW产生字模的LED显示屏设计
  .文中介绍了一种直接利用 LabV I EW 的图片处理功能自动生成字符点阵的方法,利用该程序无需使用专门的字库可自动得到各种字符的点阵,然后将显示信息通过串行传输方式发送到单片机,通过单片机驱动相应的二极管发光,显示信息。硬件由计算机、单片机、驱动电路和 LED 显示屏构成,结构如图 1所示。图 1总体结构框图。  1. 基于 LabV I EW 的汉字字模的提取  1.1. 基于 LabV IEW 的汉字字模的提取方法  现在比较流行的方法是基于汉字字符的编码方式形成字模。  汉字机内码与区位码的关系为:  区位码=机内码- 160(1)  对于 16*16点阵字库,每个汉字占用 32 b i t 其首字
发表于 2019-11-11
利用LabVIEW产生字模的LED显示屏设计
LabVIEW与单片机串口在数据采集系统中的应用
1.LabVIEW分析LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显着区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其子程序(子VI)的结果、单步执行等等,便于程序的调试。采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。它主要的方便就是,一个硬件的情况下,可以通过改变软件,就可以实现不同的仪器仪表的功能,非常方便,是相当于软件即硬件!现在的图形化主要是上层的系统
发表于 2019-11-11
LabVIEW与单片机串口在数据采集系统中的应用
基于LabVIEW的STM32调试平台设计
0引言ARM处理器是Acorn计算机有限公司面向低预算市场设计的第一款RISC微处理器。ARM处理器具有耗电少功能强、1 6位/32位双指令集和合作伙伴众多等特点。本设计采用STM32F103ZET6芯片进行研究。此芯片采用ARM 32位的Cortex-M3 CPU作为内核,芯片带有2通道12位的D/A转换器,12通道DMA控制器能支持外设:定时器、ADC、DAC、USART等,具有112个快速IO端口。同时此芯片具有多达13个通信接口,其中包括USB2.0全速接口[1].LabVIEW是一种程序开发环境,采用图标代替文本行创建应用程序的图形化编程语言。LabVIEW是一种图形化的编程语言的开发环境,它广泛地被工业界
发表于 2019-11-11
基于LabVIEW的STM32调试平台设计
基于LabVIEW的虚拟示波器设计
分析。 LabVIEW(实验室虚拟仪器集成环境)是NI公司(美国国家仪器公司)的创新软件产品,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境,可实现数据采集、仪器控制、过程监控和自动测试等实验室研究和工业自动化领域的实际任务。LabVIEW从基本的数学函数、字符串处理函数、数据运算函数、文件I/O函数到高级分析库,包括了信号处理、窗函数、滤波器设计、线性代数、概率论与数理统计、曲线拟合等,涵盖了仪器设计中几乎所有需要的函数。LabVIEW的功能模块包括数据采集、通用接口总线和仪表的实时控制、数据分析、数据显示以及数据的存储。拥有大量数据采集和仪表控制的功能模块和开发工具,因此,LabVIEW可以编出外观和功能
发表于 2019-11-11
基于LabVIEW的虚拟示波器设计
小广播
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved