测量同步
为了使单个事件同时启动两个任务,两个子系统必须电气同步。同步子系统有两种方法,都需要共享不同的电信号:
- 同步启动
- 同步采样
只有第一个,这两个任务将在同一时刻开始,但随着时间的推移,它们各自的时钟可能会出现偏差或漂移。当在同一个设备上时,就像你的情况一样,漂移是不可能的,因为设备上只有一个振荡器。单个设备在时间上始终是自相干的;换句话说,单个设备已经进行了同步采样。同步不同设备时,必须共享启动触发信号和采样时钟信号。
同步启动
为了电同步两个任务的启动,它们必须使用相同的启动触发信号,可以使用设备的内部信号名称从 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