为什么NI-DAQmx返回的波形时间信息是不正确的呢?



主要软件:
主要软件版本: 7.3
主要软件修正版本: N/A
次要软件: N/A

问题: 我正准备从NI-DAQmx设备中读取数据,但是得到的t0和dt值似乎是不正确的。为什么NI-DAQmx返回的波形数据是不正确的呢?

解答: 当从NI-DAQmx驱动中读取数据时,波形数据包括了第一个采样点的采样时刻"t0"和两个采样点之间的流逝时间"dt"。然而,这些驱动返回的值会随着从板卡上获取数据的时间和使用的时钟源的变化而变化。

当第一次读取数据时,NI-DAQmx会计算任务的开始时刻。NI-DAQmx通过读取当前系统的时间,然后减去(采样点数)*dt来获得起始时间t0, 这样的处理在大多数情况下是合理的但并不是完美的。比如,关于t0的计算,我们是假设当读取被调用的时候AI采集仍旧在运行。 比如,如果某人开始了一次时间长度为10秒的有限采集,但是直到一小时以后才调用了Read VI,那么他的timestamp将会有1小时的偏移.

注意:NI-DAQmx在采集的过程中只获取一次系统的时间(不论有限或者连续采集)。如果读被调用了很多次,对于之后的读取过程t0应该是这样计算的:

t0new = t0(第一次调用) + (采样率)*(样点偏移)

还有一点,当使用"Sample Clock"时,NI-DAQmx是基于始终的速率计算"dt"的。因为NI-DAQmx在"Handshake", "Implicit", "On Demand", 或者 "Change Detection"这几种时序被确定的时候并不知道系统的采样率,它会把零作为dt的返回值.dt=0的波形经常不能够用一些波形分析函数来分析。然而,如果您预计得到采样律的大小,那么您可以在您的应用程序中更新dt的值。

注意:波形数据只支持采样点之间的对称时间信息.如果您的时间不是对称的,(比如每一个采样点都有一个timestamp),那么波形数据的形式不会包括时间信息.不过,您能够使用应用程序开发环境中的分析库来通过一个常值的"dt"来重新组织这些数据,重新组织后的数据能够能够使用一些基本的波形分析库中的函数来分析。

相关链接:

附件:





报告日期: 07/13/2006
最近更新: 06/07/2007
文档编号: 328GJ77U