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

Простейшие вопросы в области инженерной разработки

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

Postby Fancnc on 31 Mar 2017, 17:36

Имеются платы pxie-6368 и pxie-6738, хотелось бы синхронизировать AO на этих картах в режиме continuous output и что бы значение частоты и амплитуды можно было менять не останавливая программу. Стартуют синхронно, но потом "расползаются" сигналы и чем выше fd тем больше глюков вылезает. Подскажите как организовать правильно синхронизацию.
Attachments
sync_ao.PNG
sign.PNG
Fancnc
assistant
assistant
 
Posts: 108
Joined: 15 Nov 2011, 22:39
Location: СПб
LabVIEW Version: 2016
Karma: 5

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

Postby Borjomy_1 on 31 Mar 2017, 19:12

Необходимо, чтобы платы работали от одного тактового генератора. Т.е либо физически соединять PFI входы-выходы, либо программно конфигурировать.
Borjomy_1
expert
expert
 
Posts: 1762
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Blackman on 31 Mar 2017, 20:53

Borjomy_1 wrote:Необходимо, чтобы платы работали от одного тактового генератора...

А они и работают от одного тактового генератора. Просто задержки в шасси и в схемах на платах, особенно на высоком sample rate, еще никто не отменил)
Вопрос автору темы: Вы не пробовали это все хозяйство засунуть в одну задачу?
Blackman
leader
leader
 
Posts: 672
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 166

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

Postby Borjomy_1 on 31 Mar 2017, 22:04

А они и работают от одного тактового генератора. Просто задержки в шасси и в схемах на платах, особенно на высоком sample rate, еще никто не отменил)

В таком случае получается, что в каких-то данных есть пропуски, а не просто "съезд" частот. Два мегасемпла - это не бог весть какой высокий sample rate. Ну в самом цикле нет ответа на вопрос: в какой момент в буфера плат записываются новые данные. Нет ожидания опустошения буфера (или половины) для записи. Получается, что цикл крутится с одной скоростью, а данные воспроизводятся с другой. Буфер FIFO платы не бесконечен, поэтому перезапись его чаще опустошения будет приводить к смещению фазы реально выдаваемого сигнала (в определенных условиях будут существенные глюки), разные размеры FIFO будут давать смещение фазы между каналами. Если функция ожидает опустошения буфера (это вряд-ли), то будут пропуски, поскольку сама функция не передает данные в буфер мгновенно, счетчик то тикает.
Ну и напоследок: кто сказал, что у этих плат одинаковые коэффициенты деления тактовых частот?... Могут быть нюансы и тут.
Borjomy_1
expert
expert
 
Posts: 1762
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Blackman on 31 Mar 2017, 23:11

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/
Blackman
leader
leader
 
Posts: 672
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 166

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

Postby Fancnc on 03 Apr 2017, 11:44

Вопрос автору темы: Вы не пробовали это все хозяйство засунуть в одну задачу?

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

На схеме они и работают от одного тактового генератора pxislot6
В режиме без обновления сигнала - синхронизируются устройства, но как только с обновлением, начинаются непонятности.
Fancnc
assistant
assistant
 
Posts: 108
Joined: 15 Nov 2011, 22:39
Location: СПб
LabVIEW Version: 2016
Karma: 5

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

Postby Borjomy_1 on 03 Apr 2017, 12:51

но как только с обновлением, начинаются непонятности.


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

Тем более, что возможную ошибку при работе в цикле, вы не индицируете
Borjomy_1
expert
expert
 
Posts: 1762
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Blackman on 03 Apr 2017, 14:16

Fancnc wrote:
...В режиме без обновления сигнала - синхронизируются устройства, но как только с обновлением, начинаются непонятности.

Имеется в виду в режиме регенерации буфера? Если это так, то возможной причиной при обновлении буфера может быть разный размер буфера FIFO плат и как следствие разное время ожидания записи новой порции данных на функциях Write. Задача платы с меньшим FIFO должна писать чаще, чем задача платы с большим буфером. Попробуйте разнести задачи в два параллельных цикла.
Blackman
leader
leader
 
Posts: 672
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 166

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

Postby Fancnc on 03 Apr 2017, 16:53

Тем более, что возможную ошибку при работе в цикле, вы не индицируете
ошибок при работе нет
разный размер буфера FIFO плат

Так оно и есть, полезно читать спецификацию=) если часто считывать значения с высокой fd,то получится полная фигня, как тогда организовать буферизацию сигнала??
Fancnc
assistant
assistant
 
Posts: 108
Joined: 15 Nov 2011, 22:39
Location: СПб
LabVIEW Version: 2016
Karma: 5

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

Postby Borjomy_1 on 03 Apr 2017, 17:23

Я бы вам еще рекомендовал проверить следующий момент: в цикле у вас все прекрасно работает (например при работе с одной платой). А теперь подключите осциллограф и посмотрите, какая будет задержка при изменении сигнала. Т.е время между изменением частоты в контроле и прохождением сигнала на физический вывод. Особенно при работе в течении некоторого времени. Уверен, будете удивлены. Для чистоты эксперимента частоту оставьте постоянной, а изменяйте амплитуду.
Borjomy_1
expert
expert
 
Posts: 1762
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Fancnc on 03 Apr 2017, 17:27

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

Проверял уже=)
Fancnc
assistant
assistant
 
Posts: 108
Joined: 15 Nov 2011, 22:39
Location: СПб
LabVIEW Version: 2016
Karma: 5

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

Postby Borjomy_1 on 03 Apr 2017, 17:59

Еще возможно, что наоборот, не успевает записывать - из-за маленького размера массива его генерация и запись в буфер происходит медленнее, чем выдача. Тогда начинает генерироваться сигнал из буфера FIFO заново. Когда приходят новые данные на следующем цикле, непрерывность сигнала нарушается, поскольку фаза сигнала в FIFO съезжает.
Короче, надо контролировать размер данных в FIFO.
Borjomy_1
expert
expert
 
Posts: 1762
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Fancnc on 03 Apr 2017, 19:33

Получилось следующее,но есть небольшое "НО" должно быть 46 каналов....., опять же надо делать все через timed loop. выделять на каждый модуль свое ядро и делать генерацию сигнала в отдельном цикле для каждых из групп модулей, мне так представляется это так... или над как то по другому пути идти??
Attachments
sign_buf.PNG
code.PNG
Fancnc
assistant
assistant
 
Posts: 108
Joined: 15 Nov 2011, 22:39
Location: СПб
LabVIEW Version: 2016
Karma: 5

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

Postby Borjomy_1 on 03 Apr 2017, 22:47

Для каждой платы оформляется одна задача и делается Multi Channels NSamples. Т.е число циклов у вас не меняется
Только для множества частот, которые вы, как я понимаю, хотите генерировать, для каждого канала надо помнить текущую фазу. Т.е генерация в тона в цикле, но с массивом текущих фаз. Главное, чтобы проц потянул. Однако, при ваших скоростях, не думаю, что будут проблемы. Обратите внимание на ваш тренд. Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)
Borjomy_1
expert
expert
 
Posts: 1762
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Fancnc on 04 Apr 2017, 00:39

Получается, что на втором графике индицируется задержка примерно в 2 сек... А на первом - около 1 сек (при 20000 семплов/c)

fd =400000Hz, #s=20000 задержка 0,05с.
Тон это для теста, будет N каналов и у каждого канала свои параметры, которые автоматом вычисляются в отдельном цикле. Такая схема очень чувствительна в винде, т.к. стоит софтовая задержка, как-то над переделать, а то любой "затуп" винды и все=(
Fancnc
assistant
assistant
 
Posts: 108
Joined: 15 Nov 2011, 22:39
Location: СПб
LabVIEW Version: 2016
Karma: 5

Next

Return to Для чайников

Who is online

Users browsing this forum: Google and 11 guests

cron