exponenta event banner

Распаковка CAN

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

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

    Набор инструментов для сети транспортных средств/CAN-связь

    Встроенный кодер/Встроенные цели/Связь с хостом

  • CAN Unpack block

Описание

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

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

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

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

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

Дополнительные сведения об этих функциях см. в разделе Проектирование модели для эффективного ускорения.

Совет

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

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

Порты

Вход

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

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

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

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

Продукция

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

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

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

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

Параметры

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

  • 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 в списке Данные для вывода как. Нажмите кнопку Обзор, чтобы найти файл CANdb в системе. Сообщения и определения сигналов, указанные в файле CANdb, заполняют раздел Message диалогового окна. Сигналы, указанные в файле CANdb, заполняют таблицу Signals. Имена файлов, содержащие не алфавитно-цифровые символы, такие как знаки равенства, амперсанды и т.д., не являются допустимыми именами файлов базы данных CAN. В имени базы данных можно использовать точки. Переименуйте файлы базы данных CAN с использованием символов, отличных от букв и цифр.

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

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

Эта опция доступна, если в списке Данные для вывода указано, что данные должны быть выведены как файл CANdb, а в поле Файл CANdb выбран файл CANdb. Можно выбрать сообщение, которое требуется просмотреть. В таблице Signals отображается подробная информация о выбранном сообщении.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Имя

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

Начальный бит

Укажите начальный бит данных. Начальный бит - это младший бит, отсчитываемый от начала сообщения. Начальный бит должен быть целым числом от 0 до 63.

Длина (биты)

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

Порядок байтов

Выберите один из следующих вариантов:

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

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

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

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

    Big-Endian Byte Order подсчитан от младшего бита до наименьшего адреса

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

Тип данных

Укажите, как сигнал интерпретирует данные в выделенных битах. Выберите один из следующих вариантов:

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

  • unsigned

  • single

  • double

Тип мультиплексора

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

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

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

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

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

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

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

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

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

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

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

Мультиплексное значение

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

Фактор

Укажите значение коэффициента, применяемое для преобразования распакованного необработанного значения в физическое значение (значение сигнала). Дополнительные сведения см. в разделе Ввод данных как формула преобразования параметров.

Смещение

Укажите значение смещения, применяемое для преобразования физического значения (значения сигнала) в распакованное исходное значение. Дополнительные сведения см. в разделе Ввод данных как формула преобразования параметров.

Мин, Макс

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

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

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

Эта опция используется для вывода идентификатора сообщения CAN. Тип данных этого порта - uint32.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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