Создайте модель Архитектуры

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

Визуально представьте систему

Захват конструкции руки робота с помощью System Composer™. Рука робота состоит из компонентов, показанных на этом предварительном эскизе.

Diagram with arrow from the left pointing toward trajectory planning called target position, and a cycle of trajectory planning, sensors, and motion within.

Создайте архитектурную модель

  1. В MATLAB® Командное окно, введите

    systemcomposer

    Simulink® Начальная страница откроется System Composer.

    Accessing a new System Composer architecture model from the Simulink start page.

  2. Нажмите Architecture Model.

    Откроется окно редактора композиций с новой моделью архитектуры. Вы можете идентифицировать модель архитектуры по значку в левом нижнем углу и палитре компонентов в левой части.

    A new untitled architecture model in System Composer.

  3. Дважды кликните заголовок модели архитектуры и измените untitled на Robot. Имя модели обычно отражает систему, архитектура которой вы строите.

    Renamed architecture model called 'Robot'.

  4. Сохраните модель.

Рисование компонентов

  1. Щелкните и перетащите компонент из левой палитры.

    Click and drag a component from the left-side palette to add it to the architecture model.

  2. Переименуйте компонент в Sensors.

  3. Добавить Trajectory Planning и Motion компоненты.

    An architecture model called 'Robot' with three components

Создание портов и соединений

Вы можете добавить порт к компоненту на любой стороне, и порт может иметь вход или выходное направление. Чтобы создать порт, наведите курсор мыши на сторону компонента. Нажмите и отпустите кнопку мыши, чтобы просмотреть опции направления. Выберите илиthe right arrowthe left arrow выберите направление. Переименуйте порт с помощью имени, представляющего информацию, которая течет через этот порт.

  1. Создайте выход порт на нижней стороне компонента Sensors. Переименуйте SensorData.

    'Robot' architecture model with a downward facing output port below the 'Sensors' component called 'Sensor Data'.

  2. Щелкните и перетащите линию из SensorData выходной порт в Motion компонент. Когда вы увидите входной порт, созданный на стороне компонента, отпустите кнопку мыши. По умолчанию этот новый порт имеет то же имя что и исходный.

  3. Наведите на угол SensorData линия, пока вы не увидите значок ветви.. Щелкните правой кнопкой мыши и перетащите линию ветви в Trajectory Planning компонент.

    'Robot' architecture model with a 'Sensor Data' connection out-port from the 'Sensors' component connected to two in-ports into the 'Trajectory Planning' and 'Motion' components.

  4. Завершите соединения, как показано на следующем рисунке.

    To the 'Robot' architecture model, add a 'Motion Command' connection from the 'Trajectory Planning' component to the 'Motion' component, and an 'Encoder' connection from the 'Motion' component to the 'Sensors' component.

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

  1. Щелкните левый край модели архитектуры и введите имя порта TargetPosition.

  2. Соедините порт архитектуры с компонентом путем перетаскивания линии из TargetPosition входной порт в Trajectory Planning компонент. Соединения с портом архитектуры или из него отображаются как теги.

    Final 'Robot' model has an architecture port connected from the 'Trajectory Planning' component to the 'Target Position' input port.

Редактирование интерфейсов

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

Рассмотрим интерфейс между Sensors и Motion компоненты. Данные о датчике состоят из:

  • Позиционные данные от двух двигателей

  • Данные о близости препятствий от двух датчиков

  • A метки времени для захвата свежести данных

Данные имеют эти спецификации.

ИмяТип данныхМодуль
метка временидваждысекунды
position1 для мотора 1дваждыстепени
позицион2 для мотора 2дваждыстепени
расстояние 1 для датчика 1дваждыметры
направление 1 для датчика 1дваждыстепени
расстояние 2 для датчика 2дваждыметры
датчик направления2 2дваждыстепени
  1. На вкладке Modeling выберите Редактор.

  2. Нажмите кнопку, чтобы добавить интерфейс и назвать его sensordata.

    Интерфейс называется и определяется отдельно от порта компонента, а затем назначается порту.

  3. Нажмите на SensorData выходной порт на Sensors компонент. В редакторе интерфейсов щелкните правой кнопкой мыши sensordata и выберите Assign to Selected Port(s).

    Если вы нажмете sensordata снова три SensorData порты подсвечиваются, что указывает на то, что порты связаны с этим интерфейсом.

    Model with three 'Sensor Data' ports highlighted in purple.

  4. Добавьте элемент к выбранному интерфейсу. Нажмите кнопкуadd interface element, чтобы добавить элемент и назвать его timestamp.

  5. Продолжите добавление элементов к интерфейсу в соответствии с заданным нажатием кнопки add element.

  6. Отредактируйте свойства элемента интерфейса с помощью Property Inspector. Щелкните правой кнопкой мыши любой элемент и выберите Inspect Properties. Откроется Property Inspector над редактором интерфейсов.

    Щелкните каждый элемент интерфейса и добавьте модулей, как показано на спецификации. Щелкните раскрывающийся список рядом с кнопкой, чтобы сохранить интерфейс в словаре данных. Словарь данных позволяет вам коллективно управлять и совместно использовать набор интерфейсов между взаимосвязанными моделями. Например, позже в проекте, если вы принимаете решение смоделировать внешний компьютер как отдельную архитектурную модель, то эта модель и модель Робота могут совместно использовать один и тот же словарь данных. Здесь она сохранена как RobotDD.

    The RobotDD dictionary with interface named 'sensor data' and interface elements named 'time stamp', 'direction 1', direction 2', distance 1', distance 2', 'position 1', and 'position 2.

Разложение компонентов

Каждый компонент может иметь свою собственную архитектуру. Дважды кликните компонент, чтобы разложить его на подкомпоненты.

  1. Дважды кликните Trajectory Planning компонент. Заголовок или Model Browser указывает положение компонента в иерархии модели.

    The inside of the 'Trajectory Planning' component shows three architecture ports called 'Target Position, 'Sensor Data', and 'Motion Command'.

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

  2. Добавить Motion Control и Safety Rules компоненты как часть Trajectory Planning архитектура.

    Перетащите TargetPosition порт к Motion Control компонент. Добавление Command выходной порт в Motion Control, а затем перетащить линию в Safety Rules компонент. Перетащите линии из SensorData порт в Motion Control и Safety Rules компоненты.

    Port connections for the 'Trajectory Planning' component.

Реализуйте поведение компонента

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

  1. Щелкните правой кнопкой мыши по Motion Control Компонент и выбор Create Simulink Behavior.

  2. Введите имя для новой модели Simulink. Выберите пустой шаблон Simulink (по умолчанию) или созданный шаблон и нажмите OK. Для получения дополнительной информации о создании собственных шаблонов Simulink, смотрите Создать шаблон из модели.

    'Create Simulink behavior' dialog with new model name specified as 'Motion Controller' from a Default Simulnk template and data dictionary RobotDD.

    Это создает новую модель Simulink в текущей директории, преобразует компонент в ссылочный компонент (тот, который ссылается на другую модель, сохраненную как отдельный программный продукт) и добавляет значок модели Simulink с именем модели-ссылки в компоненте. Модель поведения Simulink предварительно сконфигурирована с портами из компонента в модели архитектуры. Теперь можно использовать Simulink, чтобы разработать модель поведения управления движением.

    Simulink icon in the top right of the 'Motion Control' component specifying a Simulink behavior inside.

  3. Дважды кликните Motion Control. Добавьте блок Sum для вычитания SensorData от TargetPosition, и добавить блок Gain перед подключением к выходу Command для представления простого пропорционального контроллера.

    A Simulink model inside the 'Motion Control' component.

Ссылка на существующую модель поведения Simulink

Можно также связать с существующей моделью поведения Simulink из компонента System Composer, если она уже доступна из предыдущего проекта.

  1. Щелкните правой кнопкой мыши компонент и выберите Link to Model.

  2. Введите имя модели Simulink.

    Link to model dialog with existing Simulink model called 'Data Processing'.

Любые подкомпоненты и порты, которые присутствуют в компоненте, удаляются, когда компонент соединяется с моделью Simulink. Затем компонент создается с портами, которые совпадают с портами, описанными в модели Simulink.

См. также

Функции

Блоки

Похожие темы