Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разбор кадра в Labview с графиком
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
tresk
Добрый день!

Прошу посоветовать подход к решению задачи разбора кадра и вывода результата на график с помощью Labview 12.

Устройство соединено с компьютером через переходник USB - RS422/485.
Формат кадра известен.
Параметры COM-порта тоже известны.

Есть несколько непонятных моментов в алгоритме и реализации программы:
- С помощью каких инструментов следует разбирать кадр?
Я в одной книге вычитал про инструмент "String Subset" и сейчас пытаюсь сделать через него.
- Как правильно организовать работу программы? Имеется ввиду последовательность действий и использование циклов.
После открытия и настройки COM-порта, происходит запись в порт, отправляющая код запроса, далее идет ответ.
После конца ответа, нужна возможность снова сделать запись в порт для получения следующего или же отправления других управляющих команд. То есть видимо надо что бы сам ВП не завершал работу и не закрывал COM-порт.
Ответ (кадр) состоит из шапки и содержимого. Данные передаются побайтово.
Данные из шапки содержат номер кадра, код содержимого, время, контрольную сумму. Эти данные строить на график не нужно, но возможно надо будет использовать для принятия решений что делать с данными.
Сами данные это 255 байт. Разные биты в кадре несут информацию о своем канале, в идеале на 8 разных графиков.

Я в Labview новичок, поэтому могу неточно излагать мысль, но возможно что то посоветуете. Спасибо.
Sanyao
Вам нужен бесконечный цикл (while) - для тела самого VI. Перед его началом инициализируете порт, после завершения - закрываете.
Внутри цикла подаете запрос в порт, потом ждете (принимаете) ответ. При известной его длине подходящим будет цикл for, но наверное неплохо бы предусмотреть таймауты для выхода из цикла и обработку ошибок.
Далее после приема данных на выходе for Вы будете иметь свой кадр. Разобрать его можно как Вам нравится, с анализом шапки, разносом на 8 графиков, хоть отдельных, хоть все на одной сетке, запись в лог.
в главном цикле while предусмотреть кнопку стоп или иные средства его завершения, а после него реализовать корректное закрытие ком-порта.
tresk
Вернувшись к старой задаче, с помощью примеров разобрался более менее с общим подходом к получению данных.
Но так и не могу понять как лучше решить задачу разбора потока данных.
Например приходит поток данных, в определенном формате. Кадр состоит из шапки и данных. Поток идет непрерывно.

Задачи, с которыми проблема:
1) Шапку надо детектировать, по коду начала кадра
2) После детектирования начала кадра начинать разбор и выбирать из шапки информацию о кадре. (Номер кадра, время, и т.д.)
3) Разбирать данные из тела кадра и выводить на график. Или несколько графиков, если в потока передается информация о нескольких каналах.

Проблема в том какие инструменты использовать для этого.
Как правильнее определять маркер начала кадра? И только после этого начинать анализ и выборку данных.
Как выбирать данные из потока для вывода на разные графики (многоканальный вариант)?

В поисках решения, наткнулся на CAN Channels, но так и не понял стоит ли использовать это для моих целей или нет.

Скорость: 19200

Алгоритм который мне кажется подходящим:
1) Если последовательность байтов, совпадает с числами (массивом), тогда
2) Выбераем части которые по порядку относятся к шапке и запоминаем их
3) После завершения части которая является шапкой, направить данные на график или если многоканальный вариант, тогда
4) Каждый первый байт на первый график, второй байт на второй график и т.д.
5) Завершить вывод на график(и) после определенного кол-ва байт или маркера конца кадра.

Как это реализовать с помощью инструментов Labview, сложно понять. По крайней мере грамотно.
Так же как я понимаю проверять на маркер начала кадра нужно всегда, на всякий случай. Или же все таки только до первого совпадения, а далее пытаться разобрать кадр по всей последовательности действий?

Буду благодарен за советы и примеры.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.