? (String & Path,字符串和文件路径)——包括一些字符串及文件路径的控制器和指示器。 ? ?
(Array & Cluster,数组和簇)——包括一些数组型的控制器和指示器。 (List & Table,清单和列表)——包括一些清单和列表的控制器和指示器。
? (Graph,图形)——提供各种显示数据图形的指示器。
? (Ring & Enum,选项环和枚举)——包括一些选项环和枚举型控制器。
? (Containers,容器)——包括分页控件、子面板控件、ActiveX控件容器。
? (I/O,输入/输出)——包括一些输入/输出操作的控制器。
? (Refnum,文件标识)——包括一些用于文件操作的文件标识控制器和指示器。
? (Decorations,修饰)——包括一些图形对象,用于前面板的修饰。
3) 功能模板(Functions Palette)
选择框图程序窗口的Windows菜单下的Show Functions Palette选项或在框图程序窗口 单击右键,可显示出功能模板,如图1-7所示。
功能模板只用于框图程序窗口,用来创建框图程序。模板中显示的是一些子模板的图标,单击图标即可弹出相应的子模板。功能模板主要包含各种函数(子VI)及控制程序流程的结构。
下面简单介绍一些子模板的作用:
? (Structure,结构)——包括一些程序控制结构,如For循环、While循环、Case结构等以及全局变量、局部变量。 ? (Numeric,数字)——包括一些常用的数值运算符、数值运算式、数值常量以及数制转换、三角函数、对数、复数等运算。
?
(Boolean,布尔)——包括各种逻辑和布尔函数。
图1-7 功能模板
? (String,字符串)——包括一些对字符串进行处理的函数。
45-6
? (Array,数组)——包括一些数组运算函数、数组转换函数以及常数数组等。
? (Cluster,簇)——包括一些簇处理函数以及簇常数等。
? (Comparison,比较)——提供各种比较运算函数。
? (Timing)——包括一些时间处理函数。
? (Dialog & User Interface,对话框和用户接口)——包括一些对话框窗口、用户接口的函数。 ? 数。
(File I/O,文件输入/输出)——包括一些对文件输入/输出进行处理的程序和函
? (Waveform,波形)——包括一些波形曲线的函数。
? (Signal Processing,信号处理函数)——包括一些对波形数据进行分析的函数。
? (Instrument I/O,仪器输入/输出)——提供I/O接口设备驱动程序设计中使用的各种函数,如一些串行、GPIB和V1SA仪器控制的输入/输出函数。
? (Application control,应用程序)——包括一些应用程序控制的函数。
? (Graphics & Sound,图形声音)——包括一些绘制2D、3D图形以及声音播放
功能的函数。
? (Data Communication,数据通信)——包括按TCP、UDP、DDE、OLE和Apple.Events等协议进行通信的功能函数及与通信相关的函数。
? (Report & Generation,报表)——包括一些生成报表样式及规格的功能函数。
? (Select a VI,选择VI程序)——用来调入一个VI程序,并把该程序插入到当前VI
的流程图中,作为子程序使用。 3. LabVIEW程序设计的一般过程
一个完整的VI程序由3部分组成 :前面板、框图程序和图标/连接口,因此一个VI程序的设计主要包括前面板的设计、框图程序的设计以及程序的调试。
用户在使用虚拟仪器时,对仪器的操作和测试结果的观察,都是在前面板中进行的,因此应根据实际中的仪器面板以及该仪器所能实现的功能来设计前面板。前面板主要由输入控制器(Control)和输出指示器(Indicate)组成。用户可以利用控制模板以及工具模板来添加输入控制器和输出指示器(添加后,会在框图程序窗口中出现对应的控制器和指示器的端口图标),使用控制器可以输入数据到程序中,而指示器则可用来显示程序产生的结果。
框图程序相当于程序的源代码,只有创建了框图程序以后,该程序才能真正运行。对框
45-7
图程序的设计主要是对节点、数据端口和连线的设计。
当前面板和框图程序设计好以后,我们还需要对程序进行调试,以排除程序执行过程中可能遇到的错误。
程序的调试方法主要有:
? 找出错误——如果一个VI程序不能执行,运行按钮将会显示为一个折断的箭头。单
击该按钮
,则会弹出一个列有错误清单的对话框,选择任何一个所列出的错误,单
击【Show Error】按钮就会显示出错的对象或端口。 ? 设置执行程序高亮——在执行前单击高亮按钮
,该按钮图标会变成高亮形式
。这种执行方式一般用于单步模式,来跟踪框图程序中的数据流动。
? VI程序的单步执行——为了达到调试程序的目的,用户也许希望框图程序一个节点一个节点地执行。要设置单步执行模式,只需单击单步按钮。这样下一个将要执行的节点就会闪烁,指示它将被执行。用户也可以再次单击单步按钮,这样程序将会变成连续执行方式。
? 探针——从工具模板中选择探针工具运行过程中数据流在该连线时的数据。 ? 断点——从工具模板中选择断点工具
,可以在程序的某处暂停程序执行,用探针,将探针置于某根连线上,可以用来查看
或者单步方式查看数据。使用断点工具时,单击希望设置或清除断点的地方,断点的显
示对于节点或者框图表示为红框,连线表示为红点。 1) 前面板的设计
使用输入控件器和输出指示器来构成前面板。控制器是用户输入数据到程序的方法, 而指示器显示程序产生的数值。控制器和指示器有许多种类,可以从控制模板的各个子模中选取。
两种最常用的数字对象是数字控制器和数字指示器。当在数字控制器中输入或修改数值时,用户只需用操作工具(见工具模板)单击控制器的增减按钮,或者用操作工具或标签工具单击数值栏进行数值的修改。
绝大多数的控制器和指示器的配置是可以改变的:在控制器或指示器上单击右键,在弹出的快捷菜单中选择相应的选项
图1-8 通过菜单项改变控制
器和指示器的配置
图1-9 前面板
图1-10 框图程序
来改变配置,如图1-8所示。一个VI程序的前面板如图1-9所示。
2)框图程序的组成
45-8
框图程序由节点、端口和连线组成,如图1-10所示。 ① 节点
节点是程序执行的元素,类似于文本程序中的语句、函数或者子程.序。LabVIEW共有 4种节点类型:函数,VI子程序,结构和代码接口(CINS)。功能函数是内置节点,用于执行一些基本操作,如加、减、乘、除等数学运算以及文件I/O、字符串格式化等。VI 子程序节点调用其他VI程序来作为子程序使用。结构节点(如For循环控制、While循环控制等)控制程序的执行方式。代码接口节点是框图程序与用C语言编写的用户编码之间的接口。上面的VI程序中有一个功能函数节点,它使两个数值相加。
② 端口
端口是数据在框图程序部分和前面板之间传输的接口,以及数据在框图程序的节点之 间传输的接口。端口类似于文本程序中的参数和常数。端口有两种类型:控制器/指示器端口和节点端口(即函数图标的连线端口)。控制或指示端口用于前面板,当程序运行时,从控制器输入的数据就通过控制器端口传送到框图程序。而当VI程序运行结束后,输出数据就通过指示器端口从框图程序送回到前面板的指示器。当在前面板创建或删除控制器或指示器时,可以自动创建或删除相应的控制器/指示器端口。前述程序的控制程序有两个控制器端口,一个指示器端口,同时在框图程序中,Add功能函数在图标下隐含着节点端口。
③ 连线
连线是端口间的数据通道,类似于普通程序中的变量。数据是单向流动的,从源端口向一个或多个目的端口流动。不同的线型代表不同的数据类型,每种数据类型还以不同的颜色予以强调。
④ 连线点(Hot Spot)
连线点是连线的线头部分。 当需要连接两个端点时,在第一个端点上单击连线工具(从工具模板调用),然后移动到另一个端点,再单击第二个端点。端点的先后次序不影响数据流动的方向。
当把连线工具放在端点上时,该端点区域将会闪烁,表示连线将会接通该端点。当把连线工具从一个端口接到另一个端口时,不需要按住鼠标。当需要连线转弯时,单击一次鼠标,即可以正交垂直方向的弯曲连线,按空格键可以改变转角的方向。
⑤ 接线头(Tip s Strip)
接线头是为了帮助端口的连线位置正确。当把连线工具放到端口上,接线头就会弹出。 接线头还有一个黄色小标识框,显示该端口的名字。
3) 从框图程序窗口创建前面板对象
用任意LabVIEW工具,用户都可以用鼠标右键单击任意的LabVIEW功能函数或者子程序,然后可以弹出其快捷菜单,如图1-11所示。
4)数据流编程
VI程序的运行是“数据流”驱动的。对一个节点而言,只有当它的输入端口上的数据都有效以后,
它才能被执行。当节点程序运行完毕后,它把结果
图1-11 从框图程序窗口创建前面板对象
数据送给所有的输出端口。“数据流”与常规程序的“控制流”相类似,相当于指令执行的顺序按照程序的编写顺序进行。
如图1-12所示,这个VI程序把两个输入数值相乘,再把乘积减去50。在这个程序中, 框图程序从左往右执行,这个执行次序不是由于对象的摆放位置,而是由于相减函数的一个输入量是相乘函数的运算结果,它只有当乘法运算完成并把结果送到减法运算的输入口后才
45-9
图1-12 数据流举例
能继续下去。
下面简单介绍这个VI框图程序的创建过程:
(1)选择框图程序窗口。在功能模板中选择Numeric下的Mu1tip1y(乘法)函数,放入框图程序窗口。
(2)在此函数图标的左端输入端口上单击右键,从弹出的对话框中选择Creat ? ControL,创建与它相连的一个控制器。
(3)重复上面的步骤,创建第二个控制器同乘法函数的连接。
(4)在功能模板中选择Numeric下的Substract(减法)函数,放入框图程序窗口。 (5)在此函数左端相应输入端口上单击右键,从弹出的对话框中选择Creat ? Constant,创建一个常数。
(6)在此减法(Substract)函数右端输出端口上单击右键,从弹出的对话框中选择Creat ? Indicator, 创建指示器。
(7)用连线工具连线。
(8)选择工具模板中的标签(Edit Text)工具修改标签并添入数字。
(9)创建图标。创建方法如下:
? 在前面板窗口或框图程序窗口的右上角的图标框中单击右键,从弹出快捷菜单中选择Edit Icon (或双击此图标框)。 ? 双击选择工具,选中默认的图标,按Delete键,清除所选图标图案。
? 用画图工具画出所需的图标。注意:在用鼠标画线时按住Shift键,则可以画
出水平 或垂直方向的直线。
图1-13 数据流举例 ? 用文本工具写文字,双击文本工具可
改变字体及字号。
? 当图标创建完成后,单击【OK】按钮以关闭图标编辑。生成的图标将显示在前面板 窗口的右上角。
(10)从File菜单中选择Save命令来保存此例子,起名为“例子1”。
再看另一个程序,框图程序如图1-l3所示,您认为哪一个节点函数将先执行,是乘法、还是除法?这里是一个不定情况,因为所有输入量都是同时到达。如果是这样一种相互间无数据依赖关系的情况,而又必须明确函数执行的先后次序,就必须使用顺序(Sequence)结构来明确执行次序(有关于顺序结构我们将在后续内容中介绍)。
5)创建子程序
45-10