LabVIEW开发平台的核心元素 LabVIEW是一个开放的开发平台,获得许多不同的应用领域和行业採用。为什么呢?在其核心中,LabVIEW 图形化程式设计语言让数以千计的科学家及工程师得以非常迅速而简易地开发复杂的量测及控制系统。但是程式语言只是在过去二十年间推动其接受度的平台元件之一。有四项关键元件,被视为LabVIEW开发平台的重要元素:
• 直觉式的图形化程式设计语言 • 高阶的应用程式专用工具 • 整合的量测及控制专用功能 • 多重运算目标
◆ 直觉式的图形化程式设计语言 你可以想像得到,在过去二十年来,LabVIEW程式语言已经推出大量的函式库及结构,并且加以改良。本文的范围无法详细说明图形化程式设计语言的所有层面,以及它为何能供科学家和工程师使用。在本文中,我们要着重介绍几项使这种程式语言与众不同的关键概念:
1. 资料流(Dataflow) LabVIEW是一个以图形化程式设计语言为基础的开发环境。这种开发应用程式的方法大幅降低学习曲线,因为对工程师和科学家而言,图形呈现要比文字程式码更加自然。你可以透过互动式面板、对话方块、选单,以及数百种函数程式区(称为VI,虚拟仪器)来存取工具及功能。你可以将这些VI拖拉至程式区中,以定义应用程式的行为。这种点选的方式大幅降低从初步设定到最终方案之间所花的时间。
图二:LabVIEW的程式区范例
你透过一种称为资料流程式设计(dataflow programming)的概念来设定资料的流程,以及应用程式的执行。资料从一个VI传送到下一个VI,最后决定了执行的顺序以及整个应用程式的功能。资料流的本质可以比拟为阅读流程图。程式区中包括函数(以图示表示)、连接这些图示的接线,以及控制执行逻辑的结构。资料从一个函数流到下一个函数,而函数和VI要等到所有的端子(terminal)或接线连接都有资料可以处理时才会执行(见图二)。
2. 模组化 LabVIEW在本质上即鼓励模组化及程式码重覆使用。使用者利用图形化的人机界面建立VI(即程式模组);在人机界面中,以图形化的控制器和指示器呈现函数程式码的输入及输出。图形化的控制器及指示器(旋钮,量表,仪表,图表显示,长条图等等)代表传入及传出函数的资料的类型。使用者可以轻易地将这些VI加入其它VI中,因此可以产生模组化、阶层化的程式码,让使用者得以一次制作一个元件,并在发展过程中重覆使用共用的操作做为subVI,逐渐地建立复杂系统。应用程式中使用的覆层或subVI的数量没有限制,因此程式语言可以随着应用程式所需的复杂度而扩充。
3. 多执行绪及平行执行 LabVIEW除去传统程式语言所必须的低阶程式写作工作,例如记忆体管理(变数宣告等等)。LabVIEW亦具备直觉式的图形化架构,供文字式程式语言中的一般性程式设计架构使用。举例来说,While迴圈及For迴圈以方块的形式呈现──以图形方式位于方块内的程式码就是迴圈重复执行的程式码。
再深入一层来检视这个程式语言,LabVIEW的设计就是作为一种平行语言,也就是说这个图形化程式语言架构在本质上即呈现出平行执行的简单概念。但是要在文字式程式语言中设计这种简单概念却非常困难,因为它们传统上就是採取循序执行(一行接一行)的方式。利用LabVIEW,使用者可以开发平行执行的应用程式,只需在其程式码中加入多个迴圈架构即可。如图三所示的两个独立迴圈也会平行地独立执行。这项功能是用非常简单的方式来解决非常困难的程式设计挑战。平行执行在自动化测试系统中非常重要,因为可能同时测试多部设备;在即时控制系统中则可能在需要严格控制时间的迴圈撷取资料及控制输出的同时,资料也同步传送到主机;或是在嵌入式应用中,多种类型的输入必须以可确定的方式来加以回应。
 |
图三:LabVIEW图形化程式设计语言的设计是为了用比顺序型文字程式语言更加直觉的方式来呈现平行执行。
在开发平行执行应用程式时,程式设计师必须拥有工具,以设定不同操作的优先顺序。举例来说,程式的I/O部份就比使用者界面重要得多。利用LabVIEW,使用者可以使用直觉式的对话方块及设定,在作业系统层级上设定执行绪的优先顺序。
4. 互动式执行及除错 LabVIEW语言也是互动式的,也就是说使用者在开发过程中可以轻松地尝试函式库中不同的函数,这在设计I/O资源程式时尤其重要。举例来说,在设定资料撷取(DAQ)操作时,使用者可以直接从内建的DAQ函式库中选择一个撷取函数,再让它独立执行。这个操作会实际从电脑的DAQ介面卡上取得资料,因此使用者可以检视资料,看看它的运作是否适合程式之用。若是如此,只需将该VI拉进程式中并继续进行开发即可。如果不适合,再试试函式库中的其它VI,直到你找到需要的函数为止。
在LabVIEW中除错也是採用互动方式,它具备所有传统程式设计工具的常见功能,例如中断点、step over/into/out of等等。LabVIEW独特的除错功能之一是将运算法中任何一处的资料予以视觉化,而不会降低运算法的效能或需要复杂的程式设计。举例来说,如果你在LabVIEW中开发一个复杂的信号处理运算法,你可以将图表控制器放进人机界面,将它们连接到资料路径上,以检视运算法中该点的资料。或者你也可以连接一个控制器(例如旋钮或滑轴控制器),用来更动运算法的输入参数值。这种互动式检查资料和参数值的能力使得在LabVIEW中除错的速度提高许多,也更加直。
◆高阶的应用程式专用开发工具 LabVIEW图形化程式语言为科学家及工程师提供一个直觉的方式,以开发其量测和控制应用程式。除了容易学习及使用之外,这种语言也提供先进应用程式所需要的效能。编译后的程式执行速度可与传统文字式程式语言的编绎结果相比。但是对许多应用程式而言,可能有更高阶的方式可以呈现解决方案(或是解决方案的一部份),而不需要使用低阶程式码。LabVIEW的高阶工具日渐增多,其目标在于用更快的速度解决特殊类型的结构需求。利用大部份的工具,使用者可以在较高阶的概念层次进行开发,然后再转换成低阶的LabVIEW程式码,以提供编译后之LabVIEW语言所具备的开放性、弹性及效能。这些开发工具包括: • 控制程式区──用于设计线性、非线性、离散性,以及连续性控制系统。使用者可以使用传统的控制观念来进行开发,例如传送函数区块、积分器、微分器及回馈迴圈。
 |
图四:LabVIEW的模拟图解
• 状态图表──使用图形化的状态图表呈现,定义多项状态及状态间的转换逻辑
图五:状态图表
• 公式/脚本节点──用于在文字中使用复杂公式,或输入以传统数学工具(例如The MathWorks, Inc. MATLAB或MATRIXx)定义的运算法 • 使用者界面设计──使用LabVIEW的事件架构,在图形化程式码中管理非常复杂的使用者界面。架构接收与每一个使用者事件有关的资讯,可以在事件架构中的不同面板上进行处理。
运用这些高阶观念来制作特定的应用程式,加上LabVIEW程式语言的弹性,使用者就可以在一个平台上发挥这两种方式的最大功能。
◆整合的I/O功能 LabVIEW最广为人知的就是它是一套资料撷取及仪器控制工具。这些功能皆内建于程式语言中,而且普见于整个环境之中。语言本身可以自然地管理连续性、迴圈式的资料撷取作业,并为开发人员节省大量的时间,因为这项工具在以下所列的领域当中,以工程师和科学家的角度提供各种功能:
I/O函式库 • 插入式资料撷取设备 • 模组化仪器 • 独立仪器(GPIB,RS232等等) • 视觉/影像撷取 • 运动控制
分析 • 信号处理 • 声音及震动 • 命令分析(轮流式机器分析(rotational machinery analysis)) • 频谱测量及调变
显示 • 图表,长条图 • 旋钮,计量器,量规 • 帮浦,活阀,管路 • 温度计,水槽
图六:LabVIEW的人机界面
这些不同类型的工程专用控制器和函式库的整合功能不容低估。
◆ 多重运算目标 LabVIEW平台的另一个优势是它的开放后端,可以用多种运算平台为目标。LabVIEW的原生编译器可以在所有普遍的桌上型作业系统上执行,例如Windows、Mac OS X,以及Linux。. LabVIEW也可以在工业用即时平台上执行,供需要可确定性或额外稳定性的应用环境使用。LabVIEW程式也可以以执行Windows Mobile、Windows CE或Palm OS的手持型设备为目标。除了显而易见的手持型PDA或智能型电话设备之外,这些技术也常见于机器或工业系统所使用的触控显示器。最后,LabVIEW的嵌入式系统产品将LabVIEW程式转变成C程式码,可以在32位元微处理器上执行。
透过如此广泛的运算目标,LabVIEW使用者可以为其应用程式选择正确的执行时段环境, 并随着需求改变而变动规模。 |