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

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

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

Построение модели для передачи сообщений CAN описывается следующими шагами:

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

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

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

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

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

Используйте этот раздел с Build the Message Receive Part of the Model и Save and Run the Model, чтобы создать полную модель и запустить симуляцию.

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

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

    simulink

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

  2. На вкладке < reservedrangesplaceholder2 > панели инструментов нажмите Save > Save As, чтобы назначить имя новой модели.

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

  1. На вкладке панели инструментов model Editor 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 > Обычно используемые блоки добавьте к модели Constant блок (Simulink).

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

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

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

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

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

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

Сконфигурируйте блок строения 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 Transmit.  Дважды кликните блок CAN Transmit, чтобы открыть диалоговое окно его параметров. Проверьте или установите следующие параметры:

  • Device с MathWorks Virtual 1 (Channel 1).

    Нажмите кнопку ОК.

Сконфигурируйте блок Constant Block.  Дважды кликните блок 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 следующими шагами:

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

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

  • Используйте блок CAN Configuration для настройки виртуального канала CAN.

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

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

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

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

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

  • CAN Configuration

  • CAN Receive

Совет

Сконфигурируйте отдельные каналы CAN для блоков CAN Receive и CAN Transmit. Каждому каналу нужен свой 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: Задайте значения Параметров блоков

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

Сконфигурируйте блок Configuration1 CAN.  Дважды кликните блок 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 Unpack Subsystem.  Дважды кликните CAN Unpack Subsystem, чтобы открыть редактор Подсистема Вызова Функций. В модели дважды кликните блок 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 панели инструментов Editor.

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

  1. В редакторе моделей панели инструментов вкладке Modeling нажмите Model Settings. Откроется диалоговое окно Параметры конфигурации (Configuration Parameters).

  2. В разделе «Опции решателя» выберите:

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

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

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

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

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

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

Шаг 14: Просмотр результатов

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

Scope block display of received CAN messages

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

Похожие темы