Синхронизация AO

Простейшие вопросы в области инженерной разработки
Fancnc
assistant
assistant
Сообщения: 147
Зарегистрирован: 15 ноя 2011, 22:39
Версия LabVIEW: 2018, 2020
Откуда: СПб
Контактная информация:

Синхронизация AO

Сообщение Fancnc »

Имеются платы pxie-6368 и pxie-6738, хотелось бы синхронизировать AO на этих картах в режиме continuous output и что бы значение частоты и амплитуды можно было менять не останавливая программу. Стартуют синхронно, но потом "расползаются" сигналы и чем выше fd тем больше глюков вылезает. Подскажите как организовать правильно синхронизацию.
Вложения
sync_ao.PNG
sign.PNG
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2207
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Синхронизация AO

Сообщение Borjomy_1 »

Необходимо, чтобы платы работали от одного тактового генератора. Т.е либо физически соединять PFI входы-выходы, либо программно конфигурировать.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Синхронизация AO

Сообщение Blackman »

Borjomy_1 писал(а):Необходимо, чтобы платы работали от одного тактового генератора...
А они и работают от одного тактового генератора. Просто задержки в шасси и в схемах на платах, особенно на высоком sample rate, еще никто не отменил)
Вопрос автору темы: Вы не пробовали это все хозяйство засунуть в одну задачу?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2207
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Синхронизация AO

Сообщение Borjomy_1 »

А они и работают от одного тактового генератора. Просто задержки в шасси и в схемах на платах, особенно на высоком sample rate, еще никто не отменил)
В таком случае получается, что в каких-то данных есть пропуски, а не просто "съезд" частот. Два мегасемпла - это не бог весть какой высокий sample rate. Ну в самом цикле нет ответа на вопрос: в какой момент в буфера плат записываются новые данные. Нет ожидания опустошения буфера (или половины) для записи. Получается, что цикл крутится с одной скоростью, а данные воспроизводятся с другой. Буфер FIFO платы не бесконечен, поэтому перезапись его чаще опустошения будет приводить к смещению фазы реально выдаваемого сигнала (в определенных условиях будут существенные глюки), разные размеры FIFO будут давать смещение фазы между каналами. Если функция ожидает опустошения буфера (это вряд-ли), то будут пропуски, поскольку сама функция не передает данные в буфер мгновенно, счетчик то тикает.
Ну и напоследок: кто сказал, что у этих плат одинаковые коэффициенты деления тактовых частот?... Могут быть нюансы и тут.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Синхронизация AO

Сообщение Blackman »

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/
Fancnc
assistant
assistant
Сообщения: 147
Зарегистрирован: 15 ноя 2011, 22:39
Версия LabVIEW: 2018, 2020
Откуда: СПб
Контактная информация:

Re: Синхронизация AO

Сообщение Fancnc »

Вопрос автору темы: Вы не пробовали это все хозяйство засунуть в одну задачу?
Устройства не поддерживают такой режим работы
Т.е либо физически соединять PFI входы-выходы, либо программно конфигурировать.
На схеме они и работают от одного тактового генератора pxislot6
В режиме без обновления сигнала - синхронизируются устройства, но как только с обновлением, начинаются непонятности.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2207
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Синхронизация AO

Сообщение Borjomy_1 »

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

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Синхронизация AO

Сообщение Blackman »

Fancnc писал(а):
...В режиме без обновления сигнала - синхронизируются устройства, но как только с обновлением, начинаются непонятности.
Имеется в виду в режиме регенерации буфера? Если это так, то возможной причиной при обновлении буфера может быть разный размер буфера FIFO плат и как следствие разное время ожидания записи новой порции данных на функциях Write. Задача платы с меньшим FIFO должна писать чаще, чем задача платы с большим буфером. Попробуйте разнести задачи в два параллельных цикла.
Fancnc
assistant
assistant
Сообщения: 147
Зарегистрирован: 15 ноя 2011, 22:39
Версия LabVIEW: 2018, 2020
Откуда: СПб
Контактная информация:

Re: Синхронизация AO

Сообщение Fancnc »

Тем более, что возможную ошибку при работе в цикле, вы не индицируете
ошибок при работе нет
разный размер буфера FIFO плат
Так оно и есть, полезно читать спецификацию=) если часто считывать значения с высокой fd,то получится полная фигня, как тогда организовать буферизацию сигнала??
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2207
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Синхронизация AO

Сообщение Borjomy_1 »

Я бы вам еще рекомендовал проверить следующий момент: в цикле у вас все прекрасно работает (например при работе с одной платой). А теперь подключите осциллограф и посмотрите, какая будет задержка при изменении сигнала. Т.е время между изменением частоты в контроле и прохождением сигнала на физический вывод. Особенно при работе в течении некоторого времени. Уверен, будете удивлены. Для чистоты эксперимента частоту оставьте постоянной, а изменяйте амплитуду.
Fancnc
assistant
assistant
Сообщения: 147
Зарегистрирован: 15 ноя 2011, 22:39
Версия LabVIEW: 2018, 2020
Откуда: СПб
Контактная информация:

Re: Синхронизация AO

Сообщение Fancnc »

Для чистоты эксперимента частоту оставьте постоянной, а изменяйте амплитуду.
Проверял уже=)
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2207
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Синхронизация AO

Сообщение Borjomy_1 »

Еще возможно, что наоборот, не успевает записывать - из-за маленького размера массива его генерация и запись в буфер происходит медленнее, чем выдача. Тогда начинает генерироваться сигнал из буфера FIFO заново. Когда приходят новые данные на следующем цикле, непрерывность сигнала нарушается, поскольку фаза сигнала в FIFO съезжает.
Короче, надо контролировать размер данных в FIFO.
Fancnc
assistant
assistant
Сообщения: 147
Зарегистрирован: 15 ноя 2011, 22:39
Версия LabVIEW: 2018, 2020
Откуда: СПб
Контактная информация:

Re: Синхронизация AO

Сообщение Fancnc »

Получилось следующее,но есть небольшое "НО" должно быть 46 каналов....., опять же надо делать все через timed loop. выделять на каждый модуль свое ядро и делать генерацию сигнала в отдельном цикле для каждых из групп модулей, мне так представляется это так... или над как то по другому пути идти??
Вложения
sign_buf.PNG
code.PNG
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2207
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Синхронизация AO

Сообщение Borjomy_1 »

Для каждой платы оформляется одна задача и делается Multi Channels NSamples. Т.е число циклов у вас не меняется
Только для множества частот, которые вы, как я понимаю, хотите генерировать, для каждого канала надо помнить текущую фазу. Т.е генерация в тона в цикле, но с массивом текущих фаз. Главное, чтобы проц потянул. Однако, при ваших скоростях, не думаю, что будут проблемы. Обратите внимание на ваш тренд. Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)
Fancnc
assistant
assistant
Сообщения: 147
Зарегистрирован: 15 ноя 2011, 22:39
Версия LabVIEW: 2018, 2020
Откуда: СПб
Контактная информация:

Re: Синхронизация AO

Сообщение Fancnc »

Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)
fd =400000Hz, #s=20000 задержка 0,05с.
Тон это для теста, будет N каналов и у каждого канала свои параметры, которые автоматом вычисляются в отдельном цикле. Такая схема очень чувствительна в винде, т.к. стоит софтовая задержка, как-то над переделать, а то любой "затуп" винды и все=(
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»