4.1 编程基础-数值与布尔数据
LabVIEW 中最常用的几种数据、控件、结构、子 VI 和函数等

如下拉列表控件、列表框控件也是数值型的


实数“0.0”用绝对时间格式表示如下:
![]()



常量
常量将会根据输入值自动选择表示法。
| EXT | 扩展精度实数,16 字节长 | DBL | 双精度实数,8 字节长 |
| SGL | 单精度实数,4 字节长 | FXP | 定点数,最大 8 字节长 |
| I64 | 带符号 64 位整数 | I32 | 带符号 32 位整数 |
| I16 | 带符号 16 位整数 | I8 | 带符号 8 位整数 |
| U64 | 无符号 64 位整数 | U32 | 无符号 32 位整数 |
| U16 | 无符号 16 位整数 | U8 | 无符号 8 位整数 |
| CXT | 扩展精度复数,2×16 字节长 | CDB | 双精度复数,2×8 字节长 |
| CSG | 单精度复数,2×4 字节长 |
2的16次方= 65536
I16= -32768~32767
U8=2的8次方=256(0~255)
计算机对于实数的运算速度要大大慢于整数运算
双精度实数 DBL 可以表示的最大数值大约为 1.7*10^{308}1.7∗10308
超出这个范围,LabVIEW同样不会报错,而是会使用一个特殊的符号,Inf(正无穷大)
比如,在 LabVIEW 中计算 1 \div 01÷0,结果就是 Inf。在很多其它编程语言中,除以零会抛出异常,而不是得到一个特殊结果。0 除以任何数都等于零,任何数除以 0 都等于无穷大,那么 0 除以 0 等于几?在 LabVIEW 中 0 \div 00÷0 会得到另一个符号 NaN,表示这不是一个数值。在其它一些情况下,也会得到 NaN,比如 NaN 和数值做运算都会得到 NaN; +Inf 与 -Inf 相加会得到 NaN; Inf 除以 Inf 会得到 NaN; -1 开平方也会得到 NaN。
-1 开平方在实数域内确实没有结果,但是如果在复数域内就是一个合法的计算了。我们把输入和输出的表示法都换成双精度复数,再计算一遍:
需要一个函数,却不知道它藏在哪个函数选板下。这时,可以利用函数或控件选板的搜索功能,点击函数或控件选板上方的“搜索”按钮(图标为放大镜的按钮),就可以进入选板搜索功能:

表达式节点
对于只有一个输入和一个输出的运算,我们可以使用表达式节点。

公式 Express VI
如果运算有多个输入,可以使用公式 Express VI:
公式 Express VI 允许使用最多 8 个输入数据,但只能有一个输出数据

公式节点
对于多输入多输出或更加复杂的计算,可以使用公式节点:(作是更为复杂的支持多输入输出的表达式节点)
需要C 语言编程经验的用户;先在一个 C 语言编译器中对其进行编译调试

公式节点只支持数值运算相关的运算符和函数,其它方面都不支持,比如界面操作,控制硬件等。方块加连线的方式确实不太适合用于实现复杂数据公式,这才有了公式节点。LabVIEW 的优势主要在快速编写程序界面以及对仪器、数据卡等硬件读写等领域。
数值的单位
测控领域,LabVIEW 中的数据通常不是抽象的数值,而是代表实际意义的物理量
数值型控件的快捷菜单上选择 "显示项 -> 单位标签",就可输入数值的单位了


数据从一个单位转换为其它单位时,数值是会自动换算。例如要计算 2 年有多少天,可以用下图中的程序:

在编写能够适用于不同单位的子 VI 时,可以使用单位通配符。单位通配符用 $n 表示,其中 n 是 1 到 9 之间的任意一个数字。以我们刚才提到的加法为例:可以在子 VI 中使用通配符 $1;如果还需要一个执行其他运算的子 VI,其单位可以用 $2 表示;依此类推。

使用“单位转换”(Convert Unit)节点(在“编程 -> 数值 -> 转换函数”选板下)可以把一个纯数字量转换为带有单位的数字量,或者反向转换。

那么 0 除以 0 等于几?在 LabVIEW 中 0 \div 00÷0 会得到另一个符号 NaN,表示这不是一个数值


Inf(正无穷大)在 LabVIEW 中计算 1 \div 01÷0,结果就是 Inf
提醒我们,在比较两个实数是否相等的时候,一定要考虑误差。
布尔数据类型和数值的比较
布尔型数据只有两个值:"真" 或 "假"。在理论上,只要一位(bit)就可以表示这两个值了。但实际上,台式机或笔记本电脑处理数据的最小单位是字节(8 bit),这两个值只能分别是用一个字节来表示的。当一个字节上每一位数据都为 0 时,表示 "假",否则表示 "真"。
布尔型控件六种机械动作
前两个机械动作模拟开关,每次点击,状态就会发生改变:开变关,关变开;后四个机械动作模拟按钮,按下再松开手,按钮会自动恢复默认状态。
按钮类型控件,选择第二排第二列的机械动作,即每次鼠标按键放开时,发出一个值改变的脉冲信号。所谓脉冲信号是指,按钮控件的布尔数值原本是 False,在鼠标按键放开的瞬间变为 True,然后立即恢复为 False。
在大多数程序中,按钮常常被用来触发一个事件,去处理某个工作。关于这一点,后文还会在事件结构中继续讨论
机械动作为触发型的布尔控件,也就是第二排的三种机械动作类的布尔控件,是不能够使用局部变量和“值”属性节点的。
练习
- 笔者家的客厅是一个长为 22.5 英尺,宽为 12.5 英尺的长方形。编写一个 VI 计算一下笔者家客厅的面积是多少平方米?
- 编写一个 VI,它有 4 个数值输入数据(控制控件或常量),分别是 x1, x2, x3, target,和一个布尔型输出数据 result。编写程序判断一下在 x1, x2, x3 中是否存在两个数,相加后恰好等于 target。比如输入的 4 个数值分别是 x1=3, x2=5, x3=7, target=8, 则输出 result=True,因为 3+5=8; 如果前三个输入数值不变,但是 target=2,则计算结果应为 result=False。


浙公网安备 33010602011771号