程序框图上强制转换点表示LabVIEW将传递至节点的值转换为另一种表示法。在LabVIEW中发生数值转换的接线端端口,将出现一个强制转化点。由于VI和函数可含有多个接线端,故将一个接线端连接到另一个接线端时,图标内部将出现强制转换点。

红色强制转换点

如将一个数值类型连接至另一种数值类型,或将非变体类型的数据连接至变体接线端,程序框图上就会出现红色的强制转换点。

例如,下图的函数上出现了红色强制转换点,因为函数要求两个输入有相同的数据类型。但是实际输入的是一个双精度浮点数和一个整数。LabVIEW将整数转换为双精度浮点数后再相加。

蓝色强制转换点

配置函数的定点输出设置时,数值函数的输出接线端上将出现蓝色的强制转换点。蓝色转换点表示LabVIEW不会为了上溢和凑整误差而自动调整输出数据类型。

下列程序框图显示了一个蓝色强制转换点。

减少强制转换点优化内存使用和精确度

强制转换点可通过下列方式影响VI的内存占用和整体性能:

  • 自定义类型强制转换 - 如将自定义类型连接至一个与自定义类型没有链接关系的对象,VI可能会产生错误结果。
  • 标量数值强制转换 - 如操作不同数据类型,LabVIEW可能会进行多次强制转换。多次强制转换可能会影响VI的精确度。
  • 大型数组强制转换 - 如强制转换大型数组的数据类型,VI可能会占用大量内存,VI的执行时间也会变长。

如使用的数据类型一致,可避免不必要的强制转换。

提示 将鼠标移至带有强制转换点的接线端附近时,即时帮助窗口的已连接连线的数据类型栏将显示连接至VI或函数的连线的数据类型。已连接连线的数据类型接线端数据类型一致时,能最低程度地减少强制转换点。

自定义类型的强制转换

自定义类型连接至与原自定义类型没有任何链接关系的对象时,LabVIEW会在接线端上显示一个强制转换点。如编辑自定义类型,VI可能会出现断线或生成无效数据。

注: 如将自定义类型连线至相同数据类型的对象,LabVIEW也将强制转换自定义类型,除非对象要求相同的自定义类型。删除自定义类型并连线相同的参数(对象不包含自定义类型),可避免强制转换。

如编辑连接至簇或枚举型控件的自定义类型,连接簇或枚举型控件的连线将断开。

下列程序框图中自定义类型的强制转换会影响结果的准确性,如果编辑自定义类型,连线将断开。在该例中,子VI的输入是一个滤波器类型的自定义类型。

子VI相应的接线端上出现了强制转换点,表示枚举常量与自定义类型之间没有链接关系。

下列程序框图中自定义类型保证了结果的准确度,编辑自定义类型后也不会引起连线断开。

复制链接至自定义类型的对象或将上图中的常量替换为自定义类型的常量,都可实现与子VI输入端相同的数据类型。也可右键单击输入端,从快捷菜单中选择创建»常量。常量与自定义类型自动建立连接关系。

标量数值的强制转换

处理简单的数值标量时,LabVIEW的强制转换不会引起小数部分的误差。如果两个都是整数,值域较小的数据类型将被转换为值域较大的数据类型。

下列程序框图显示了不影响结果精度的强制转换。

在该例中,双精度浮点数与长整数相加。LabVIEW将长整数转换为双精度浮点数然后将两数相加。加函数上的强制转换点不会影响运算结果,因为LabVIEW将整数转换为精度更高的数据类型。任何情况下都必须尽量使用一致的数据类型。

如要将数据强制转换为特定的数据类型,右键单击控件或常量,从快捷菜单中选择表示法,选择一种数据类型即可。

下列程序框图演示了引起结果误差的强制转换。

在该例中,LabVIEW将带符号的整数强制转换为不带符号的整数。LabVIEW将一个负值转换为不支持负值的数据类型,将值转换为65531,而不是-5。为了避免生成不正确的数据,请修改程序框图上数据的表示法

提示:可在输出显示控件上启用匹配至源属性,自动将显示控件的数据类型更改为数值输入值的数据类型。右键单击显示控件从快捷菜单中选择匹配至源,即可启用该属性。

大型数据强制转换

LabVIEW将强制转换大型数组时,VI将占用可观的内存,执行速度也会变慢。下列程序框图中的VI占用了大量内存,一个大型数组经过强制转换后再传递给子VI的输入端。

LabVIEW将数组转换为扩展精度浮点数,与子VI接线端的数据类型相匹配。为了减少内存使用,右键单击控件从快捷菜单中选择表示法,选择与数据接收端一致的数据类型。在上一个程序框图中,修改子VI中的常量和控件的数据类型后,即可省去强制转换这一步骤。

下列程序框图演示了高效使用内存的一种方法。

提示:可使用记录性能和内存信息窗口,跟踪和监测VI所用的内存,该窗口可获取并显示VI的执行时间、内存占用等数据。

转换函数

使用转换函数可避免出现太多强制转换点。转换函数与强制转换点作用相似,但是转换函数占用更多的程序框图空间。如在生成数组的循环中使用转换函数,可避免占用大量缓冲内存,因为转换任务在数组生成之前已经结束。如下列程序框图所示。

改变强制转换点的颜色

可通过选项对话框的环境页,改变红色强制转换点的颜色。在颜色部分取消勾选使用默认颜色复选框,并单击强制转换点对应的颜色盒,即可选择一种不同的颜色。

蓝色强制转换点的颜色不可修改。