NI DAQmx -- 如何配置软件触发?
NI DAQmx -- How to configure software trigger?
我一辈子都想不出如何使用 National Instruments DAQ mx 启用软件触发器。文档含糊地提到了属性,或者它只能与开关设备一起使用,但它非常不完整。当然,NI 网站上的一个示例页面是完全空白的。我没有或不需要 LabView。
我只是想将其设置为同时获取和生成 1000 个样本。有很多关于模拟或数字硬件触发器的文档,但我只想能够在相同的软件指令上启动 generation/acquisition。
如果我发出两条顺序指令(一条用于生成样本,一条用于获取样本)可能就足够了,但我真的很想正确地执行它,因为我不知道开始两条之间的时间偏差任务。
那么如何生成软件触发器来同时启动 2 个任务?
顺便说一句,我在 Windows 7 x64 上使用 PyDAQmx 和 USB6363 设备。
谢谢
测量同步
为了让单个事件同时启动两个任务,两个子系统必须电气同步。子系统同步有两种方式,都需要共享不同的电信号:
- 同步开始
- 同步采样
只有第一个,这两个任务将同时开始,但随着时间的推移,它们各自的时钟可能会出现偏差或漂移。在同一台设备上,就像您的情况一样,漂移是 不可能的,因为设备上只有一个振荡器。单个设备在时间上总是自相干的;换句话说,单个设备已经具有同步采样。当同步不同的设备时, 启动触发器和采样时钟信号必须共享。
同步开始
为了使两个任务的启动电气同步,它们必须使用相同的启动触发信号,可以使用设备的内部信号名称从 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 Help :: Terminal Names
http://zone.ni.com/reference/en-XX/help/370466V-01/TOC22.htm
我一辈子都想不出如何使用 National Instruments DAQ mx 启用软件触发器。文档含糊地提到了属性,或者它只能与开关设备一起使用,但它非常不完整。当然,NI 网站上的一个示例页面是完全空白的。我没有或不需要 LabView。
我只是想将其设置为同时获取和生成 1000 个样本。有很多关于模拟或数字硬件触发器的文档,但我只想能够在相同的软件指令上启动 generation/acquisition。
如果我发出两条顺序指令(一条用于生成样本,一条用于获取样本)可能就足够了,但我真的很想正确地执行它,因为我不知道开始两条之间的时间偏差任务。
那么如何生成软件触发器来同时启动 2 个任务?
顺便说一句,我在 Windows 7 x64 上使用 PyDAQmx 和 USB6363 设备。
谢谢
测量同步
为了让单个事件同时启动两个任务,两个子系统必须电气同步。子系统同步有两种方式,都需要共享不同的电信号:
- 同步开始
- 同步采样
只有第一个,这两个任务将同时开始,但随着时间的推移,它们各自的时钟可能会出现偏差或漂移。在同一台设备上,就像您的情况一样,漂移是 不可能的,因为设备上只有一个振荡器。单个设备在时间上总是自相干的;换句话说,单个设备已经具有同步采样。当同步不同的设备时, 启动触发器和采样时钟信号必须共享。
同步开始
为了使两个任务的启动电气同步,它们必须使用相同的启动触发信号,可以使用设备的内部信号名称从 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 Help :: Terminal Names
http://zone.ni.com/reference/en-XX/help/370466V-01/TOC22.htm