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.710308

超出这个范围,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。

 

posted @ 2022-09-30 12:38  StudySong  阅读(897)  评论(0)    收藏  举报