Banner
首页 > 新闻 > 内容
5大关键技巧,助你Labview编程事半功倍
- 2020-08-28-

虽然NI LabVIEW软件长时刻以来一向协助工程师和科学家们快速开发功用丈量和操控运用,但不是一切的新用户都会遵循LabVIEW编程的最佳办法。LabVIEW图形化编程比较独特,由于只需看一眼用户的运用程序,就立刻能够发现用户是否遵循编码的最佳办法。有些用户会犯这些过错是由于他们没有真实了解LabVIEW框图数据流背面的原理,而有些用户则是不知道哪些特性可提高LabVIEW编程质量。

小编辛苦总结了经历短缺的LabVIEW程序员最常常犯的一些编程过错,一起也供给了采用正确LabVIEW编程办法的主张。


  LabVIEW新手典型“创作”


01过度运用平铺式次序结构


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


 用户往往过度依靠平铺式次序结构,而没有充沛了解数据流编程概念。

数据流编程是指只要在所需的数据输入全部抵达时,框图上的节点(子VI、本原、结构等)才开始履行。这关于运用LabVIEW的程序员来说十分有用,由于独立的进程本身就能够完结并行运转,而命令式言语却需求额定的设置才能实行并行履行。

跟着计算机CPU的不断增多,LabVIEW可主动分化并行流程,提高代码性能,而无需用户编写任何额定代码。而强行运用平铺式次序结构来履行程序框图不仅会限制并行运转,还会损失这一优势。限制程序框图中不必要的结构有助于提高全体可读性和保持更简洁的框图。

过错连线能够有用地完结程序框图上的数据流,而不需求依靠平铺式次序结构,此外过错连线还有助于完结过错处理战略。


何时应该运用平铺式次序结构?


平铺式次序结构的数据流不同于其他结构的数据流。 一切连线至帧的数据都可用时,平铺式次序结构的帧按照从左至右的次序履行。 每帧履行结束后,将数据传递至下一帧。 即一个帧的输入或许取决于另一个帧的输出。


与层叠式次序结构不同,平铺式次序结构中不必运用次序局部变量在帧与帧之间传递数据。 平铺式次序结构在程序框图上显示每个帧,故无需运用次序局部变量即可完结帧与帧之间的连线,一起也不会隐藏代码。

在平铺式次序结构中增加或删除帧时,结构会主动调整尺寸大小。

不可在平铺式次序结构的各个帧之间拖曳隧道。

应确立数据依靠或运用流经参数可控VI的数据流,避免过度运用平铺式次序结构。

(Real-Time, Windows)右键单击平铺式次序结构,在方便菜单中挑选替换为守时次序,可将平铺式次序结构替换为守时次序结构。

经过平铺式次序结构来履行程序框图有助于代码性能的基准测试。经过运用结构内具有时刻计数器的次序结构,您能够决议两个时刻计数器之间代码履行所花费的时刻。这是一般数据流履行所无法完结的。


平铺式次序结构和时刻计数器VI有助于代码的基准测试


02过度运用局部变量

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

关于其他编程言语来说,经过变量传递数据是必需的,而LabVIEW则供给了一种数据流办法,可将数据从程序的一个部分移动到另一个部分。LabVIEW固有的并行性机制决议着用户不能过度运用变量,由于同一时刻内通常会有多个不同的方位的程序访问共享内存。假如过度运用变量,则会呈现某个读/写操作赢了“竞赛”,而其他操作则输了“竞赛”,丢失数据的操作会被忽视,因此在LabVIEW中过度运用变量或许会终究导致数据丢失。

您能够经过多种办法安全地将数据从LabVIEW程序的一个部分传递到另一个部分,包括连线、行列、事情、告诉、功用全局变量等等。每个机制都是针对特定情况规划的,但都具有消除竞赛条件的功用。


03疏忽代码模块化

通常情况下,新LabVIEW用户创立的是“即写即忘”运用程序去完结简略的使命,而没有考虑到今后是否会用到这些代码。跟着编程工作越来越多,他们会发现自己一遍又一遍地重写同一段代码。而假如在编程一起创立一个可复用于其他运用的模块化子VI,就能够节省很多的开发时刻。

假如您知道代码的特定部分将会重用于同一运用程序,或感觉该部分代码或许会用于未来的运用程序,那么您应该花一点时刻将该部分代码变成一个子VI。假如要使某部分代码成为一个子VI,您需求做的主要是增加一个文档、运用“接线端”、禁用某些VI特点。创立子VI的最简略办法之一是高亮符号程序框图中的某部分代码,然后从菜单栏中挑选“修改>>创立子VI”。这样这部分代码就会放到一个独自的VI,然后运用“接线端”。您依然需求为图标增加阐明,并将文档记叙增加到程序框图和VI特点中,然后撤销某些VI设置,但“修改>>创立子VI”可协助您很好地了解代码的模块化功用。


采用正确的LabVIEW代码模块化操作能够协助您节省很多开发时刻

代码模块化时必须撤销的一项设置是“答应调试”。您可在“VI特点(文件》》VI特点)”下的“履行”目录中找到此选项。代码彻底正常运转无需再运用高亮履行等调试功用时,在履行设置中撤销“答应调试”,然后再次运转VI。这样做的好处是由于在编译过程中进行了优化,运用程序的运转速度或许加速,而且由于启动调试的代码被封闭,VI所占的磁盘物理空间也相应削减了。


04创立巨大繁琐的程序框图

许多新LabVIEW用户都会把程序框图编写得十分繁琐巨大。关于一些复杂的运用程序,我们难免需求编写较大的程序框图,但巨大的程序框图从一定程度上也能够标明该程序缺少编程架构。假如没有一个基本的架构,要长时刻维护该程序是十分困难的,而且假如今后要增加新功用也会十分困难。正如只要一个好的结构才能建造一栋结构合理的房子,一个好的编程架构能够为您构建运用程序供给了一个安全可靠的结构。

简直一切的程序员都会发现常见的结构中,软件架构是十分有用的。实践上LabVIEW中的许多架构,如生产者/消费者和状态机,与其他编程言语十分相似。

了解LabVIEW的架构能够缩短开发时刻和提高运用程序的可扩展性。LabVIEW 2012包含了模板和项目典范,使了解架构变得更加简略。模板解释了不同的架构及运用。项目典范则是根据模板的更大型运用程序,演示了如何运用模板来应对实践的挑战。您能够将硬件加入到典范项目中,或许需求时可将项目典范作为一个全体运用程序,一起项目典范具有开放性且文档记叙也很完整,所以您可针对详细运用进行自定义。


LabVIEW 2012中的模板和项目典范使得了解软件架构变得十分轻松。


05不重视文档记载

优异的代码文档能够有用地协助别人了解自己写的程序。惋惜的是,许多程序员通常在开发周期晚期功用开发结束之后才开始进行文档撰写。这使得用于对代码进行文档记载的时刻变得十分少。正确的做法应该是在开发过程中就需抽出时刻来开始进行文档记载。文档关于编程人员自身也十分有用,尤其是当他们过段时刻回来看代码却不记住最初他们为什么挑选某些代码时。程序员常常会一边喝着咖啡,一边熬夜编程,这往往会呈现“时刻短失忆”。而文档则能够协助程序员进行回忆。

一般情况下,相关于根据文本的程序,LabVIEW的图形化特性使得程序阅览更为简略,可是有用的文档记载能够削减“解码”程序所需的时刻。增加文档注释到程序框图的最简略方法是运用自在标签。您能够在框图的空白方位双击左键,并输入文字,增加注释。然后,运用箭头符号来指向自在标签引用的特定代码。假如需求增加图片,则可将它们复制到剪贴板,然后粘贴到程序框图中。物理系统图片和数学公式均有助于明晰阐明程序框图内的代码上下文。


架构正确且文档记载充沛的代码不仅可协助其别人了解您的代码,也可协助您更好地了解自己的代码。

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