MAVLink Deserializer

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

  • Библиотека:
  • БПЛА Toolbox/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 для желаемого типа ставятся в очередь, и на каждом шаге симуляции блок выводит самое старое сообщение.

Порты

Вход

расширить все

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

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

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

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

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

Выход

расширить все

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

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

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

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

Параметры

расширить все

Главный

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

  • Select from standard MAVLink dialects - Используйте эту опцию, чтобы выбрать определение xml из 12 обычно используемых имен определения сообщения, перечисленных в параметре MAVLink dialect.

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

Файл определения сообщения MAVLink (. xml) для анализа сообщений MAVLink в виде строки.

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

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

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

Сообщение MAVLink, заданное как строка. Щелкните Select, чтобы выбрать из полного списка доступных сообщений MAVLink. Список варьируется в зависимости от значений, выбранных для параметров MAVLink dialect и MAVLink version.

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

Расширенный

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

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

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

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

Зависимости

Чтобы включить этот параметр, выберите Filter Output MAVLink messages by System ID.

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

Зависимости

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

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

Зависимости

Чтобы включить этот параметр, выберите Filter Output MAVLink messages by Component ID.

Выберите эту опцию, чтобы выводить сообщения с помощью шаблона «первый в первом». Если вы не выбираете эту опцию, блок MAVLink Deserializer выводит последнее полученное сообщение MAVLink для выбранного MAVLink message type (и с совпадающими идентификатором системы и идентификатором компонента, если эти параметры выбраны) на каждом шаге симуляции. Если более одного сообщения соответствует заданным параметрам, которые принимаются в шаге симуляции, последнее сообщение передается как выход, а остальные отбрасываются. Можно отменить это поведение, выбрав эту опцию.

Когда вы выбираете этот параметр, поведение блока MAVLink Deserializer на каждом шаге симуляции:

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

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

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

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

Зависимости

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

Совет

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

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

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

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

.
Введенный в R2020b