2

我一辈子都想不通如何使用 National Instruments DAQ mx 启用软件触发。文档模糊地提到了属性,或者它只能与开关设备一起使用,但它非常不完整。当然,NI 网站上的一个示例页面是完全空白的。我没有也不想要 LabView。

我只是想对其进行设置,使其同时获取并生成 1000 个样本。有很多关于模拟或数字硬件触发的文档,但我只想能够在相同的软件指令上开始生成/采集。

如果我发出两条顺序指令(一条用于生成样本,一条用于获取样本)可能就足够了,但我真的很想正确地执行它,因为我不知道启动两个任务之间的时序偏差。

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

顺便说一句,我在 Windows 7 x64 上使用带有 USB6363 设备的 PyDAQmx。

谢谢

4

1 回答 1

2

测量同步

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

  1. 同步启动
  2. 同步采样

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

同步启动

为了电同步两个任务的启动,它们必须使用相同的启动触发信号,可以使用设备的内部信号名称从 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

于 2015-05-18T16:53:28.103 回答