CAN Unpack

Распаковка отдельных сигналов из сообщений CAN

  • Библиотека:
  • Блоки Simulink в реальном времени/CAN/CAN MSG

    Автомобильный сетевой Toolbox/Связь с CAN

    Встроенный кодер/встроенные целевые системы/коммуникация с хостом

  • CAN Unpack block

Описание

Блок CAN Unpack распаковывает сообщение CAN в данные сигнала с помощью заданных выходных параметров на каждом временном шаге. Данные выводятся как отдельные сигналы.

Чтобы использовать этот блок, вам также нужна лицензия для Simulink® программное обеспечение.

Блок CAN Unpack поддерживает:

  • Использование режима Simulink Accelerator™ Rapid Accelerator. Используя эту функцию, можно ускорить выполнение моделей Simulink.

  • Использование ссылок на модели. Используя эту функцию, ваша модель может включать другие модели Simulink в качестве модульных компонентов.

Для получения дополнительной информации об этих функциях см. «Проект вашей модели для эффективного ускорения».

Совет

  • Чтобы обработать каждое сообщение, поступающее через канал, рекомендуется использовать блок CAN Unpack в подсистеме триггера функции. См. Использование триггируемых подсистем.

  • Для работы с J1939 сообщениями используйте блоки в библиотеке блоков J1939 Communication вместо этого блока.

Порты

Вход

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

Этот блок имеет один входной порт, Сообщение CAN. Блок CAN Unpack принимает указанные входные параметры и распаковывает сигналы в сообщение.

Блок поддерживает следующие входному сигналу типы данных: single, double, int8, int16, int32, int64, uint8, uint16, uint32, uint64 и boolean. Блок не поддерживает типы данных с фиксированной точкой.

Генерация кода для развертывания моделей на целевых объектах. Генерация кода не поддерживается, если информация о вашем сигнале состоит из подписанных или беззнаковых целых чисел длиной более 32 битов.

Выход

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

Блок CAN Unpack по умолчанию имеет один выходной порт. Количество портов выхода является динамическим и зависит от количества сигналов, которые вы задаете для вывода блока. Для примера, если ваш блок имеет четыре сигнала, блок имеет четыре порта выхода.

Выбор опции Output ports добавляет к блоку выхода порт. Для получения дополнительной информации смотрите параметры Output identifier, Output timestamp, Output error, Output remote, Output length, и Output status.

Для сигналов, заданных вручную или CANdb, тип выхода сигнала по умолчанию данных double. Чтобы задать другие типы, используйте блок Signal Specification. Это позволяет блоку поддерживать следующие типы данных выходного сигнала: single, double, int8, int16, int32, int64, uint8, uint16, uint32, uint64 и boolean. Блок не поддерживает фиксированные точки.

Параметры

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

  • raw data: Выход данные как массив uint8 вектора. При выборе этой опции задаются только поля сообщений. Другие поля параметров сигнала недоступны. Эта опция открывает только один выходной порт на вашем блоке.

    Формула преобразования:

    physical_value = raw_value * Factor + Offset
    где raw_value - это распакованные значения сигналов и physical_value - масштабированное значение сигналов.

  • manually specified signals: Можно задать сигналы данных. Если вы выбираете эту опцию, используйте Signals таблица, чтобы создать ваше сообщение сигналов вручную. Количество портов выхода на вашем блоке зависит от количества сигналов, которые вы задаете. Для примера, если вы задаете четыре сигнала, ваш блок имеет четыре порта выхода.

  • CANdb specified signals: Можно задать файл базы данных CAN, который содержит сигналы данных. Если вы выбираете эту опцию, выберите файл CANdb. Количество портов выхода на вашем блоке зависит от количества сигналов, заданных в файле CANdb. Например, если выбранное сообщение в файле CANdb имеет четыре сигнала, ваш блок имеет четыре выходных порта.

Программное использование

Параметры блоков: DataFormat

Эта опция доступна, если вы задаете, что ваши данные вводятся через файл CANdb в списке Data to be output as. Нажмите кнопку Обзор, чтобы найти файл CANdb в вашей системе. Сообщения и определения сигналов, указанные в файле CANdb, заполняют раздел Message диалогового окна. Сигналы, указанные в файле CANdb, заполняются Signals таблицу. Имена файлов, которые содержат неалфавитно-цифровые символы, такие как знаки равенства, амперсанды и так далее, не являются допустимыми именами файлов базы данных CAN. В имени базы данных можно использовать периоды. Переименуйте файлы базы данных CAN с неалфавитно-цифровыми символами перед использованием.

Программное использование

Параметры блоков: CANdbFile

Эта опция доступна, если вы задаете в списке Data to be output as, что ваши данные должны быть выведены как файл CANdb, и вы выбираете файл CANdb в CANdb file поле. Вы можете выбрать сообщение, которое вы хотите просмотреть. Затем в таблице Signals отображаются подробные данные выбранного сообщения.

Программное использование

Параметры блоков: MsgList

Укажите имя для сообщения CAN. Значение по умолчанию является CAN Msg. Эта опция доступна, если вы принимаете решение вывести необработанные данные или вручную задать сигналы.

Программное использование

Параметры блоков: MsgName

Укажите, является ли ваш идентификатор сообщения CAN Standard или Extended тип. Значение по умолчанию является Standard. Стандартный идентификатор является 11-битным идентификатором, а расширенный идентификатор - 29-битным идентификатором. Эта опция доступна, если вы принимаете решение вывести необработанные данные или вручную задать сигналы. Для заданных CANdb сигналов Identifier type наследует тип из базы данных.

Программное использование

Параметры блоков: MsgIDType

Укажите идентификатор сообщения CAN. Это число должно быть целым числом от 0 до 2047 для стандартного идентификатора и от 0 до 536870911 для расширенного идентификатора. Если вы задаете -1, блок распаковывает сообщения, которые совпадают с длиной, заданной для сообщения. Можно также задать шестнадцатеричные значения при помощи hex2dec функция. Эта опция доступна, если вы принимаете решение вывести необработанные данные или вручную задать сигналы.

Программное использование

Параметры блоков: MsgIdentifier

Задайте длину сообщения CAN от 0 до 8 байт. Если вы используете CANdb specified signals для ваших выходных данных, файл CANdb определяет длину вашего сообщения. Если нет, это поле по умолчанию имеет значение 8. Эта опция доступна, если вы принимаете решение вывести необработанные данные или вручную задать сигналы.

Программное использование

Параметры блоков: MsgLength

Добавьте сигнал в таблицу сигналов.

Программное использование

Параметры блоков: AddSignal

Удалите сигнал из таблицы сигналов.

Программное использование

Параметры блоков: DeleteSignal

Если вы решите задать сигналы вручную или задать сигналы с помощью файла CANdb, появится эта таблица.

Если вы используете файл CANdb, данные в файле заполняют эту таблицу, и вы не можете редактировать поля. Для редактирования информации о сигнале переключитесь на заданные сигналы.

Если вы выбрали, чтобы задать сигналы вручную, создайте свои сигналы вручную в этой таблице. Каждый сигнал, который вы создаете, имеет следующие значения:

Name

Задайте описательное имя для вашего сигнала. Блок Simulink в вашей модели отображает это имя. Значение по умолчанию является Signal [row number].

Start bit

Задайте старт-бит данных. Этот старт-бит является наименее значимым битом, отсчитываемым от начала сообщения. Значение старта-бита должно быть целым числом от 0 до 63.

Length (bits)

Укажите количество бит, занимаемых сигналом в сообщении. Длина должна быть целым числом от 1 до 64.

Byte order

Выберите один из следующих опций:

  • LE: Где порядок байтов в маленьком эндовом формате (Intel®). В этом формате вы отсчитываете биты от наименее-значимого бита до наиболее-значимого бита. Для примера, если вы упаковываете один байт данных в маленьком эндовом формате, с старта-бита на 20, битовая таблица данных напоминает этот рисунок.

    Порядок байтов Little-Endian, отсчитываемый от наименее значимого бита до самого высокого адреса

    Image of little-endian byte order counted from least-significant bit to the highest address

  • BE: Где порядок байтов в крупноэндовом формате (Motorola®). В этом формате вы отсчитываете биты от наименее-значимого бита до наиболее-значимого бита. Например, если вы упаковываете один байт данных в формате big-endian, с стартом-битом в 20, битовая таблица данных напоминает этот рисунок.

    Порядок байтов Big-Endian, отсчитываемый от наименее значимого бита до самого низкого адреса

    Image of big-endian byte order counted from least-significant bit to lowest address

Data type

Задайте, как сигнал интерпретирует данные в выделенных битах. Выберите из:

  • signed (по умолчанию)

  • unsigned

  • single

  • double

Multiplex type

Укажите, как блок распаковывает сигналы из сообщения CAN на каждом временном шаге:

  • Standard: Сигнал распаковывается на каждом временном шаге.

  • Multiplexor: The Multiplexor сигнал или сигнал режима распакован. Можно задать только одно Multiplexor сигнал на сообщение.

  • Multiplexed: Сигнал распаковывается, если значение Multiplexor сигнал (сигнал режима) во время исполнения соответствует сконфигурированной Multiplex value этого сигнала.

Для примера сообщение имеет четыре сигнала с этими значениями.

Имя сигналаТип мультиплексораЗначение мультиплексора
Сигнал-AСтандартНе применяется
Сигнал-BМультиплексированный1
Сигнал-CМультиплексированный0
Сигнал-DМультиплексорНе применяется

В этом примере:

  • Блок распаковывает Сигнал-A (Стандартный сигнал) и Сигнал-D (Мультиплексор сигнал) на каждом временном шаге.

  • Если значение Сигнала-D равняется 1 в конкретном временном шаге, то блок распаковывает Сигнал-B вместе с Сигналом-A и Сигналом-D на этом временном шаге.

  • Если значение Сигнала-D составляет 0 в конкретном временном шаге, то блок распаковывает Сигнал-C вместе с Сигналом-A и Сигналом-D на этом временном шаге.

  • Если значение Сигнала-D не 1 или 0, блок не распаковывает ни один из Мультиплексированных сигналов на этом временном шаге.

Multiplex value

Эта опция доступна, только если вы выбрали Multiplex type, который будет Multiplexed. Предоставляемое значение должно совпадать с Multiplexor значение сигналов во время исполнения для блока, чтобы распаковать Multiplexed сигнал. Значение Multiplex value должно быть положительным целым числом или нулями.

Factor

Задайте значение Factor, примененное для преобразования неупакованного необработанного значения в физическое значение (значение сигналов). Для получения дополнительной информации смотрите формулу преобразования Data input as параметра.

Offset

Задайте значение Offset, примененное для преобразования физического значения (значения сигналов) в неупакованное необработанное значение. Для получения дополнительной информации смотрите формулу преобразования Data input as параметра.

Min, Max

Задайте область значений необработанных значений сигналов. Настройки по умолчанию -Inf (отрицательная бесконечность) и Inf, соответственно. Для CANdb specified signals эти параметры считываются из базы данных CAN. Для manually specified signals можно задать минимальное и максимальное физическое значение сигнала. По умолчанию эти настройки не фиксируют значения сигналов, которые их превышают.

Программное использование

Параметры блоков: SignalInfo

Выберите эту опцию, чтобы вывести идентификатор сообщения CAN. Тип данных этого порта - uint32.

Программное использование

Параметры блоков: IDPort

Выберите эту опцию, чтобы вывести временную метку сообщения. Это значение указывает, когда сообщение было получено, измеренное как количество секунд, прошедших с начала симуляции модели. Эта опция добавляет к блоку новый выходной порт. Тип данных этого порта - double.

Программное использование

Параметры блоков: TimestampPort

Выберите эту опцию, чтобы вывести состояние ошибки сообщения. Эта опция добавляет к блоку новый выходной порт. Выход значение 1 на этом порте указывается, что входящее сообщение является системой координат ошибки. Если выходное значение 0, ошибки нет. Тип данных этого порта - uint8.

Программное использование

Параметры блоков: ErrorPort

Выберите эту опцию, чтобы вывести сообщение о состоянии удаленной системы координат. Эта опция добавляет к блоку новый выходной порт. Тип данных этого порта - uint8.

Программное использование

Параметры блоков: RemotePort

Выберите эту опцию, чтобы вывести длину сообщения в байтах. Эта опция добавляет к блоку новый выходной порт. Тип данных этого порта - uint8.

Программное использование

Параметры блоков: LengthPort

Выберите эту опцию, чтобы вывести состояние полученного сообщения. Статус: 1 если блок получает новое сообщение и 0 если нет. Эта опция добавляет к блоку новый выходной порт. Тип данных этого порта uint8.

Программное использование

Параметры блоков: StatusPort
Введенный в R2009a