程序框图对象包括接线端和节点。将各个对象用连线连接便创建了程序框图。接线端的颜色和符号表示相应输入控件或显示控件的数据类型。常量是程序框图上向程序框图提供固定数据值的接线端。

程序框图接线端

前面板上的对象在程序框图中显示为接线端。双击程序框图上的一个接线端,则前面板上相应的输入控件或显示控件将高亮显示。

接线端是前面板和程序框图之间交换信息的输入输出端口。输入到前面板输入控件的数据值经由输入控件接线端进入程序框图。运行时,输出数据值经由显示控件接线端流出程序框图而重新进入前面板,最终在前面板显示控件中显示。

LabVIEW中使用的接线端包括输入控件和显示控件接线端、节点接线端、常量及用于各种结构的接线端。连线则把接线端连接起来,使数据在接线端间传递。右键单击一个程序框图对象,从快捷菜单中选择显示项»接线端可查看接线端。再次右键单击该对象,从快捷菜单中选择显示项»接线端可隐藏接线端。该快捷菜单项对于可扩展VI和函数不可用。

前面板输入控件或显示控件在程序框图上可显示为图标接线端或数据类型接线端。默认状态下,前面板对象显示为图标接线端。例如,旋钮图标接线端表示前面板上的一个旋钮输入控件。如下图所示。

接线端底部DBL表示控件的数据类型为双精度浮点型。如下所示的DBL接线端代表一个双精度浮点数输入控件。

右键单击接线端,取消勾选快捷菜单中的显示为图标,使图标显示为数据类型接线端。使用图标接线端不仅可显示前面板对象的数据类型,还可显示前面板对象在程序框图上的类型。使用数据类型接线端则较节省程序框图的空间。

注: 由于图标接线端比数据类型接线端大,因此将一个数据类型接线端转换为图标接线端后,可能会覆盖其他程序框图对象。

输入控件接线端的边框比显示控件接线端的边框粗。另外,箭头的方向也可表示控件是输入或显示控件。输入控件接线端的箭头在右边,显示控件接线端的箭头在左边。

输入控件和显示控件的数据类型

下表显示了各种不同输入控件及显示控件接线端的符号和用途。

接线端的颜色和符号表明了相应输入控件或显示控件的数据类型。许多数据类型有其相应进行数据操作的函数,如位于字符串选板的字符串函数,其对应的数据类型为字符串。

关于使用数值数据类型的更多信息见数值数据类型

控制 显示控件 数据类型 用途 默认值
单精度浮点 占用内存较少且不会造成数字溢出。 0.0
双精度浮点数 数值对象的默认格式。 0.0
扩展精度浮点数 因平台而异。只有在却有需要时才使用该数据类型。 0.0
单精度浮点复数 与单精度浮点数相同,但带有实部和虚部。 0.0 + 0.0i
双精度浮点复数 与双精度浮点数相同,但带有实部和虚部。 0.0 + 0.0i
扩展精度浮点复数 与扩展精度浮点数相同,但带有实部和虚部。 0.0 + 0.0i

定点 存储在用户定义范围内的值。如不需要浮点表示的动态范围或浮点运算占用了大量FPGA资源,为了更有效地使用FPGA资源,可使用定点数据类型。 0.0
8位有符号整数 表示整数,可以为正也可以为负。 0
16位有符号整数 同上。 0
32位有符号整数 同上。 0
64位有符号整数 同上。 0
8位无符号整数 仅表示非负整数,正数范围比有符号整数更大(这两种表示法表示数字的二进制位数相同)。 0
16位无符号整数 同上。 0
32位无符号整数 同上。 0
64位无符号整数 同上。 0
<64.64>位时间标识 高精度绝对时间。 12:00:00.000 AM 1/1/1904(通用时间)
枚举类型 供用户进行选择的项目列表。
布尔 存储布尔值(TRUE/FALSE)。 FALSE
字符串 独立于平台的信息和数据保存格式。用于创建简单的文本信息、传递和存储数值数据等。 空字符串
数组 方括号内为数组元素的数据类型,方括号的颜色与数据类型的颜色一致。数组维度增加时方括号变粗。

复数元素矩阵 连线样式不同于使用同一数据类型的数组。

实数元素矩阵 连线样式不同于使用同一数据类型的数组。
可包含若干种数据类型的元素。簇内所有元素的数据类型为数值型时,簇显示为褐色;如簇中有非数值类型的元素时,簇显示为粉红色。错误簇显示为深黄色,LabVIEW类簇默认为深红色,报表生成VI的错误代码簇为湖蓝色。
路径 使用所在平台的标准语法存储文件或目录的地址。 空路径
动态 (Express VI)包含了与信号相关的数据及说明信号相关信息的属性,如信号名称或数据采集的日期和时间。
波形 包含波形的数据、起始时间和时间间隔( t)。
数字波形 包含数字波形的起始时间、时间间隔x、数据和属性。
数字 包含数字信号的相关数据。
引用句柄 对象的唯一标识符,包括文件、设备或网络连接等。
Variant;变体 包含输入控件或显示控件的名称、数据类型信息和数据本身。
I/O名称 将配置的资源传递给I/O VI,与仪器或测量设备进行通信。
图片 包括显示图片的一组绘图指令,图片中可包含线条、圆、文本或其他形状的图形。

选用简单且一致的数据类型可优化内存使用

浮点数据的符号数值

如数据未定义或数据是非预期数据,会影响后续操作。浮点数据操作返回以下两种符号值用以表明错误的计算或无意义的结果:

  • NaN(非法数字)表示无效操作所产生的浮点值,如对负数取平方根。
  • Inf(无穷)表示超出某数据类型值域的浮点数值。例如,1被0除时产生Inf。LabVIEW可返回+Inf-Inf

LabVIEW不检查整数的上溢或下溢条件。

浮点数的上溢和下溢符合IEEE 754浮点数算术标准

浮点运算能可靠地传送NaNInf。而整数和定点数不支持符号数值。将+Inf转换为整数或定点数时,其值变为该数据类型的最大值。例如,将+Inf转换为16位有符号整数的结果为32,767(16位有符号整数能表示的最大值)。LabVIEW将-Inf转换为该数据类型的最小值。

NaN显式或隐式转换为整数或定点数时,其值将变为目标数据类型的最大值。

在将数据转换为整数或定点数据类型前,可先用探针工具查看中间浮点数值是否有效。将比较函数非法数字/路径/句柄?连接到有效性可疑的数据上,通过编程检查数据是否为NaN。也可使用判定范围并强制转换函数将值保持在指定的范围内。

注:(FPGA模块)FPGA上的NaN输出可能与开发计算机上输出的位排列不同。

常量

常量是程序框图上向程序框图提供固定数据值的接线端。通用常量即有固定值的常量,如pi(π)和Inf(∞)。用户定义常量是在VI运行前由用户定义和编辑的常量。

右键单击一个常量并从快捷菜单中选择显示项»标签可为该常量加标签。操作工具或标签工具可对通用常量的标签进行编辑,设置其预定义值。

常量一般位于所在选板的底部或顶部。

通用常量

通用常量可进行数学运算及对字符串或路径的格式化。LabVIEW有以下类型的通用常量:

  • 通用数值常量 - 高精度和常用数学及物理值的集合,如自然对数的底(e)和光速。通用数字常量位于数学与科学常量选板上。
  • 通用字符串常量 - 常用的无法显示字符的集合,如换行和回车。通用字符串常量位于字符串选板上。
  • 通用文件常量 - 常用文件路径值的集合,如非法路径、非法引用句柄和默认目录。通用文件常量位于文件常量选板上。

用户定义常量

按类型排列常量的函数选板,包括布尔、数值、下拉列表、枚举型、颜色盒、字符串、数组、簇和路径等常量。

右键单击VI或函数的输入端,从快捷菜单中选择创建»常量可创建一个用户定义常量。

VI运行时不能修改用户定义的常量。

也可通过将一个前面板控件拖曳到程序框图的方式创建常量。将前面板控件拖放至程序框图时,LabVIEW将创建一个包含该控件值的常量。但前面板控件仍留在前面板上。改变该控件的值并不影响该常量的值,反之亦然。

用操作工具或标签工具单击常量可编辑常量的值。如自动选择工具已启用,则双击该常量可切换到标签工具,从而编辑常量菜单值。

常量折叠和循环不变量

LabVIEW通过常量折叠和循环不变量优化VI的性能。

  • 在常量折叠的情况下,LabVIEW将在第一次运行VI时计算常量值运算结果,而不是每次运行时都重新计算。对所有输入端均为常量的结构(例如,For循环)执行常量折叠时,LabVIEW将运行该结构,并在VI第一次运行时计算结构输出,而不是每次运行时都重新计算。
    注:启用调试后,LabVIEW无法在结构中实现常量折叠。
  • 循环不变量是指For循环或While循环计算出的非常量值,该值不会随着循环的迭代发生变化。例如,For循环内部仅连接至非索引输入隧道的“加”函数即为循环不变量,因为“加”函数的输出不会随着循环的迭代发生变化。LabVIEW在循环运行之前计算循环不变量的值,而不是在每次循环迭代过程中进行计算。

单击工具»选项»程序框图,然后在程序框图页配置码标线选项,可配置LabVIEW将常量折叠和循环不变量显示为码标线。

程序框图节点

节点是程序框图上的对象,具有输入和/或输出端,在VI运行时进行运算。节点相当于文本编程语言中的语句、运算符、函数和子程序。LabVIEW有以下类型的节点:

  • 函数 - 内置的执行元素,相当于操作符、函数或语句。
  • 子VI - 用于另一个VI程序框图上的VI,相当于子程序。
  • Express VI - 用于常见测量任务的子VI,Express VI可在配置对话框中进行配置。
  • 结构 - 执行控制元素,如For循环、While循环、条件结构、平铺式和层叠式顺序结构、定时结构和事件结构
  • 公式节点和表达式节点 - 公式节点是可以直接向程序框图输入方程的结构,其大小可以调节。表达式节点是用于计算含有单变量表达式或方程的结构。
  • 属性节点和调用节点 - 属性节点是用于设置或寻找类的属性的结构。调用节点是设置对象执行方式的结构。
  • 通过引用调用节点 - 用于调用动态加载的VI的结构。
  • 调用库函数节点 - 调用大多数标准共享库或DLL的结构。

多态VI和函数

多态VI和函数会根据输入数据类型的不同而自动调整数据类型。与某些VI和函数一样,绝大多数的LabVIEW结构为多态。

函数多态的程度各不相同:可以是全部或部分输入多态,也可以是完全没有多态输入。有的函数输入可接收数值或布尔值,有的函数输入可接收数值或字符串,一些函数的输入不仅接收标量数值,还接收数值数组、数值簇或数值簇数组等。还有一些函数输入仅接收一维数组,即使其数组元素可以是任意数据类型。另外,有的函数输入可接收所有数据类型,包括复数值。