Раздельная внешняя синхронизация

Захват, обработка и генерирование сигнала
Ответить
Борис
interested
interested
Сообщения: 9
Зарегистрирован: 11 мар 2013, 11:26
Версия LabVIEW: 2011
Контактная информация:

Раздельная внешняя синхронизация

Сообщение Борис »

Друзья, может кто подскажет путь решения задачи. Данные поступают на PCI-6259 байтами с периодом следования 20 мкс. Каждый байт сопровождается своим импульсом синхронизации для считывания, поступающим по отдельной линии. Длительность выставляемых данных 2 мкс, длительность импульсов синхронизации 0,8 мкс. Данные необходимо расшифровать и ввести в один цикл. В связи с небольшим опытом, пытаюсь решить вопрос с помощью классических примеров, но созданный VI упорно работает только по одному каналу синхронизации, а DAQ-Assistant выполняет данные функции, но при длительностях от 1мс и выше.
Вложения
Ввод 3 ПК.vi
(25.51 КБ) 124 скачивания
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Раздельная внешняя синхронизация

Сообщение Andrew Lunev »

Каналов синхронизации не может быть несколько для одной задачи, а вы их пытаетесь три создать. При запуске две задачи у вас должны выдавать ошибку о занятости ресурса.
Борис
interested
interested
Сообщения: 9
Зарегистрирован: 11 мар 2013, 11:26
Версия LabVIEW: 2011
Контактная информация:

Re: Раздельная внешняя синхронизация

Сообщение Борис »

Спасибо за ответ. Совершенно верно, два канала выдают ошибку, а реально у меня их 10! Так как же разделить задачи, если данные вводятся с одного порта?
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Раздельная внешняя синхронизация

Сообщение Andrew Lunev »

Думаю единственный вариант для вас это использовать следующие задачи: Dev1/port0/line0:7, Dev1/port0/line8:15, Dev1/port0/line16:23 и так далее. А на плате физически объединить линии 0, 8, 16 и так далее. Каждую задачу тактируйте от своего PFI. Но и тут могут быть проблемы. Не уверен, что можно сделать несколько каналов тактирования для одного порта платы, а другие порты вам не подойдут. Попробуйте, но если даже заработает, то вряд ли выйдет что-то стабильно работающее. Анализ то вы программно все равно делать будете, а частоты у вас высокие.
Вообще такая задача нормально решается для ваших частот только на FPGA, так что советую смотреть в сторону cRIO или плат R-серии, там все это очень просто делается хоть для нескольких десятков каналов синхронизации.
Борис
interested
interested
Сообщения: 9
Зарегистрирован: 11 мар 2013, 11:26
Версия LabVIEW: 2011
Контактная информация:

Re: Раздельная внешняя синхронизация

Сообщение Борис »

Такую роскошь я себе позволить не могу т.к. остальные порты заняты приемом статических сигналов. Что касается анализа, то там таких частот не требуется. На указанных ранее частотах данные следуют пачками с частотой повторения 10Гц. Задача состоит в том, чтобы принять пачку и сохранить данные для следующего сеанса. А нельэя ли создать несколько задач, использующих разную синхронизацию, но один общий порт?
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Раздельная внешняя синхронизация

Сообщение Andrew Lunev »

Борис писал(а):А нельэя ли создать несколько задач, использующих разную синхронизацию, но один общий порт?
Порт может быть общим, но линии в задачах не могут пересекаться. То есть в разных задачах нельзя использовать одну и ту же линию одновременно. Опишите подробней вашу задачу, не совсем понятно, что именно нужно делать и как.
Если время обработки не критично, но пишите данные в файл с высокой частотой, а потом ищите синхроимпульс и расшифровывайте данные. Времени уйдет много, но гарантированно расшифруете.
Борис
interested
interested
Сообщения: 9
Зарегистрирован: 11 мар 2013, 11:26
Версия LabVIEW: 2011
Контактная информация:

Re: Раздельная внешняя синхронизация

Сообщение Борис »

Если я Вас не утомил, то прикрепляю примерный протокол поступления данных с внешнего устройства.
Попробовал ввести данные напрямую без синхронизации, с целью последующей программной синхронизации. Начинает работать от 8 мкс.
И это странно. Ведь производитель заявляет о наличии в данной ячейке 32 скоростных линий с частотой опроса 10 мГц, а здесь даже на
1 мГц не тянет. Или я чего-то не понимаю? Может нужно как-то задать частоту?
С уважением. Борис.
Вложения
Протокол.vi
(26.46 КБ) 139 скачиваний
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Раздельная внешняя синхронизация

Сообщение Andrew Lunev »

Борис писал(а):Попробовал ввести данные напрямую без синхронизации, с целью последующей программной синхронизации. Начинает работать от 8 мкс.И это странно. Ведь производитель заявляет о наличии в данной ячейке 32 скоростных линий с частотой опроса 10 мГц, а здесь даже на
1 мГц не тянет.
Все верно, но эти частоты достижимы только при буферизированном вводе. Вы получаете одну точку измерений и тут же ее обрабатываете, вот цикл обработки у вас и есть узкое место, он не дает получить из буфера следующее значение вовремя. На таких частотах получать надо пачками. Например при частоте сбора 10 МГц, получайте пачками по 100 000 точек и ваш цикл будет работать на частоте 100 Гц и вполне успевать получать данные и например записывать их в файл, выводить на экран, посылать через очередь в другой цикл, в котором будет обработка. Однако анализ и расшифровку ваших данных все равно придется где-то делать по одной точке, а на это у вас время есть только между пачками.
Как я уже говорил, поточечный анализ данных в реальном времени на таких частотах можно сделать только на ПЛИС. Попробуйте посылать данные из цикла сбора данных в цикл обработки через очередь, а там уже обрабатывать. Если процессор многоядерный, может быть получится распараллелить эти процессы. Но все равно частоты слишком высокие, чтобы гарантировать работу без проведения кучи тестов и оптимизации кода, да и очередь даст лишнюю нагрузку на процессор и память. Гарантию даст только ПЛИС.
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Раздельная внешняя синхронизация

Сообщение Andrew Lunev »

Для вашей задачи я бы свел все каналы синхронизации на один PFI, тогда байт данных получите гарантированно. Останется только узнать к какому каналу синхронизации его отнести. Это можно сделать многими способами. Например завести эти каналы еще на 10 каналов DIO и их обрабатывать, тогда на каждый пакет надо обработать всего 18 бит данных, возможно это можно успеть за отведенное время.
Борис
interested
interested
Сообщения: 9
Зарегистрирован: 11 мар 2013, 11:26
Версия LabVIEW: 2011
Контактная информация:

Re: Раздельная внешняя синхронизация

Сообщение Борис »

С вашей профессиональной точки зрения модуль NI PCI-7811 R-серии справится с моей задачей? Боюсь промахнуться. Штука не из дешевых.
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Раздельная внешняя синхронизация

Сообщение Andrew Lunev »

Более чем справится. Если не нужно 160 каналов, то можно приглядеться к NI sbRIO-9605 или к варианту NI cRIO-9075 с модулями NI 9401. Возможно такие варианты будут дешевле.
Борис
interested
interested
Сообщения: 9
Зарегистрирован: 11 мар 2013, 11:26
Версия LabVIEW: 2011
Контактная информация:

Re: Раздельная внешняя синхронизация

Сообщение Борис »

Андрей, у меня общая задача более масштабная, чем ввод динамических сигналов, который мы обсуждаем. Она включает аналоговые, импульсные и временные измерения, вывод сигналов на осциллограмму в режиме реального времени, создание протоколов и графических отчетов и управление внешним устройством. Сил для ее решения пока маловато. Задача находится на стадии оформления ТЗ. Есть отдельные демонстрационные фрагменты программы с виртуальными сигналами. Если вы не против и дадите свой электронный адрес, мы могли бы обсудить возможность и условия вашего участия в работе, разумеется, при желании.
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Раздельная внешняя синхронизация

Сообщение Andrew Lunev »

Борис писал(а):Если вы не против и дадите свой электронный адрес, мы могли бы обсудить возможность и условия вашего участия в работе, разумеется, при желании.
Написал вам личное сообщение.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Обработка сигнала»