Страница 1 из 1

Запуск и остановка по триггеру

Добавлено: 09 сен 2013, 09:55
Darkagent
Доброго времени суток.

Подскажите, пожалуйста, как сделать запуск и остановку по триггеру? Есть АЦП NI usb-6363. Есть некие датчики, регистрирующие сигнал в течении каждого оборота двигателя. С них мы записываем сигнал. На валу двигателя есть датчик положения, с которого приходит TTL синхросигнал. Необходимо по первому синхросигналу начать запись данных с датчиков и по второму (когда сделает один оборот) закончить. Очень жесткая привязка по времени. Необходимо получить данные ровно от 1 оборота (ну или чем ближе это будет к правде тем лучше). Для понимания - регистрация сигнала с частотой 1ггц, частота вращения вала - 10-50кгц.

Я пытался сделать через триггеры: запуск задачи - настройка часов - start digital edge trigger - reference digital edge trigger - цикл считывания данных, но застрял т.к. данные либо теряются в кольцевом буфере, либо триггер вообще не срабатывает.

Re: Запуск и остановка по триггеру

Добавлено: 09 сен 2013, 11:02
Borjomy_1
"Для понимания - регистрация сигнала с частотой 1ггц,"
NI USB-6363
NI X Series multifunction DAQ devices for USB provide a new level of performance with NI-STC3 timing and synchronization technology, NI Signal Streaming for high ... Analog Inputs: 32 SE/16 DIFF · 2 MS/s · 16 bits
Analog Outputs: 4 · 2.86 MS/s · 16 bits
Digital I/O: 48 DIO · 1 MHz
Counter/Timers: 4 · 32 bits · 100 MHz
Measurement Type: Digital, Frequency, Quadrature encoder, Voltage

Если предположить, что сигнал с частотой не 1 ГГц, а 1 МГц, то получается в лучшем случае 100 отсчетов на оборот. А такой объем в кольцевом буфере никак не может теряться.

Re: Запуск и остановка по триггеру

Добавлено: 09 сен 2013, 12:50
Andrew Lunev
Запуск по триггеру делается элементарно, а вот про останов по триггеру первый раз слышу. Если получится реализовать такое на стандартном DAQmx, то расскажите как.
Однако, не понятно, зачем это надо.
Если хотите снять показания и потом их обработать, то совершенно не обязательно останавливать задачу в определенное время, лишние данные можно потом отрезать.
Если же хотите перезапускать задачу на каждом обороте, то это не получится делать даже с частотой 100 Гц.

Я бы вашу задачу делал на cRIO, там можно и запуск и останов сделать по сигналу с датчика оборотов.

Единственное, что можно сделать с вашей платой, это настроить сбор конечного числа точек с перезапуском старта по триггеру. То есть данные будут начинать собираться по срабатыванию триггера, но останавливаться через определенное время (кол-во точек). При следующем активном фронте с триггера данные снова начнут собираться. Это позволит сократить время на перезапуск задачи.

Re: Запуск и остановка по триггеру

Добавлено: 09 сен 2013, 13:24
Darkagent
Да, действительно, я описался. Так и получается, 100 точек на оборот

Вот что тут http://www.ni.com/white-paper/4329/en пишут:
Pretriggered Acquisition on a Digital Reference Trigger
Once the trigger signal is received, a specified number of points before and after the trigger are returned to the calling application (e.g., LabVIEW, C++, etc.) by the driver.

Таким образом он выдает такую длину сигнала, которая указа в samples per channel: pretriggered samples per channel до триггера и разницу после триггера. Т.е. это не один оборот, а больше.

Программа уже есть, отлажена и работает, но для старой ацп )) Теперь необходимо в старую программу подставить новый блок сбора данных. Можно даже по образу и подобию повторить старый, но я застрял.

Вот кусок той проги.
https://www.dropbox.com/s/9fghp2j81i9if ... %D0%B9.jpg

Триггер А запускает, триггер Б останавливает.

В данной задаче не важна скорость перезапуска. Главное собрать точно с 1 оборота.

Re: Запуск и остановка по триггеру

Добавлено: 09 сен 2013, 13:55
Andrew Lunev
Пример вашей программы реализован на TraditionalDAQ, не знаю, на сколько его поддерживает новая плата, но он уже лет 10, как считается устаревшим. Возможно в нем и можно задать триггер на останов, в этом я не разбирался, давно это было...
Вам же скорее всего придется реализовывать программу с DAQmx, а в нем про триггер останова я не слышал. Скорее всего реализовать полный аналог не получится.
Darkagent писал(а):В данной задаче не важна скорость перезапуска. Главное собрать точно с 1 оборота.
Так заводите сигнал с триггера на канал AI, собирайте данные с запасом, а потом в файле удаляйте лишние данные. Это конечно не автоматизированный процесс получается, но позволяет собрать данные точно с одного оборота. А если время обработки не критично, то процесс отбрасывания лишних данных можно и автоматизировать программно.

Re: Запуск и остановка по триггеру

Добавлено: 09 сен 2013, 14:31
Darkagent
Проблема решена, спасибо Andrew Lunev. Сигнал с PFI0 продублировал на аналоговый вход. Запускаю по триггеру, собираю чуть больше данных, чем нужно, обрезаю функцией Trigger and gate по продублированному синхросигналу. Благо на скорости АЦП доп. канал не сказывается.

Re: Запуск и остановка по триггеру

Добавлено: 25 фев 2016, 11:49
Elena_frz
Darkagent писал(а):Проблема решена, спасибо Andrew Lunev. Сигнал с PFI0 продублировал на аналоговый вход. Запускаю по триггеру, собираю чуть больше данных, чем нужно, обрезаю функцией Trigger and gate по продублированному синхросигналу. Благо на скорости АЦП доп. канал не сказывается.
Доброе время суток :bye: пишу похожую программу, но пока ничего путного не выходить. не могли бы Вы мне показать ход работы на своем примере, может я что-то упускаю(

Re: Запуск и остановка по триггеру

Добавлено: 25 фев 2016, 20:29
Blackman
How Do I Use a Digital Trigger in LabVIEW to Start and Stop Acquiring Data?
http://digital.ni.com/public.nsf/allkb/ ... FE0032CCEB
Здесь есть готовый пример.

Tips and Techniques in Data Acquisition Triggering - NI-DAQmx
http://www.ni.com/tutorial/4329/en/
C. Pretriggered Acquisition with Start and Reference Triggers
You can also set up an acquisition that uses both a start and reference (stop) trigger. In this case, a digital or analog trigger starts the acquisition instead of a software function. Once the acquisition starts, a circular buffering scheme (similar to the previous case) is implemented until the reference trigger signal is received. The data returned consists of the specified number of pretrigger and posttrigger samples relative to the reference trigger signal (Figure 9).

Re: Запуск и остановка по триггеру

Добавлено: 03 мар 2016, 14:40
Elena_frz
большое спасибо за помощь!

Re: Запуск и остановка по триггеру

Добавлено: 03 мар 2016, 14:48
Elena_frz
Я видела эти статьи про триггер и только запуталась. Возможно я неправильно решаю задачу. По задаче, у меня есть 2 цифровых линии, на этих линиях необходимо поймать сигналы и измерить длительность этих сигналов. Данную задачу решила решать с помощью счетчика и триггера. Если у вас есть какие-то идеи или Вы знаете решение этой задачи, прошу поделиться со мной! я в тупике!

Re: Запуск и остановка по триггеру

Добавлено: 03 мар 2016, 15:53
Jakob Brontfeyn
Elena_frz писал(а):Я видела эти статьи про триггер и только запуталась. Возможно я неправильно решаю задачу. По задаче, у меня есть 2 цифровых линии, на этих линиях необходимо поймать сигналы и измерить длительность этих сигналов. Данную задачу решила решать с помощью счетчика и триггера. Если у вас есть какие-то идеи или Вы знаете решение этой задачи, прошу поделиться со мной! я в тупике!
smotri demo s knopkoy