NI DAQmx - Как настроить программный триггер?

Я не могу понять, как включить программный триггер с помощью National Instruments DAQ mx. В документации смутно упоминаются свойства или то, что она может использоваться только с устройством переключения, но она очень неполная. Конечно, одна страница с примерами на сайте NI совершенно пуста. Я не имею или не хочу LabView.

Я просто пытаюсь настроить его так, чтобы он получал и генерировал 1000 образцов одновременно. Существует много документации по аналоговому или цифровому аппаратному триггеру, но я просто хочу иметь возможность начать генерацию / приобретение по одной и той же инструкции программного обеспечения.

Если я выдаю две последовательные инструкции (одну для генерации сэмплов, другую для получения сэмплов), это, вероятно, достаточно хорошо, но я бы очень хотел сделать это правильно, так как не знаю, как происходит синхронизация между запуском двух задач.

Итак, как мне сгенерировать программный триггер для запуска 2 задач одновременно?

Кстати, я использую PyDAQmx с устройством USB6363 на Windows 7 x64.

Спасибо

1 ответ

Решение

Синхронизация измерений

Чтобы одно событие запускало две задачи одновременно, две подсистемы должны быть электрически синхронизированы. Существует два способа синхронизации подсистем, и оба требуют совместного использования другого электрического сигнала:

  1. Синхронизированный запуск
  2. Синхронизированная выборка

Только с первой, две задачи начнутся в один и тот же момент, но их отдельные часы могут искажаться или смещаться с течением времени. На одном устройстве, как в вашей ситуации, дрейф невозможен, поскольку на устройстве имеется только один генератор. Одно устройство всегда самосогласовано во времени; другими словами, одно устройство уже имеет синхронизированную выборку. При синхронизации разных устройств должны использоваться и триггер запуска, и тактовые сигналы семплов.

Синхронизированный запуск

Для электрической синхронизации запуска двух задач они должны использовать один и тот же сигнал запуска запуска, который может быть запрограммирован из API DAQmx с использованием внутренних имен сигналов устройства [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

Другие вопросы по тегам