上次我们提到cRIO是由RT控制器、FPGA、模块三部分构成的,今天我们要研究的是cRIO的RT控制器的定时精度。
在LabVIEW的RT例程里面专门有一个benchmark程序,可以用来测试代码的执行时间。
今天我们要测试的是RT的wait函数:
Wait函数有三种定时单位可以选择:
mSec毫秒:这个和一般非Rt的程序里面等待函数用法是一样的
uSec微秒:顾名思义,以微秒为单位定时
Ticks时钟:这个比较诡异,根据下面的实验是以纳秒为单位定时。
下面就是实验的截图,点击可以看大图,图中横轴代表定时的时间,纵轴代表测得的延时时间:
Ticks方式: | |||
100 | 1000 | 2000 | 2500 |
uSec方式: | |||
1us | 2us | 3us | |
可以得出的几个结论:
1 Ticks的计时单位是纳秒
2 cRIO的定时间隔在20us下是不准确的,在20us以上基本上可以认为是线性的。
Ticks方式: | |||
100 | 1000 | 2000 | 2500 |
21000ns之后可以认为是线性的 | 22000ns | 22000ns | 20000ns |
uSec方式: | |||
1us | 2us | 3us | |
22us | 16us | 18us |
3 这一点是个人的猜想,仅供参考:20us以上的定时也不是完全线形的,有可能是因为cRIO的RT时钟间隔造成的,