• 要求—I/O必须是硬件定时。所有输出值都必须在采样时钟的某个边沿发生时同步更新。
  • 解答—使用“DAQmx等待下一采样时钟“函数/VI,验证是否产生一个新的时钟边沿。

    优点

    • 当前循环输出的样本保证与下一个循环输入的样本是对齐的。
    • 当“DAQmx等待下一采样时钟”函数/VI没有在下一个采样时钟边沿之前发生,NI-DAQmx将返回一个错误。
    • I/O相关的抖动仅限于硬件时钟的抖动,为纳秒量级。

    缺点

    读取、处理和写入操作仅限于设备开始采集数据和到达下一个采样时间边沿之间的时间。

  • 应用范例-硬件定时同步更新I/O

    模拟控制循环,从特定数量的模拟输入通道读取采样,使用控制算法(例如PID)处理数据,然后将新的控制值写入模拟输出通道。



    LabVIEW范例-硬件定时同步更新I/O

    备注 该范例针对LabVIEW用户而写,但是编程思想适用于其他ADE,例如,LabWindows/CVI。

    LabVIEW范例

    • 将“DAQmx等待下一采样时钟”VI连接至某一个硬件定时任务。使用数据流连线保证“DAQmx等待下一采样时钟”VI在AO写入之后才执行。
    • 如“DAQmx等待下一采样时钟”VI不在下一个采样时钟边沿到达之前执行,将会返回错误。

    范例的程序框图



    备注
    • 在LabVIEW循环中仅使用一个“DAQmx等待下一采样时钟”VI。如在一个LabVIEW循环中有多个硬件定时的单点I/O任务,可将“DAQmx等待下一采样时钟”VI连接至循环中任何一个硬件定时单点任务。
    • 当循环溢出发生时,如要收到一个警告而非错误,请将DAQmx实时»将最近错误转换为警告属性设置为TRUE。
    • “DAQmx等待下一采样时钟”有两种模式:轮询和等待中断。如要改变这些值,请使用DAQmx实时»等待下一采样时钟等待模式属性。等待中断模式是默认模式,在该模式下低优先级的进程可在实时循环等待下一个采样时钟时执行。轮询模式允许更高的采样率,但是不允许低优先级的进程在实时循环等待下一采样时钟时执行。
    • DAQmx读取函数的模拟实例有两种模式:轮询和等待中断。如要改变这些值,请使用DAQmx读取»高级»等待模式属性。等待中断模式允许低优先级的进程在实时循环等待所有采样被转换时执行。轮询模式允许更高的采样率,但是不允许低优先级的进程在实时循环等待模拟采样转换时执行。
    • 本部分显示的应用程序中,“DAQmx等待下一采样时钟”VI和“DAQmx读取”VI均使用“等待中断”模式。如要改变这些值,请使用DAQmx读取»高级»等待模式和/或DAQmx实时»等待下一采样时钟等待模式属性。