cRIO摧残记(中)——RealTime篇

上次我们提到cRIO是由RT控制器、FPGA、模块三部分构成的,今天我们要研究的是cRIO的RT控制器的定时精度。

在LabVIEW的RT例程里面专门有一个benchmark程序,可以用来测试代码的执行时间。

image

今天我们要测试的是RT的wait函数:

image

Wait函数有三种定时单位可以选择:

image

mSec毫秒:这个和一般非Rt的程序里面等待函数用法是一样的

uSec微秒:顾名思义,以微秒为单位定时

Ticks时钟:这个比较诡异,根据下面的实验是以纳秒为单位定时。

下面就是实验的截图,点击可以看大图,图中横轴代表定时的时间,纵轴代表测得的延时时间:

Ticks方式:      
100 1000 2000 2500
tick 100ns tick 1000ns tick 2000ns tick 2500ns
uSec方式:      
  1us 2us 3us
  uSec 1us  uSec 2us uSec 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时钟间隔造成的,