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

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

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

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

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

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

Спасибо


person Sonicsmooth    schedule 15.05.2015    source источник


Ответы (1)


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

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

  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

person Joe Friedrichsen    schedule 18.05.2015
comment
Спасибо, мне удалось найти файл SynchAI-AO.c в установленной документации. Это имеет смысл; Мне не хватало концепции, что вы можете подключить внутренние электрические сигналы для запуска вещей. Сейчас перехожу на Python :) - person Sonicsmooth; 18.05.2015
comment
Где в этой последовательности следует запускать задачи? - person Eric; 29.07.2016
comment
Спасибо @Эрик. Я обновил свой ответ, чтобы включить более подробную информацию. Вкратце: запустите задачу AO (slave) перед запуском задачи AI (master). - person Joe Friedrichsen; 29.07.2016
comment
Я вижу, вы избавились от SendSoftwareTrigger, который, как я понял, просто вылетит. - person Eric; 30.07.2016
comment
В документации NI для DAQmx от labview предлагается также вызвать TaskControl(handle, Val_Task_Reserve) перед запуском либо задача. Вы знаете, почему он предлагает это? Я считаю, что это работает как с ним, так и без него - person Eric; 30.07.2016
comment
Ссылка описывает, как синхронизировать задачи на шасси cDAQ, которое, в отличие от устройств серии X, имеет более одного механизма синхронизации для запуска сбора данных. Чтобы они могли совместно использовать одни и те же электрические сигналы для синхронизации, важно назначить главной задаче определенный механизм синхронизации через Reserve, чтобы вы могли указать подчиненной задаче, какие сигналы использовать. В абзаце под рис. 2 приведено более подробное объяснение. - person Joe Friedrichsen; 01.08.2016