NI DAQmx - Как настроить программный триггер?
Я не могу понять, как включить программный триггер с помощью National Instruments DAQ mx. В документации смутно упоминаются свойства или то, что она может использоваться только с устройством переключения, но она очень неполная. Конечно, одна страница с примерами на сайте NI совершенно пуста. Я не имею или не хочу LabView.
Я просто пытаюсь настроить его так, чтобы он получал и генерировал 1000 образцов одновременно. Существует много документации по аналоговому или цифровому аппаратному триггеру, но я просто хочу иметь возможность начать генерацию / приобретение по одной и той же инструкции программного обеспечения.
Если я выдаю две последовательные инструкции (одну для генерации сэмплов, другую для получения сэмплов), это, вероятно, достаточно хорошо, но я бы очень хотел сделать это правильно, так как не знаю, как происходит синхронизация между запуском двух задач.
Итак, как мне сгенерировать программный триггер для запуска 2 задач одновременно?
Кстати, я использую PyDAQmx с устройством USB6363 на Windows 7 x64.
Спасибо
1 ответ
Синхронизация измерений
Чтобы одно событие запускало две задачи одновременно, две подсистемы должны быть электрически синхронизированы. Существует два способа синхронизации подсистем, и оба требуют совместного использования другого электрического сигнала:
- Синхронизированный запуск
- Синхронизированная выборка
Только с первой, две задачи начнутся в один и тот же момент, но их отдельные часы могут искажаться или смещаться с течением времени. На одном устройстве, как в вашей ситуации, дрейф невозможен, поскольку на устройстве имеется только один генератор. Одно устройство всегда самосогласовано во времени; другими словами, одно устройство уже имеет синхронизированную выборку. При синхронизации разных устройств должны использоваться и триггер запуска, и тактовые сигналы семплов.
Синхронизированный запуск
Для электрической синхронизации запуска двух задач они должны использовать один и тот же сигнал запуска запуска, который может быть запрограммирован из 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