【NI-DAQmx入门】数据采集波形时间戳的准确性

摘自NI KB

时间戳 (t0)

NI DAQ卡不与计算机的系统时钟同步,并且不输出时间戳数据。采集到的波形中的时间戳基于系统时钟;然而,它是一个软件时间值,因为它基于调用DAQmx Read VI且样本可用后操作系统从 DAQ 卡缓冲区检索数据值 (Tos_retrieval) 的时间。时间戳是一个计算值,考虑了时间间隔 (dt) 和从缓冲区采集的样本数量 (#s),以便估算采集开始的时间:

 
当第一次从缓冲区读取数据时,系统时钟仅被读取一次。这是因为所采集的数据是硬件定时的。采集中数据值的所有时间戳相对于第一个时间戳都是正确的。对于连续任务,第一次从缓冲区读取之后的时间戳 (t0next) 是根据第一个时间戳以类似的方式计算的,但还包括读取的缓冲区数量 (#b):
 
t0 计算假设调用 Read VI 时采集仍在运行。为了获得最佳精度,需要在 DAQ 卡仍在采集第一组样本时调用DAQmx Read VI 。如果存在延迟并且在DAQ卡完成采集后调用DAQmx Read VI ,则时间戳将不准确。防止这种情况的一种方法是使用触发器来启动采集。

如上所述,时间戳数据的准确性取决于操作系统。Windows 操作系统可能具有接近毫秒的分辨率,而实时操作系统可能具有接近微秒的分辨率。但在这些情况下,时间戳仍然是软件定时的,并且可能比它们的潜在最高值差得多。如果您的操作系统没有返回对于您的应用程序来说足够准确的时间戳,那么您可以考虑我们的高速数字化仪,它使用硬件时间戳。如需了解更多信息,请参阅 NI 高速数字化仪帮助手册。


时间间隔 (dt)

时间间隔是波形的每个样本之间的时间变化。该值是硬件定时的,并且与所使用的 DAQ 卡的时钟一样准确。要确定卡的准确性,请参阅该特定卡的规格 。

由于 DAQmx 不知道指定“握手”、“隐式”、“按需”或“更改检测”时序时的速率,因此 DAQmx 将 dt 返回为 0。dt 为0的波形通常 无法用于波形分析功能。但是,如果您知道定时源的预期速率,则可以更新应用程序中的dt 值。

波形数据类型仅支持样本之间的相等时序。如果您的计时不相等(例如每个样本都有自己的时间戳),则波形数据类型不能包含计时信息。但是,您可以使用应用程序开发环境的分析库使用常量dt重新采样数据。然后,重新采样的数据可以与基于波形的分析库一起使用。


例子
有限

如果您正在执行持续时间为 10 秒的有限采集,并且代码在DAQmx Start Task之后 和DAQmx Read之前等待用户输入值,则数据将在调用DAQmx Start Task时开始采集并位于缓冲区中,直到调用DAQmx Read VI

如果用户在输入值之前等待两分钟,则时间戳将与实际采集时间相差两分钟。如果用户在调用DAQmx Start Task后一秒输入值,则时间戳将与操作系统允许的一样准确。

防止这种情况的方法是删除等待用户输入的代码或使用在调用DAQmx Read后启动的触发采集。

连续的
如果您正在进行连续采集并且正在查看波形的时间戳数据,并且没有一个时间戳按预期均匀分布,则任务的编码存在问题。如果每个通道输入的样本数连接不正确,可能会导致这种情况。

你可能感兴趣的:(数据采集【Data,Acquisition】,labview)