当前位置:AIGC资讯 > 数据采集 > 正文

【NI-DAQmx入门】数据采集方法

1.单点、有限、软件定时

        应用:探测电路,排除故障,打开/关闭灯泡

        最基本的模拟数据采集类型是单点的、有限的、软件定时的模拟输入。这意味着一个单一的模拟值被从ADC中检索出来并被带入操作系统的存储器中。这种形式的数据采集不使用硬件定时引擎;操作系统进行驱动调用以检索数据点。

        采集完一个点后,显示数值,程序就结束了。这不是数据采集的一个非常常见的用例。然而,它被用于非常基本的任务,如探测电路以确保电压水平是正确的,以及排除DAQ设备的故障以确保其工作正常。

2.单点、连续、软件定时

        应用:记录温度,监测湿度

        单点、连续、软件定时采集对于不需要确定(周期精确)采样周期的应用来说是一种完美的方法。大多数缓慢的数据记录应用将使用这种方法,因为每10纳秒采样一次并不关键,一秒钟采样一次就足以调查一个房间的温度。

        主要的注意事项是,计时引擎是基于CPU的毫秒计时器,它受到操作系统上运行的所有其他进程和应用程序的影响。这意味着,如果启动了一个反病毒程序,它可能会使采集周期延迟几毫秒。这被称为软件时间偏移。对于需要确定性采样的控制应用的单点采集,可以考虑使用我们的NI-RIO平台的实时操作系统。

3.多点、有限、硬件定时

        应用:冲击测试,加速度监测

        多点、有限、硬件定时采集在需要一组非常快速的数据的应用中很常见,仅此而已(例如,一旦加速度计超过10米/秒,2就以1000个样本/秒的速度采集1000个样本)。这允许只采集所需的数据,并消除了记录大量不必要的数据的需要。这种采集方法几乎总是与触发器相配,但这不是必须的。

        硬件计时引擎是非常精确的周期,它将自动获取并将样本存储在设备的板载存储器中。一旦获得所需数量的样本,它们将通过数据传输进入PC内存,以进行处理和显示。

4.多点、连续、硬件定时

        应用:振动监测,电机性能

        多点、连续、硬件定时采集也是一种非常流行的数据采集方法。这种类型的测试通常要运行几分钟到几天,限制因素通常是用于存储数据的可用内存的数量。常见的应用涉及的情况是,必须有周期精确的样本,以便进行数学转换,找到数据的变化率。这项技术也使用DAQ设备的硬件计时引擎。

5.软件定时与硬件定时的比较

        软件定时或硬件定时用于控制信号生成的时间。硬件定时,例如,设备上的时钟(数字信号),控制信号生成的速率。软件定时就是由操作系统和软件来控制采样生成,而不是由测量设备来控制。硬件时钟运行远比软件快。硬件时钟比软件更为精确。

        在NI-DAQmx中,选择采样时钟定时函数/VI来确定硬件定时,或设置采样时钟的采样定时类型属性。如不进行上述设置,将采样定时类型属性设置为按需采集,表示已选择软件定时。

5.1硬件定时单点采样模式

        在硬件定时单点采样模式下,采样通过硬件定时方式连续生成和采集,不带缓冲机制。必须使用采样时钟或改动检测定时类型。其他定时类型不支持。

        如要获知循环是否在规定时间内(例如,控制应用)完成,请使用硬件定时单点采样模式。

        因为使用硬件定时单点采样模式时没有缓冲区,所以要确保读取和写入的速度能满足硬件定时的速度。如读取或写入操作延迟,将会返回错误。

        连续脉冲(硬件定时更新)是硬件定时单点的计数器输出。

5.1.1硬件定时为什么采样时钟会加倍

        对于 NI-DAQmx 的硬件定时单点模式,默认的 AI 转换时钟速率与缓冲操作的时钟速率不同。通过缓冲操作,转换时钟在整个采样周期内均匀分布,以允许扫描中通道之间的最大可能稳定时间。这种行为最大限度地减少了每个多路复用通道之间的重影。然而,它也会给单点 PID RT 应用带来潜在问题,因为它在最后一个被采样的多路复用通道与开始下一次 PID 处理扫描之间的时间太短。 

        因此,NI-DAQmx 中用于硬件定时单点操作的 AI 转换时钟的默认行为是在采样时钟周期的一半内均匀地间隔复用通道。这有效地使 AI 转换时钟速率加倍。

5.1.2支持硬件定时单点采样模式的DAQ设备

        在HWTSP模式下,可以采用无缓冲硬件定时来连续采集或生成信号。由于必须逐点连续采集/更新和处理采样,因此需要使用高速确定性总线。

只有PCI/PXI/PCIe/PXIe DAQ设备能够支持硬件定时单点采样模式(HWTSP)。  搭载cRIO-904x控制器并结合可支持的C系列模块的cRIO平台也支持HWTSP。
模拟输入和输出任务

PCI/PXI/PCIe/PXIe系列的以下设备支持AI/AO硬件定时单点采样模式:

NI 63xx设备(X系列) NI 62xx设备(M系列) NI 60xxE设备(E系列) S系列(此处列出支持的设备) NI 43xx (SC Express) NI 67xx(模拟输出,不包括NI 6703和6704) NI-DAQmx支持的C系列模块支持HWTSP模拟输入和输出任务
数字I/O和计数器任务
PCI/PXI/PCIe/PXIe系列的NI 63xx设备(以前称为X系列)支持的HWTSP数字和计数器任务详见X系列用户手册。 NI-DAQmx支持的C系列模块支持HWTSP数字和计数器任务。查看本文以确定NI-DAQmx是否支持您的C系列模块。
不支持的设备

以下设备不支持任何任务类型的硬件定时单点采样模式:

USB多功能DAQ设备(63xx、62xx) 执行AI任务的PXIe-6386和PXIe-6396 USB经济型DAQ设备(600x) 适用各种C系列模块的CompactDAQ (cDAQ)机箱(9162、913x、917x、918x、9191) 动态信号采集(DSA)设备(44xx)。无论是硬件定时还是按需定时,NI DSA硬件均不支持单点采集,详情请参见此文。

5.2软件定时采样模式

优点

可使用非硬件定时的操作进行I/O控制循环。 读取、处理和写入操作仅限于定时循环或其他异步时钟规定的软件定时周期内。

缺点

        /O采样可能受软件的误差影响。

软件定时的准确性
 LabVIEW 或 LabWindows/CVI™ 定时器函数使用操作系统定时器。这些计时器的时间分辨率取决于操作系统。下面列出了不同操作系统上的典型时序分辨率。
Operating System Typical Timing Resolution (ms) Windows 3.x 55   Windows 9x/Me/NT/2000/XP/Vista/7/8/10   1 Macintosh 68k 17 PowerMac 1 SUN Solaris 10 Linux 10 Mac OS X (PowerPC) 10

        例如,任何软件定时操作在 Windows 7 操作系统上的精度均为 +/- 1 毫秒。

        如果您使用LabVIEW/LabWindows定时器函数来控制循环,那么您可以预期循环每次迭代之间的时间间隔会有所不同,具体取决于当时计算机上正在运行的其他进程。例如,如果同时打开多个窗口,并且在数据采集期间在不同窗口之间切换,那么中央处理单元 (CPU) 上可能会产生大量开销,这可能会减慢循环速度执行数据采集。
        在这种类型的定时应用中,最好使用硬件定时而不是软件定时,以提高准确性和可靠性。例如,如果您想每 1 ms 扫描一个通道,您可以将硬件配置为以 1000 个样本/秒的速率扫描,而不是使用软件定时,这相当于每次扫描之间有 1 ms 的间隔。这种方法无需依赖操作系统的可变时序即可实现相同的结果。
        在许多操作系统上要求比 1 ms 系统定时器更高精度的应用中,硬件计时也变得很有必要。

6.有限点采集和连续采集原理

6.1有限点采集原理

将PC缓冲区想象成充满水的木桶

– 缓冲区大小 = 木桶尺寸

– 采样率控制着水流进木桶的速度

– 木桶装满水时,将木桶中的水倒入应用程序中

– PC 缓冲区实际是已分配的内存

        将您的 PC 缓冲区想象成一个装满水的水桶。 我们将其称为 PC 桶。 桶的大小与缓冲区的大小相同。 我们填充桶的速率与每秒每个通道的样本速率相同。 当水桶装满水时,我们将把它倒进我们的 LabVIEW 水桶中,这样它就可以显示在前面板上。

6.2连续采集原理

在连续采集中,确保木桶的排水速度与进水速度一样快

缓冲区大小 = 木桶尺寸

采样率控制着水流进 FIFO 缓冲区的速度

FIFO 或 RAM 缓冲区溢出时,数据将丢失

DAQmx 读取 VI 的读取采样数控制着清空 RAM 的速度

每通道可用采样是 RAM 中的水量

        对于连续采集,我们必须添加另一个参数。 我们的 PC 桶的大小仍然是 PC 缓冲区的大小,水流入桶的速率仍然是 Samples per Channel per Second 速率。 然而,现在我们打开水走,却不想水桶溢出来。 当 PC 缓冲区溢出时,您将丢失数据。 因此,我们必须把水桶倒掉。 我们排空桶的速率与 DAQmx 读取 VI 中读取的样本数相同。 尚未从桶中排出的水量称为每个通道的可用样本(或积压)。 如您所见,我们需要尽可能快地或快于装满水桶来排空水桶。 我们还可以推断,如果我们没有足够快地排干水桶,增加水桶的大小只会延长水桶不可避免的溢出时间。

 6.3如何分配缓存区

使用NI-DAQmx时,NI-DAQmx定时VI 会为您自动进行内存分配:

采集有限点时(DAQmx定时.vi中的采样模式设置为有限采样),NI-DAQmx分配的缓冲区大小等于每通道采样数的值。 连续采集时(DAQmx定时.vi中的采样模式设置为连续采样),NI-DAQmx分配的缓冲区大小如下表所示: 采样率 缓冲区大小 0-100 S / s 1 kS 100-10,000 S / s 10 kS 10,000-1,000,000 S / s 100 kS > 1,000,000 S / s 1 MS

6.4如何避免连续采集的数据丢失

通常,数据在DAQmx PC缓冲区中被覆盖,原因有两个:

连续采样的DAQmx应用程序的读取速率低于采样率,导致样本在DAQmx PC缓冲区中累积,直到发生覆盖。 DAQmx PC缓冲区太小,无法容纳任务所需的数据量,导致在获取数据之前在DAQmx PC缓冲区中进行覆盖。

连续采样的DAQmx应用程序的读取速率低于采样率,导致样本在DAQmx PC缓冲区中累积,直到发生覆盖。 

        解决方案:

            第一步应该是确保应用程序的读取速率和采样率相同。
        由于DAQmx应用程序的读取速率取决于每个DAQmx读取请求的样本数量,以及一秒钟内调用DAQmx读取函数的次数,因此可以通过控制读取速率来调整读取速率。 DAQmx Read所需的样本数,或者使用Wait(ms)等节点控制包含DAQmx Read的while循环在一秒内执行的次数:


        注意: DAQmx Read将自动等待直到所请求的样本数量可用,因此通常只需要在特定应用程序中控制其中一个参数。
        如果while循环的执行速度低于预期,则可能需要使用生产者/消费者体系结构,以便在采集循环之外移动其他进程,例如日志记录,后处理,分析和用户界面(UI)功能。

        如果不能提高while循环性能,则可能需要降低应用程序的采样率。

        不要将高亮执行与包含DAQmx Read VI的代码一起使用,因为它会降低执行速度并导致缓冲区溢出。

  DAQmx PC缓冲区太小,无法容纳任务所需的数据量,导致在获取数据之前在DAQmx PC缓冲区中进行覆盖。

        手动增加主机端数据缓冲区的大小即可解决此错误。但是,请记住,如果发生错误是因为没有足够快地从DAQmx缓冲区中读取数据(参见原因1),增加缓冲区大小只会延迟错误的发生 - 它不会完全消除它。

6.5DAQ程序的读取速率

DAQmx应用程序的读取速率取决于两个因素 - 每次采集的样本数和每秒读取数:


即使您将读取速率和采样率设置为相同,您的程序也可能无法以您期望的速度执行。当while循环中需要处理很多任务时会发生这种情况,导致每次迭代花费的时间比预期的要长。这将导致DAQmx读取不像预期的那样进行,并且样本堆积在缓冲区中。您可以使用循环基准测试技术(如下所示)来验证while循环实际上是否以您期望的速度执行:

更新时间 2024-07-23