创建定时I/O应用

应用通常需要I/O在指定的频率上执行。例如,用于控制循环的算法通常需要输入信号在已知速率下被采样。在While循环中使用循环定时器Express VI控制I/O的执行速率,如下列程序框图所示。

如要使用“循环定时器”Express VI控制I/O的执行速率,可在While循环内部放置一个“顺序”结构。在“顺序”结构的第一个帧内放置“循环定时器”Express VI。在弹出的配置循环定时器对话框中配置计数器单位内部寄存器的大小。在”顺序“结构的后续帧内放置I/O的LabVIEW代码。

提示 选择适用于应用程序的最小的内部寄存器的大小,能够节省FPGA终端上的空间。

“循环定时器”Express VI的初次调用不会产生任何等待或延时,因为该调用已为后续的调用创建了引用时间标识。初次调用“循环定时器”Express VI后,必须等待计数参数满足指定的时间间隔要求后才会返回后续调用。如计数参数指定的时间小于FPGA终端所需在While循环中执行代码的时间,“循环定时器”Express VI不会影响While循环的定时。

在事件间创建延时

使用“等待”Express VI创建FPGA VI的事件间延时。例如,需要在触发器和后续输出间创建一个延时。用于触发器的LabVIEW代码可放置在顺序结构的第一个帧内。然后在后续的帧内放置“等待”Express VI。最后,在顺序结构的最后一个帧内放置用于输出的LabVIEW代码。或者使用多个“等待”VI在一个顺序结构内创建一组延时,如下列程序框图所示。

测量事件间隔时间

使用“时间计数”Express VI测量诸如数字信号的边沿上的事件的间隔时间。需要判定周期、脉冲宽度、输入信号的频率或要判定一组LabVIEW代码的执行时间时,可使用时间计数Express VI。

例如,如要判定函数执行时间或一组LabVIEW代码的执行时间,可使用带有两个“时间计数”Express VI的“顺序”结构,如下列程序框图所示。

在顺序结构的第一个帧内放置时间计数Express VI。然后在顺序结构的第二个帧内放置要测量的LabVIEW代码。最后,在顺序结构的最后一个帧内放置另一个“时间计数”Express VI。然后可通过计算两个“时间计数”Express VI的结果差值得出代码的执行时间。从计算结果中减去1,以补偿“时间计数”Express VI的执行时间。

时间计数Express VI带有一个内部计数器来记录时间。在同一程序框图内放置的每个时间计数Express VI的内部计数器均使用同一开始时间。因此,使用同一计数器单位值和同一内部计数器的大小选项的每个时间计数Express VI记录同一时间。例如,如同时调用两个使用同一配置时间计数选项的“时间计数”Express VI,它们将返回相同的时间计数的值。

“时间计数”Express VI返回以计数器单位为单位的整数值。时间计数的值不能表示分数时间周期,此类时间可能出现在计数器单位配置为uSecmSec的情况下。配置计数器单位uSecmSec可能导致定时测量具有±1 计数器单位值的精度误差。例如,在上述程序框图中配置时间计数Express VI测量以毫秒为单位的时间。如第一个“时间计数”Express VI的执行时间为47.9毫秒,时间计数返回的值为47。如第二个“时间计数”Express VI的执行时间为53.2毫秒,时间计数返回的值为53。尽管此范例的时间延时为5.3毫秒,但返回值之间的差值为6毫秒。