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

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

Добавлено: 31 мар 2017, 17:36
Fancnc
Имеются платы pxie-6368 и pxie-6738, хотелось бы синхронизировать AO на этих картах в режиме continuous output и что бы значение частоты и амплитуды можно было менять не останавливая программу. Стартуют синхронно, но потом "расползаются" сигналы и чем выше fd тем больше глюков вылезает. Подскажите как организовать правильно синхронизацию.

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

Добавлено: 31 мар 2017, 19:12
Borjomy_1
Необходимо, чтобы платы работали от одного тактового генератора. Т.е либо физически соединять PFI входы-выходы, либо программно конфигурировать.

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

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

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

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

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

Добавлено: 31 мар 2017, 23:11
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/

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

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

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

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

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

Добавлено: 03 апр 2017, 14:16
Blackman
Fancnc писал(а):
...В режиме без обновления сигнала - синхронизируются устройства, но как только с обновлением, начинаются непонятности.
Имеется в виду в режиме регенерации буфера? Если это так, то возможной причиной при обновлении буфера может быть разный размер буфера FIFO плат и как следствие разное время ожидания записи новой порции данных на функциях Write. Задача платы с меньшим FIFO должна писать чаще, чем задача платы с большим буфером. Попробуйте разнести задачи в два параллельных цикла.

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

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

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

Добавлено: 03 апр 2017, 17:23
Borjomy_1
Я бы вам еще рекомендовал проверить следующий момент: в цикле у вас все прекрасно работает (например при работе с одной платой). А теперь подключите осциллограф и посмотрите, какая будет задержка при изменении сигнала. Т.е время между изменением частоты в контроле и прохождением сигнала на физический вывод. Особенно при работе в течении некоторого времени. Уверен, будете удивлены. Для чистоты эксперимента частоту оставьте постоянной, а изменяйте амплитуду.

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

Добавлено: 03 апр 2017, 17:27
Fancnc
Для чистоты эксперимента частоту оставьте постоянной, а изменяйте амплитуду.
Проверял уже=)

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

Добавлено: 03 апр 2017, 17:59
Borjomy_1
Еще возможно, что наоборот, не успевает записывать - из-за маленького размера массива его генерация и запись в буфер происходит медленнее, чем выдача. Тогда начинает генерироваться сигнал из буфера FIFO заново. Когда приходят новые данные на следующем цикле, непрерывность сигнала нарушается, поскольку фаза сигнала в FIFO съезжает.
Короче, надо контролировать размер данных в FIFO.

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

Добавлено: 03 апр 2017, 19:33
Fancnc
Получилось следующее,но есть небольшое "НО" должно быть 46 каналов....., опять же надо делать все через timed loop. выделять на каждый модуль свое ядро и делать генерацию сигнала в отдельном цикле для каждых из групп модулей, мне так представляется это так... или над как то по другому пути идти??

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

Добавлено: 03 апр 2017, 22:47
Borjomy_1
Для каждой платы оформляется одна задача и делается Multi Channels NSamples. Т.е число циклов у вас не меняется
Только для множества частот, которые вы, как я понимаю, хотите генерировать, для каждого канала надо помнить текущую фазу. Т.е генерация в тона в цикле, но с массивом текущих фаз. Главное, чтобы проц потянул. Однако, при ваших скоростях, не думаю, что будут проблемы. Обратите внимание на ваш тренд. Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)

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

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