exponenta event banner

Десериализатор MAVLink

Преобразовать сериализованные uint8 Поток данных MAVLink на невиртуальную шину Simulink

  • Библиотека:
  • Панель инструментов БПЛА/MAVLink

Описание

Блок десериализатора MAVLink принимает uint8 и декодирует буфер для сообщений MAVLink. После того, как блок принимает сообщение MAVLink для выбранного типа сообщения MAVLink, блок выводит непровиртуальную шину Simulink ®, представляющую пакет MAVLink, содержащий идентификатор сообщения, идентификатор системы, идентификатор компонента, последовательность и информацию полезной нагрузки, соответствующую выбранному типу сообщения MAVLink.

На каждом этапе моделирования блок декодирует входной сигнал. uint8 и извлекает сообщения MAVLink, которые принимаются после декодирования. Если было принято новое сообщение для выбранного типа сообщения MAVLink, блок извлекает это сообщение из списка принятых сообщений и преобразует его в немиртуальный сигнал шины Simulink.

Логика декодирования MAVLink в блоке учитывает сценарии, в которых пакет MAVLink был частично принят из канала связи. Блок десериализатора MAVLink внутренне сохраняет текущее состояние синтаксического анализа и возобновляет декодирование с предыдущего этапа, когда новый буфер был принят по каналу связи. Если полный пакет MAVLink был принят и полученная контрольная сумма соответствует вычисленной контрольной сумме для полученных байтов, то это указывает, что сообщение MAVLink было принято. Сохранение состояния синтаксического анализа гарантирует, что блок может декодировать пакеты MAVLink, принятые в нескольких частях.

По умолчанию блок выводит последнее полученное сообщение MAVLink для выбранного типа сообщения MAVLink (если получено). Это поведение можно изменить, выбрав параметр Queue Messages in output. В этом случае все принятые сообщения MAVLink для требуемого типа ставятся в очередь, и на каждом этапе моделирования блок выводит самое старое сообщение.

Порты

Вход

развернуть все

uint8 поток байтов, содержащий сериализованные пакеты MAVLink. Поток байтов обычно принимается по каналу связи, такому как UDP, TCP или Serial. В каждый момент времени выборки канал связи принимает данные и возвращает поток байтов, который содержит один или более пакетов MAVLink. Поток байтов также может частично возвращать пакет MAVLink за несколько раз выборки. Этот входной порт принимает сигналы переменной длины.

Типы данных: uint8

Дополнительный входной порт, включающий длину допустимых данных MAVLink. Чтобы включить этот порт, выберите параметр Input data stream length is available. Используйте этот параметр, если известна точная длина допустимых данных MAVLink в потоке данных.

Эта опция полезна при наличии периферийного устройства приема канала связи, которое выводит частично принятые данные, содержащие конечные нули. Такие периферийные устройства также выводят длину фактического количества принятых действительных байтов данных. Выходной сигнал длины периферийного устройства можно соединить непосредственно с входным портом Length блока MAVLink Deserializer, чтобы конечные нули во входном потоке байтов не влияли на логику декодирования.

Типы данных: uint16

Продукция

развернуть все

Новый индикатор сообщения MAVLink возвращен как логический. Значение 1 указывает, что новое сообщение доступно с момента получения последнего образца блоком. Эти выходные данные могут использоваться для запуска подсистем для обработки новых сообщений, полученных от блока десериализатора MAVLink.

Типы данных: Boolean

Пакет MAVLink, возвращаемый как невиртуальная шина. Тип полезной нагрузки в пакете MAVLink - это шина Simulink, соответствующая сообщению MAVLink, указанному в параметре типа сообщения MAVLink. Блок выводит пустые сообщения до тех пор, пока не получит сообщение с указанным именем сообщения. Порт Msg выводит это новое сообщение. Если новое сообщение недоступно, оно выводит последнее полученное сообщение MAVLink. Если сообщение не было получено с начала моделирования, порт Msg выводит пустое сообщение MAVLink.

Типы данных: bus

Параметры

развернуть все

Главный

Источник для указания XML-имени определения сообщения MAVLink, указанного как одно из следующих значений:

  • Select from standard MAVLink dialects - Этот параметр используется для выбора XML определения из 12 часто используемых XML-имен определения сообщения, перечисленных в параметре диалекта MAVLink.

  • Specify your own - Введите имя XML в текстовом поле, которое отображается для параметра диалекта MAVLink.

Файл определения сообщения MAVLink (.xml) для синтаксического анализа сообщений MAVLink, указанных как строка.

Если для параметра источника диалекта MAVLink установлено значение Select from standard MAVLink dialects, необходимо выбрать определение сообщения из списка доступных имен определений сообщений.

Если параметр источника диалекта MAVLink имеет значение Specify your own, необходимо указать файл определения сообщения (.xml) по текущему пути MATLAB или можно указать полный путь к XML-файлу.

Версия протокола MAVLink, используемая блоком для сериализации и десериализации сообщений MAVLink.

Сообщение MAVLink, указанное как строка. Нажмите кнопку «Выбрать» для выбора из полного списка доступных сообщений MAVLink. Список зависит от значений, выбранных для параметров диалекта MAVLink и версии MAVLink.

Типы данных: string

Расширенный

При выборе этой опции блок десериализатора MAVLink предоставляет дополнительный входной порт с именем Length. Этот входной порт может использоваться для передачи фактической длины данных MAVLink (если известно) во входном байтовом потоке. Входной поток байтов обрезан для этой длины.

Эта опция полезна при наличии периферийного устройства приема канала связи, которое выводит частично принятые данные, содержащие конечные нули. Такие периферийные устройства также выводят длину действительного количества принятых действительных байтов данных. Выходной сигнал длины периферийного устройства можно подключить непосредственно к входному порту Length блока MAVLink Deserializer, чтобы конечные нули во входном потоке байтов не влияли на логику декодирования.

Эта опция используется для фильтрации полученных сообщений MAVLink по значению System ID, упомянутому в параметре System ID. Этот параметр позволяет фильтровать полученные сообщения по идентификатору системы и по идентификатору компонента.

Укажите значение идентификатора системы, которое будет использоваться при фильтрации декодированных сообщений MAVLink. Блок выводит полученные сообщения MAVLink, идентификатор системы которых соответствует указанному значению и идентификатор сообщения которых соответствует сообщению MAVLink (выбранному в параметре типа сообщения MAVLink).

Зависимости

Чтобы включить этот параметр, выберите Фильтр выходных сообщений MAVLink по идентификатору системы.

Эта опция используется для фильтрации полученных сообщений MAVLink для идентификатора системы и идентификатора компонента, упомянутых в параметрах идентификатора системы и идентификатора компонента соответственно.

Зависимости

Этот параметр появляется, только если выбран параметр Filter output MAVLink by System ID.

Укажите значение идентификатора компонента, используемое при фильтрации декодированных сообщений MAVLink. Блок выводит те принятые сообщения MAVLink, чьи значения System ID и Component ID соответствуют указанным значениям в параметрах System ID и Component ID соответственно, и чей Message ID соответствует сообщению MAVLink (выбранному в параметре MAVLink Message type).

Зависимости

Чтобы включить этот параметр, выберите Фильтр выходных сообщений MAVLink по идентификатору компонента.

Эта опция используется для вывода сообщений с использованием шаблона first-in-first-out. Если эта опция не выбрана, блок десериализатора MAVLink выводит последнее полученное сообщение MAVLink для выбранного типа сообщения MAVLink (и с соответствующими идентификатором системы и идентификатором компонента, если эти параметры выбраны) на каждом шаге моделирования. Если несколько сообщений соответствуют заданным параметрам, полученным на этапе моделирования, последнее сообщение передается в качестве выходного, а остальные отбрасываются. Можно изменить это поведение, выбрав этот параметр.

При выборе этого параметра поведение блока десериализатора MAVLink на каждом этапе моделирования:

  • Блок сохраняет декодированные сообщения MAVLink, соответствующие выбранному типу сообщения MAVLink (и совпадающие идентификатор системы и идентификатор компонента, если эти параметры выбраны) в очереди. Если среди полученных сообщений нет сообщений, соответствующих требуемым параметрам, сообщения не ставятся в очередь.

  • Если очередь не пуста, первое сообщение в очереди отправляется как выходное, и сигнал в порте IsNew устанавливается в значение 1.

Выбор параметра Queue MAVLink в выходном параметре делает видимым параметр Number of messages to be queed. Можно исправить размер очереди, задав значение этого параметра.

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

Зависимости

Чтобы включить этот параметр, выберите Queue MAVLink messages in output.

Совет

Для ускорения преобразования полученных сериализованных данных рекомендуется применить следующие настройки в блоке приема канала связи:

  • Считывайте данные с максимально возможной скоростью, чтобы гарантировать, что пакеты не будут отброшены. Используйте вывод IsNew десериализатора MAVLink вместе с логикой, чтобы использовать сообщения MAVLink, чтобы узнать, является ли вывод блока новым сообщением или нет.

  • Если блок приема выводит любое количество байтов, которые принимаются независимо от запрошенного размера данных (частичный прием), укажите размер считывания данных как большое число и используйте длину фактического количества байтов, принятых в качестве входных данных для блока десериализатора MAVLink (используйте входной порт Length).

Расширенные возможности

.
Представлен в R2020b