LabVIEW容易犯的五大错误!

发布者:美丽花朵最新更新时间:2016-08-22 来源: ck365关键字:LabVIEW  五大错误 手机看文章 扫描二维码
随时随地手机看文章
虽然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用户都会把程序框图编写得非常繁琐庞大。对于一些复杂的应用程序,我们难免需要编写较大的程序框图,但庞大的程序框图从一定程度上也可以表明该程序缺乏编程架构。如果没有一个基本的架构,要长期维护该程序是非常困难的,而且如果以后要添加新功能也会非常困难。正如只有一个好的框架才能建造一栋结构合理的房子,一个好的编程架构可以为您构建应用程序提供了一个安全可靠的框架。

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

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

 

LabVIEW新手5大错误

图 5. LabVIEW 2012中的模板和项目范例使得理解软件架构变得非常轻松

关于LabVIEW架构的更多信息,请访问在线自学培训(ni.com/self-paced-training) forLabVIEW核心课程2的“设计模式”。

不重视文档记录

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

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

 

LabVIEW新手5大错误

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

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

关键字:LabVIEW  五大错误 引用地址:LabVIEW容易犯的五大错误!

上一篇:基于LabVIEW的车灯日行灯自动化测试
下一篇:虚拟仪器之——数据采集中的外部时钟及握手信号

推荐阅读最新更新时间:2024-03-30 23:22

不得不看的LabVIEW新手5大错误
虽然NI LabVIEW软件长期以来一直帮助工程师和科学家们快速开发功能测量和控制应用,但不是所有的新用户都会遵循LabVIEW编程的最佳方法。 LabVIEW图形化编程比较独特,因为只需看一眼用户的应用程序,就马上可以发现用户是否遵循编码的最佳方法。有些用户会犯这些错误是因为他们没有真正理解LabVIEW框图数据流背后的原理,而有些用户则是不知道哪些特性可提高LabVIEW编程质量。   本文介绍了经验欠缺的LabVIEW程序员最经常犯的一些编程错误,同时也提供了采用正确LabVIEW编程方法的建议。   图 1. LabVIEW新手典型“杰作”   过度使用平铺式顺序结构   许多LabVIEW新手并不完全了解“数
[模拟电子]
不得不看的<font color='red'>LabVIEW</font>新手5大<font color='red'>错误</font>
LabVIEW在空调测试台集中测试中的应用
  介绍:过去的空调测试大多都是针对单个台位的几个功能进行测试,如水冷冷水测试、风机盘管测试、焓差测试、换热测试等。随着市场需求的增加,空调企业的生产规模的相应扩大,对测试的要求也越来越高。越来越多的测试台需要一套集中测试、远程监控的试验数据管理系统,有效的利用现有测试设备,提高测试设备利用率,充分发挥硬件功能作用,便于不同部门的人员有效利用和分析大量的测试数据,实现跨部门的试验数据共享,以及不同部门间试验数据的有效管理。    1. 系统方案   图1 系统结构   数据采集设备(DAQ Devices)与采集计算机(DAQ Server)进行硬件连接通讯(支持多种总线类型连接,如GPIB,PXI,USB,RS232/
[测试测量]
<font color='red'>LabVIEW</font>在空调测试台集中测试中的应用
简述虚拟仪器技术及LabVIEW编程课程的认识和理解
   虚拟仪器 --软件就是仪器    虚拟仪器 ,虚拟示波器, 虚拟仪器 技术, 虚拟仪器 软件, 虚拟仪器 开发, 虚拟仪器 组成   一、引言   当前多媒体计算机、信息高速公路和计算机网络是计算机信息科学的三个重要发展方向。它们相互联系、相互促进、共同发展,已经渗透到人们日常工作、生活、学习、娱乐的各个方面,逐步地由办公室、实验室走向家庭。   虚拟现实是多媒体计算机的一个重要应用领域,多媒体技术是虚拟现实的技术基础。虚拟现实(VirtualReality)是利用多媒体计算机技术生成的一个具有逼真的视觉、听觉、触觉及嗅觉的模拟现实环境。用户可以用人的自然技能对这一虚拟的现实进行交互体验,而用户体验到的结果--该虚拟
[测试测量]
泰克示波器与Labview的结合应用
泰克 3014B一直是我手头最好的朋友,从02年就一直用它,对它的各种用途和性能都是相当了解,在实际中无论是实验还是生产线安装都是使用它们,我觉得它的功能真是很强大,易用的操作方式和灵活的设置结合在一起,也可能是工作范围的关系吧,反正几乎没有不够用的情况出现,包括在去年的设备安装中,我还是选用了3014B。 在实际使用中,一直有个问题困扰我,在一些故障讲演和存档时,很难把波形给存到PC中,原来标配有软驱,一张1.44的软盘也就存个5个屏吧,作一次实验得带一盒盘去,操作相当麻烦,还经常出现软盘存完后无法读取的问题,现在单位PC机上软驱几乎绝迹了,示波器的特征曲线有一阵子被逼到用相机拍摄存档。示波器在购买时也购有通讯模块,也一直想通过
[测试测量]
泰克示波器与<font color='red'>Labview</font>的结合应用
LabVIEW技巧系列(二)——并行写冲突
前些天在编一个程序时遇到了一个很诡异的问题,为什么说诡异呢,我们先看下面这个程序: 简单编了一下,这个程序的大体意思是,把四路布尔型的故障数组,存到一个一维数组的特定位置,程序是临时编的,所以大家不要太介意,主要说明功能。但是无论怎么样,程序中没有引入随机数,所以输入是定值的情况下,输出也一定是定值。多次运行后,我剪了两张有代表性的图: 细心的朋友会发现,故障输出数组中的后面有一位发生了变化,但是我的整个程序中却没有改变任何东西。这个问题曾经困扰了我整整半天。最后在才发现,这是由于寄存器的写冲突导致的。这个不是windows的问题,而是整个电子,或者说是寄存器的特性,有编过FPGA的朋友可能知道,一个寄存器
[测试测量]
LabVIEW条件结构
​LabVIEW的条件结构显示为0,1,2,3时若前方输出为数字类型则贞为0(所有假设不成立),贞1为第一种情况,贞2为第二种,贞2^2 (4)为第三种,贞2^3(8)为第四种。
[测试测量]
labview是什么?
虚拟仪器(virtual instrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。 虚拟仪器的主要特点有: 尽可能采用了通用的硬件,各种仪器的差异主要是软件。 可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。 用户可以根
[测试测量]
LabVIEW机器人模块-机器人选板中的特殊算法
  概览   本教程对LabVIEW机器人模块软件自带的机器人算法进行介绍。从传感器直至路径规划,您都可以使用这个产品来设计新一代的复杂的自动化系统。   LabVIEW机器人模块带有全新的功能完备的“机器人”选板,其中包含了设计下一代机器人控制器所需的全新算法。这个全新的函数选板包含了从传感器驱动程序直至反向运动学的所有功能。详情请参考LabVIEW帮助(见下面的链接),了解关于机器人VI的更多信息。   •利用连接VI与其他机器人软件一起工作,包括例如Cogmation、MobileRobotics、Skilligent以及Microsoft的第三方产品。   •使用回避障碍物VI,实现移动机器人车辆的回避障碍物功能。
[测试测量]
<font color='red'>LabVIEW</font>机器人模块-机器人选板中的特殊算法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved