Создайте коммуникацию CAN модели Simulink

Создайте часть передачи сообщения модели

Этот раздел показывает, как создать часть модели, чтобы передать сообщения CAN, с помощью блоков Vehicle Network Toolbox™ с другими блоками в Simulink® библиотека.

Создавание модели, чтобы передать сообщения CAN детализировано в следующих шагах:

Для этого фрагмента примера

  • Используйте MathWorks виртуальный канал CAN, чтобы передать сообщения.

  • Используйте блок CAN Configuration, чтобы сконфигурировать ваш канал CAN.

  • Используйте блок Constant (Simulink), чтобы предоставить данные блоку CAN Pack.

  • Используйте блок CAN Transmit, чтобы отправить данные в виртуальный канал CAN.

Используйте этот раздел со Сборкой, сообщение Получает Часть Модели и Сохраняет и Запуск Модель, чтобы создать вашу полную модель и запустить симуляцию.

Шаг 1: создайте новую модель

  1. Чтобы запустить Simulink и создать новую модель, введите следующее в MATLAB® командная строка:

    simulink

    В диалоговом окне начальной страницы Simulink нажмите Blank Model, и затем Create Model. Пустое окно Editor открывается.

  2. Во вкладке Simulation панели инструментов Редактора нажмите Save> Save As, чтобы присвоить имя к вашей новой модели.

Шаг 2: откройте библиотеку блоков

  1. Во вкладке Simulation панели инструментов редактора моделей нажмите Library Browser.

  2. Браузер Библиотеки Simulink открывается. Его левая панель содержит дерево доступных библиотек блоков в алфавитном порядке. Расширьте Vehicle Network Toolbox узел и нажимает CAN Communication.

Шаг 3: перетащите блоки Vehicle Network Toolbox в модель

Чтобы поместить блок в вашу модель, кликните по блоку в библиотеке и перетащите его в редактор. В данном примере вам нужен в вашей модели один экземпляр каждый из следующих блоков:

  • CAN Configuration

  • CAN Pack

  • CAN Transmit

Примечание

Настройка по умолчанию каждого блока в вашей модели использует MathWorks Virtual 1 Channel 1. Можно сконфигурировать блоки в модели, чтобы использовать виртуальные каналы или аппаратные устройства от других поставщиков.

Примечание

По умолчанию имена блока не показывают в модели. Чтобы отобразить имена блока при работе в редакторе моделей, во вкладке Format панели инструментов нажимают Auto и очищают выбор Hide Automatic Block Names.

Шаг 4: перетащите другие блоки, чтобы завершить модель

Этот пример использует блок Constant (Simulink) в качестве источника данных. От библиотеки Simulink> Commonly Used Blocks добавьте блок Constant (Simulink) в свою модель.

Шаг 5: соедините блоки

Установите связь между блоком Constant и входом блока CAN Pack. Когда вы перемещаете указатель около выходного порта блока Constant, указатель становится перекрестием. Кликните по выходному порту блока Constant и, удержав кнопку мыши, перетащите указатель на входной порт блока CAN Pack. Затем отпустите кнопку.

Таким же образом установите связь между выходным портом блока CAN Pack и входным портом блока CAN Transmit.

Блок CAN Configuration не соединяется ни с каким другим блоком. Этот блок конфигурирует свой канал CAN для коммуникации.

Шаг 6: задайте значения параметров блоков

Вы устанавливаете параметры для каждого блока в вашей модели путем двойного клика по блоку.

Сконфигурируйте Блок Configuration CAN.  Дважды кликните блок CAN Configuration, чтобы открыть его диалоговое окно параметров. Проверьте или установите следующие параметры:

  • Device к MathWorks Virtual 1 (Channel 1).

  • Bus speed к 500000.

  • Acknowledge Mode к Normal.

  • Нажать ОК.

Сконфигурируйте Блок Пакета CAN.  Дважды кликните блок CAN Pack, чтобы открыть его диалоговое окно параметров. Проверьте или установите следующие параметры:

  • Data is input as к raw data.

  • Name к значению по умолчанию CAN Msg.

  • Identifier type к Standard (11-bit identifier) по умолчанию ввод.

  • Identifier к 500.

  • Length (bytes) к длине по умолчанию 8.

  • Нажать ОК.

Сконфигурируйте Блок Передачи CAN.  Дважды кликните блок CAN Transmit, чтобы открыть его диалоговое окно параметров. Проверьте или установите следующие параметры:

  • Device к MathWorks Virtual 1 (Channel 1).

    Нажать ОК.

Сконфигурируйте Постоянный Блок.  Дважды кликните блок Constant, чтобы открыть его диалоговое окно параметров.

На вкладке Main, наборе:

  • Constant value к [1 2 3 4 5 6 7 8].

  • Sample time к 0.01 секунды.

На вкладке Signal Attributes, наборе:

  • Output data type к uint8.

    Нажать ОК.

Ваша модель выглядит так фигура.

Model for basic CAN transmission

Сборка сообщение получает часть модели

Этот раздел показывает, как создать часть модели, чтобы получить сообщения CAN, с помощью блоков Vehicle Network Toolbox с другими блоками в Библиотеке Simulink. Этот пример иллюстрирует, как получить данные через сеть CAN в следующих шагах:

Для этого фрагмента примера

  • Используйте MathWorks виртуальный канал CAN, чтобы получить сообщения.

  • Используйте блок CAN Configuration, чтобы сконфигурировать ваш виртуальный канал CAN.

  • Используйте блок CAN Receive, чтобы получить сообщение.

  • Используйте блок Function-Call Subsystem (Simulink), который содержит блок CAN Unpack. Эта функция берет данные из блока CAN Receive и использует параметры блока CAN Unpack, чтобы распаковать ваши данные о сообщении.

  • Используйте блок Scope (Simulink), чтобы отобразить принятые данные.

Шаг 7: перетащите блоки Vehicle Network Toolbox в модель

Для этой части примера начните с одного экземпляра каждый из следующих блоков из Коммуникационной библиотеки блоков CAN Vehicle Network Toolbox:

  • CAN Configuration

  • CAN Receive

Совет

Сконфигурируйте отдельные каналы CAN для блоков CAN Transmit и CAN Receive. Каждому каналу нужен его собственный блок CAN Configuration.

Шаг 8: перетащите другие блоки, чтобы завершить модель

Используйте блок Function-Call Subsystem из библиотеки блоков Ports & Subsystems Simulink, чтобы создать вашу подсистему пакета сообщения CAN.

  1. Перетащите блок Function-Call Subsystem в модель.

  2. Дважды кликните блок Function-Call Subsystem, чтобы открыть редактор подсистемы.

  3. Дважды кликните метку порта In1, чтобы переименовать его в CAN Msg.

  4. Дважды кликните метку порта Out1, чтобы переименовать его в Data.

  5. Перетащите мышью блок CAN Unpack из библиотеки блоков Vehicle Network Toolbox в эту подсистему. Если помещено между линиями ввода и вывода, они автоматически соединятся.

    Внутренняя часть вашего блока Function-Call Subsystem должна теперь выглядеть так фигура.

    Function call subsystem to unpack a message

    Причина поместить CAN Unpack в Function-Call Subsystem состоит в том так, чтобы это могло получить все возможные сообщения.

  6. Кликните по стрелке назад в панели инструментов, чтобы возвратиться к вашему представлению модели.

Шаг 9: соедините блоки

  1. Переименуйте блок Function-Call Subsystem в CAN Unpack Subsystem.

  2. Соедините выходной порт CAN Msg блока CAN Receive к входному порту In1 блока CAN Unpack Subsystem.

  3. Соедините выходной порт f() блока CAN Receive к входному порту function() блока CAN Unpack Subsystem.

  4. Для отображения результатов симуляции перетащите блок Scope (Simulink) из библиотеки блока Simulink в вашу модель.

  5. Соедините выходной порт CAN Msg своего блока CAN Unpack Subsystem к входному порту блока Scope.

    Блок CAN Configuration не соединяется ни с каким другим блоком. Этот блок конфигурирует канал CAN, используемый блоком CAN Receive, чтобы получить сообщение CAN.

Ваша модель выглядит так фигура.

Model to transmit and receive CAN messages

Шаг 10: задайте значения параметров блоков

Установите параметры для блоков в вашей модели путем двойного клика по блоку.

Сконфигурируйте Блок CAN Configuration1.  Дважды кликните блок CAN Configuration, чтобы открыть его диалоговое окно параметров. Набор:

  • Device к MathWorks Virtual 1 (Channel 2).

  • Bus speed к 500000.

  • Acknowledge Mode к Normal.

    Нажмите OK.

Сконфигурируйте CAN, Получают Блок.  Дважды кликните блок CAN Receive, чтобы открыть его диалоговое окно Parameters. Набор:

  • Device к MathWorks Virtual 1 (Channel 2).

  • Sample time к 0.01.

  • Number of messages received at each timestep к all.

    Нажмите OK.

Сконфигурируйте CAN, Распаковывают Подсистему.  Дважды кликните CAN Распаковывают подсистему, чтобы открыть редактор Подсистемы вызова функций. В модели дважды кликните блок CAN Unpack, чтобы открыть его диалоговое окно параметров. Набор:

  • Data to be output as к raw data.

  • Name к значению по умолчанию CAN Msg.

  • Identifier type к Standard (11-bit identifier) по умолчанию.

  • Identifier к 500.

  • Length (bytes) к длине по умолчанию 8.

    Нажмите OK.

Сохраните и запустите модель

Этот раздел показывает вам, как сохранить модель, которую вы создали, Сборка Часть Передачи сообщения Модели и Сборки, сообщение Получает Часть Модели.

Шаг 11: сохраните модель

Прежде чем вы запустите симуляцию, сохраните вашу модель путем нажатия на значок Save или выбора Save из вкладки Simulation панели инструментов Редактора.

Шаг 12: измените параметры конфигурации

  1. В вашей вкладке Modeling панели инструментов редактора моделей нажмите Model Settings. Диалоговое окно Configuration Parameters открывается.

  2. В разделе Solver Options выберите:

    • Фиксированный шаг от списка Type.

    • Дискретный (никакие непрерывные состояния) из списка Solver.

Шаг 13: запустите симуляцию

Чтобы запустить симуляцию, нажмите кнопку Run во вкладке Simulation или Modeling панели инструментов Редактора.

Когда вы запускаете симуляцию, блок CAN Transmit получает сообщение от блока CAN Pack. Это затем передает его через Виртуальный Канал 1. Блок CAN Receive на Виртуальном Канале 2 получает это сообщение и вручает, это к CAN Распаковывает блок Subsystem, чтобы распаковать сообщение.

Во время симуляции строка состояния в нижней части окна модели обновляет прогресс симуляции.

Шаг 14: просмотрите результаты

Дважды кликните блок Scope, чтобы просмотреть передачу сообщения на графике. Если вы не видите все данные по графику, нажимаете кнопку на панели инструментов Autoscale, которая автоматически масштабирует оси, чтобы отобразить все сохраненные данные моделирования.

Scope block display of received CAN messages

В графике горизонтальная ось представляет время симуляции в секундах, и вертикальная ось представляет значение принятых данных. Вы сконфигурировали модель, чтобы упаковать и передать массив постоянных значений, [1 2 3 4 5 6 7 8], каждые 0,01 секунды времени симуляции. Эти значения получены и распакованы. Выход в окне Scope представляет значения принятых данных.

Похожие темы