NI DAQmx - 如何配置软件触发器?

时间:2015-05-15 20:26:16

标签: nidaqmx daq-mx

我不能为我的生活弄清楚如何使用National Instruments DAQ mx启用软件触发器。文档含糊地提到属性,或者它只能用于交换设备,但它非常不完整。当然,NI网站上的一个示例页面是完全空白的。我没有或想要LabView。

我只是想设置它以便它同时获取并生成1000个样本。有很多关于模拟或数字硬件触发的文档,但我只是希望能够在同一软件指令上开始生成/获取。

如果我发出两个顺序指令(一个用于生成样本,一个用于获取样本),它可能已经足够好了,但我真的很想做到这一点,因为我不知道启动两个任务之间的时序偏差。

那么如何生成软件触发器以同时启动2个任务?

BTW我在Windows 7 x64上使用PyDAQmx和USB6363设备。

由于

1 个答案:

答案 0 :(得分:2)

测量同步

为了使单个事件同时启动两个任务,两个子系统必须电气同步。有两种方法可以同步子系统,两者都需要共享不同的电信号:

  1. 同步开始
  2. 同步采样
  3. 只有第一个,两个任务将在同一时刻开始,但随着时间的推移,它们各自的时钟可能会偏斜或漂移。当在同一设备上时,就像你的情况一样,漂移不可能,因为设备上只有一个振荡器。单个设备在时间上总是自相关的;换句话说,单个设备已经具有同步采样。在同步不同设备时,两者必须共享启动触发和采样时钟信号。

    同步开始

    为了使两个任务的启动电气同步,它们必须使用相同的启动触发信号,可以使用设备的内部信号名称从DAQmx API进行编程 [1]

    在您的示例中,您希望在软件事件上启动模拟输入和模拟输出任务。 AI和AO子系统必须首先进行电气耦合,然后软件事件才能触发两者的启动。

    我意识到你正在使用PyDAQmx,但这里是C中的伪代码(官方API):

    TaskHandle analogInputHandle;
    TaskHandle analogOutputHandle;
    
    // Other configuration...
    
    // Connect AO start to AI start
    DAQmxCfgDigEdgeStartTrig(analogOutputHandle, "ai/StartTrigger", DAQmx_Val_Rising);
    
    // Arm the AO task
    // It won't start until the start trigger signal arrives from the AI task
    DAQmxStartTask(analogOutputHandle);
    
    // Start the AI task
    // This generates the AI start trigger signal and triggers the AO task
    DAQmxStartTask(analogInputHandle);    
    

    通过这种方式,AI和AO子系统已配置为使用ai/StartTrigger信号开始执行任务,当程序启动AI任务时,设备会按需生成脉冲并进行两次测量一起开始。

      

    [1] NI-DAQmx帮助::终端名称   
    http://zone.ni.com/reference/en-XX/help/370466V-01/TOC22.htm