Синхронизация AO
-
- assistant
- Сообщения: 147
- Зарегистрирован: 15 ноя 2011, 22:39
- Версия LabVIEW: 2018, 2020
- Откуда: СПб
- Контактная информация:
Синхронизация AO
Имеются платы pxie-6368 и pxie-6738, хотелось бы синхронизировать AO на этих картах в режиме continuous output и что бы значение частоты и амплитуды можно было менять не останавливая программу. Стартуют синхронно, но потом "расползаются" сигналы и чем выше fd тем больше глюков вылезает. Подскажите как организовать правильно синхронизацию.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Синхронизация AO
Необходимо, чтобы платы работали от одного тактового генератора. Т.е либо физически соединять PFI входы-выходы, либо программно конфигурировать.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Синхронизация AO
А они и работают от одного тактового генератора. Просто задержки в шасси и в схемах на платах, особенно на высоком sample rate, еще никто не отменил)Borjomy_1 писал(а):Необходимо, чтобы платы работали от одного тактового генератора...
Вопрос автору темы: Вы не пробовали это все хозяйство засунуть в одну задачу?
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Синхронизация AO
В таком случае получается, что в каких-то данных есть пропуски, а не просто "съезд" частот. Два мегасемпла - это не бог весть какой высокий sample rate. Ну в самом цикле нет ответа на вопрос: в какой момент в буфера плат записываются новые данные. Нет ожидания опустошения буфера (или половины) для записи. Получается, что цикл крутится с одной скоростью, а данные воспроизводятся с другой. Буфер FIFO платы не бесконечен, поэтому перезапись его чаще опустошения будет приводить к смещению фазы реально выдаваемого сигнала (в определенных условиях будут существенные глюки), разные размеры FIFO будут давать смещение фазы между каналами. Если функция ожидает опустошения буфера (это вряд-ли), то будут пропуски, поскольку сама функция не передает данные в буфер мгновенно, счетчик то тикает.А они и работают от одного тактового генератора. Просто задержки в шасси и в схемах на платах, особенно на высоком sample rate, еще никто не отменил)
Ну и напоследок: кто сказал, что у этих плат одинаковые коэффициенты деления тактовых частот?... Могут быть нюансы и тут.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Синхронизация AO
Fancnc, Вы наверняка это уже смотрели, поэтому это больше для посетителей, если их реально интересуют проблемы синхронизации в DAQmx)
Synchronization Explained http://www.ni.com/white-paper/11369/en/
Synchronizing Analog Input C Series Modules with NI-DAQmx http://www.ni.com/tutorial/5376/en/
M Series Synchronization with LabVIEW and NI-DAQmx http://www.ni.com/tutorial/3615/en/
Synchronization Explained http://www.ni.com/white-paper/11369/en/
Synchronizing Analog Input C Series Modules with NI-DAQmx http://www.ni.com/tutorial/5376/en/
M Series Synchronization with LabVIEW and NI-DAQmx http://www.ni.com/tutorial/3615/en/
-
- assistant
- Сообщения: 147
- Зарегистрирован: 15 ноя 2011, 22:39
- Версия LabVIEW: 2018, 2020
- Откуда: СПб
- Контактная информация:
Re: Синхронизация AO
Устройства не поддерживают такой режим работыВопрос автору темы: Вы не пробовали это все хозяйство засунуть в одну задачу?
На схеме они и работают от одного тактового генератора pxislot6Т.е либо физически соединять PFI входы-выходы, либо программно конфигурировать.
В режиме без обновления сигнала - синхронизируются устройства, но как только с обновлением, начинаются непонятности.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Синхронизация AO
но как только с обновлением, начинаются непонятности.
Тем более, что возможную ошибку при работе в цикле, вы не индицируетеНет ожидания опустошения буфера (или половины) для записи. Получается, что цикл крутится с одной скоростью, а данные воспроизводятся с другой.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Синхронизация AO
Имеется в виду в режиме регенерации буфера? Если это так, то возможной причиной при обновлении буфера может быть разный размер буфера FIFO плат и как следствие разное время ожидания записи новой порции данных на функциях Write. Задача платы с меньшим FIFO должна писать чаще, чем задача платы с большим буфером. Попробуйте разнести задачи в два параллельных цикла.Fancnc писал(а):...В режиме без обновления сигнала - синхронизируются устройства, но как только с обновлением, начинаются непонятности.
-
- assistant
- Сообщения: 147
- Зарегистрирован: 15 ноя 2011, 22:39
- Версия LabVIEW: 2018, 2020
- Откуда: СПб
- Контактная информация:
Re: Синхронизация AO
ошибок при работе нетТем более, что возможную ошибку при работе в цикле, вы не индицируете
Так оно и есть, полезно читать спецификацию=) если часто считывать значения с высокой fd,то получится полная фигня, как тогда организовать буферизацию сигнала??разный размер буфера FIFO плат
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Синхронизация AO
Я бы вам еще рекомендовал проверить следующий момент: в цикле у вас все прекрасно работает (например при работе с одной платой). А теперь подключите осциллограф и посмотрите, какая будет задержка при изменении сигнала. Т.е время между изменением частоты в контроле и прохождением сигнала на физический вывод. Особенно при работе в течении некоторого времени. Уверен, будете удивлены. Для чистоты эксперимента частоту оставьте постоянной, а изменяйте амплитуду.
-
- assistant
- Сообщения: 147
- Зарегистрирован: 15 ноя 2011, 22:39
- Версия LabVIEW: 2018, 2020
- Откуда: СПб
- Контактная информация:
Re: Синхронизация AO
Проверял уже=)Для чистоты эксперимента частоту оставьте постоянной, а изменяйте амплитуду.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Синхронизация AO
Еще возможно, что наоборот, не успевает записывать - из-за маленького размера массива его генерация и запись в буфер происходит медленнее, чем выдача. Тогда начинает генерироваться сигнал из буфера FIFO заново. Когда приходят новые данные на следующем цикле, непрерывность сигнала нарушается, поскольку фаза сигнала в FIFO съезжает.
Короче, надо контролировать размер данных в FIFO.
Короче, надо контролировать размер данных в FIFO.
-
- assistant
- Сообщения: 147
- Зарегистрирован: 15 ноя 2011, 22:39
- Версия LabVIEW: 2018, 2020
- Откуда: СПб
- Контактная информация:
Re: Синхронизация AO
Получилось следующее,но есть небольшое "НО" должно быть 46 каналов....., опять же надо делать все через timed loop. выделять на каждый модуль свое ядро и делать генерацию сигнала в отдельном цикле для каждых из групп модулей, мне так представляется это так... или над как то по другому пути идти??
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Синхронизация AO
Для каждой платы оформляется одна задача и делается Multi Channels NSamples. Т.е число циклов у вас не меняется
Только для множества частот, которые вы, как я понимаю, хотите генерировать, для каждого канала надо помнить текущую фазу. Т.е генерация в тона в цикле, но с массивом текущих фаз. Главное, чтобы проц потянул. Однако, при ваших скоростях, не думаю, что будут проблемы. Обратите внимание на ваш тренд. Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)
Только для множества частот, которые вы, как я понимаю, хотите генерировать, для каждого канала надо помнить текущую фазу. Т.е генерация в тона в цикле, но с массивом текущих фаз. Главное, чтобы проц потянул. Однако, при ваших скоростях, не думаю, что будут проблемы. Обратите внимание на ваш тренд. Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)
-
- assistant
- Сообщения: 147
- Зарегистрирован: 15 ноя 2011, 22:39
- Версия LabVIEW: 2018, 2020
- Откуда: СПб
- Контактная информация:
Re: Синхронизация AO
fd =400000Hz, #s=20000 задержка 0,05с.Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)
Тон это для теста, будет N каналов и у каждого канала свои параметры, которые автоматом вычисляются в отдельном цикле. Такая схема очень чувствительна в винде, т.к. стоит софтовая задержка, как-то над переделать, а то любой "затуп" винды и все=(
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение