硬件定时同步更新I/O,在实时和非实时循环之间交换数据
- 更新时间2025-12-03
- 阅读时长3分钟
优点
- 当前循环输出的样本保证与下一个循环输入的样本是对齐的。
- 当“等待下一采样时钟”函数/VI没有在下一个采样时钟边沿之前发生,NI-DAQmx将返回一个错误。
- I/O相关的抖动仅限于硬件时钟的抖动,为纳秒量级。
- 硬件定时计数器输入操作没有多路复用模拟输入的转换周期。因此,可将实时FIFO或线程安全队列放置在循环的任意位置。
缺点
读取、处理和写入操作仅限于设备开始采集数据和到达下一个采样时间边沿之间的时间。应用范例-硬件定时同步更新I/O,在实时和非实时循环之间交换数据
模拟控制循环,从特定数量的模拟输入通道读取采样,使用控制算法(例如PID)处理数据,然后将新的控制值写入模拟输出通道。应用程序使用实时FIFO根据低优先级进程给出的布尔值停止控制循环。可使用实时FIFO,通过类似的方法在运行时改变PID参数,将采集到的值输出至低优先级的进程,作为数据记录或远程监控。
时序示意图
LabVIEW范例-硬件定时同步更新I/O,在实时和非实时循环之间交换数据
备注 该范例针对LabVIEW用户而写,但是编程思想适用于其他ADE,例如,LabWindows/CVI。
- 将“等待下一采样时钟”VI连接至某一个硬件定时任务。使用数据流连线保证“等待下一采样时钟”VI在AO写入之后才执行。
- 使用数据流连线保证实时FIFO在“等待下一采样时钟”VI运行后才执行。
- 如“等待下一采样时钟”VI不在下一个采样时钟边沿到达之前执行,将会返回错误。
范例的程序框图

备注
- 在LabVIEW循环中仅使用一个“等待下一采样时钟”VI。如在一个LabVIEW循环中有多个硬件定时的I/O任务,可将“等待下一采样时钟”VI连接至循环中任何一个硬件定时单点任务。
- 当循环溢出发生时,如要收到一个警告而非错误,请将DAQmx实时»将最近错误转换为警告属性设置为TRUE。
- 不必将实时FIFO代码放置在“等待下一采样时钟”VI之后,但是在多路复用设备上处理多通道模拟输入时,建议将FIFO代码放在“等待下一采样时钟”VI之后。设备转换模拟输入通道上的采样会占用超过一半的采样周期,在转换周期中执行FIFO代码可充分利用空闲时间。
- 可通过DAQmx定时属性节点增加模拟输入转换率。这减少了转换指定数量采样所需的时间。考虑整个数据采集系统的最小稳定时间以避免信号降级和干扰。