数据采集中时间相关的问题主要是二方面,一个是每一个数据点的时间,在NI的数据采集中是通过T0和dt来确定的,T0就是开始数据采集的初始时间,是任务开始时数据采集卡读取的计算机时间,dt二个数据点之间间隔的时间,是采样率的倒数,比如1K采样率,dt就是1/1000=0.001秒=1毫秒。在使用DAQmx Read.vi的时候要选择波形输出而不是选择DBL输出,波形输出就带有这些信息,而DBL就只是有数据而没有时间信息了。
问题: 我设置采集的采样速率为500,001 Hz。我想知道我的设备所用的实际采样率。如果我在labview中用NI-DAQmx编成,如何确定实际采样率?
解答: 您可以用DAQmx定时属性节点来获得此信息。SamplClk.timebase.Rate属性提供了产生实际采样率的时基频率(timebase frequency)。大多数DAQ设备有两个时基频率:20 MHz和100 kHz。SamplClk.TimebaseDiv属性提供分频系数,用于从时基频率分频下来到您所希望的实际采样时钟频率。所以当您设置您的采样速率为500,001 Hz,设备利用20 MHz时基和分频系数39来获得实际的采样速率20 MHz/39 = 512,820.51 Hz 分频系数永远是一个整数,该整数的大小取决于您的数据采集板卡的型号。举个例子:假设分频系数是一个16位的整数,这样20 MHz时基允许您使用的所有频率均大于305.18 Hz,因为一个16位整数对应的最大分频系数为65,535。100 kHz时基用于低于该频率的采样速率。进而,如果您指定的频率不能准确得到,驱动将采用最接近于您指定的采样率且高于您所指定的采样率
对E系列:
AI采样时钟分频系数 = 24位
AI转换时钟分频系数= 16位
AO采样时钟分频系数 = 24位
对M系列:
AI 采样时钟分频系数 = 32位
AI转换时钟分频系数 = 32位
AO采样时钟分频系数 = 32位
问题:
我设置采集的采样速率为500,001 Hz。如果我在LabVIEW中用NI-DAQmx编成,如何确定实际采样率? 解答:
您可以用DAQmx定时属性节点来获得此信息。SamplClk.Timebase.Rate属性提供了产生实际采样率的时基频率(timebase frequency)。大多数DAQ设备有两个时基频率:20 MHz和100 kHz。SamplClk.TimebaseDiv属性提供分频系数,用于从时基频率分频下来到您所希望的实际采样时钟频率。所以当您设置您的采样速率为500,001 Hz,设备利用20 MHz时基和分频系数39来获得实际的采样速率20 MHz/39 = 512,820.51 Hz 分频系数永远是一个整数,该整数的大小取决于您的数据采集板卡的型号。举个例子:假设分频系数是一个16位的整数,这样20 MHz时基允许您使用的所有频率均大于305.18 Hz,因为一个16位整数对应的最大分频系数为65,535。100 kHz时基用于低于该频率的采样速率。进而,如果您指定的频率不能准确得到,驱动将采用最接近于您指定的采样率且高于您所指定的采样率
另外,如果确实需要指定的采样率,也可以用外部的时钟源作为采样脉冲来进行数据采集。
其实更深入一点的话,在连续采集的应用程序中,数据采集时钟源的准确性问题就会显示出来,假设时钟源的误差是50ppm(百万分之五十),即二万分之一,而一天有86400秒,如果连续运行一天的话数据采集的时钟误差最多就会有4秒多,所以到了24小时后就会出现波形图上的时间与计算机时间差了大概4秒左右的现象,时间越长这个误差就可能越大,如果这个误差不能接受的话就需要想其它办法解决。其中一个方法是换一个更高精度的时钟源,但长时间运行的话始终还是会有误差的,之前用过的方法是到了0点的时候关闭任务再重新开启,让数据采集卡与计算机重新对时。
|