В этом примере создайте архитектуру модель мобильного робота, которая состоит из датчиков, движения и алгоритма планирования. Определите интерфейсы и соедините требования.
Захват конструкции руки робота с помощью System Composer™. Рука робота состоит из компонентов, показанных на этом предварительном эскизе.
В MATLAB® Командное окно, введите
systemcomposer
Simulink® Начальная страница откроется System Composer.
Нажмите Architecture Model.
Откроется окно редактора композиций с новой моделью архитектуры. Вы можете идентифицировать модель архитектуры по значку в левом нижнем углу и палитре компонентов в левой части.
Дважды кликните заголовок модели архитектуры и измените untitled на Robot. Имя модели обычно отражает систему, архитектура которой вы строите.
Сохраните модель.
Щелкните и перетащите компонент из левой палитры.
Переименуйте компонент в Sensors
.
Добавить Trajectory Planning
и Motion
компоненты.
Вы можете добавить порт к компоненту на любой стороне, и порт может иметь вход или выходное направление. Чтобы создать порт, наведите курсор мыши на сторону компонента. Нажмите и отпустите кнопку мыши, чтобы просмотреть опции направления. Выберите или выберите направление. Переименуйте порт с помощью имени, представляющего информацию, которая течет через этот порт.
Создайте выход порт на нижней стороне компонента Sensors. Переименуйте SensorData
.
Щелкните и перетащите линию из SensorData
выходной порт в Motion
компонент. Когда вы увидите входной порт, созданный на стороне компонента, отпустите кнопку мыши. По умолчанию этот новый порт имеет то же имя что и исходный.
Наведите на угол SensorData
линия, пока вы не увидите значок ветви.. Щелкните правой кнопкой мыши и перетащите линию ветви в Trajectory Planning
компонент.
Завершите соединения, как показано на следующем рисунке.
Корневой уровень модели архитектуры может также иметь порты, которые описывают взаимодействие системы с ее окружением. В этом примере целевое положение робота обеспечивается компьютером, внешним по отношению к самому роботу. Представление этой связи с входом портом.
Щелкните левый край модели архитектуры и введите имя порта TargetPosition
.
Соедините порт архитектуры с компонентом путем перетаскивания линии из TargetPosition
входной порт в Trajectory Planning
компонент. Соединения с портом архитектуры или из него отображаются как теги.
Задайте поток данных между компонентами путем конфигурирования интерфейса данных с типами данных, модулями, размерностями и другими атрибутами. Интерфейс может быть таким же простым, как и отправка целого значения, но это может быть также значение чисел, перечисление, комбинация чисел и строк или пакет других предопределенных интерфейсов.
Рассмотрим интерфейс между Sensors
и Motion
компоненты. Данные о датчике состоят из:
Позиционные данные от двух двигателей
Данные о близости препятствий от двух датчиков
A метки времени для захвата свежести данных
Данные имеют эти спецификации.
Имя | Тип данных | Модуль |
---|---|---|
метка времени | дважды | секунды |
position1 для мотора 1 | дважды | степени |
позицион2 для мотора 2 | дважды | степени |
расстояние 1 для датчика 1 | дважды | метры |
направление 1 для датчика 1 | дважды | степени |
расстояние 2 для датчика 2 | дважды | метры |
датчик направления2 2 | дважды | степени |
На вкладке Modeling выберите Редактор.
Нажмите кнопку, чтобы добавить интерфейс и назвать его sensordata
.
Интерфейс называется и определяется отдельно от порта компонента, а затем назначается порту.
Нажмите на SensorData
выходной порт на Sensors
компонент. В редакторе интерфейсов щелкните правой кнопкой мыши sensordata
и выберите Assign to Selected Port(s).
Если вы нажмете sensordata
снова три SensorData
порты подсвечиваются, что указывает на то, что порты связаны с этим интерфейсом.
Добавьте элемент к выбранному интерфейсу. Нажмите кнопку, чтобы добавить элемент и назвать его timestamp
.
Продолжите добавление элементов к интерфейсу в соответствии с заданным нажатием кнопки add element.
Отредактируйте свойства элемента интерфейса с помощью Property Inspector. Щелкните правой кнопкой мыши любой элемент и выберите Inspect Properties
. Откроется Property Inspector над редактором интерфейсов.
Щелкните каждый элемент интерфейса и добавьте модулей, как показано на спецификации. Щелкните раскрывающийся список рядом с кнопкой, чтобы сохранить интерфейс в словаре данных. Словарь данных позволяет вам коллективно управлять и совместно использовать набор интерфейсов между взаимосвязанными моделями. Например, позже в проекте, если вы принимаете решение смоделировать внешний компьютер как отдельную архитектурную модель, то эта модель и модель Робота могут совместно использовать один и тот же словарь данных. Здесь она сохранена как RobotDD
.
Каждый компонент может иметь свою собственную архитектуру. Дважды кликните компонент, чтобы разложить его на подкомпоненты.
Дважды кликните Trajectory Planning
компонент. Заголовок или Model Browser указывает положение компонента в иерархии модели.
Этот компонент сначала использует данные о положении двигателя, которые являются частью sensordata
интерфейс для вычисления идеального положения и команды скорости. Затем он обрабатывает информацию о расстоянии препятствий в том же интерфейсе, чтобы обусловить эту команду движения, согласно некоторым правилам безопасности.
Добавить Motion Control
и Safety Rules
компоненты как часть Trajectory Planning
архитектура.
Перетащите TargetPosition
порт к Motion Control
компонент. Добавление Command
выходной порт в Motion Control
, а затем перетащить линию в Safety Rules
компонент. Перетащите линии из SensorData
порт в Motion Control
и Safety Rules
компоненты.
Если у вас есть компонент, который представляет один функциональный модуль, которая не нуждается в дальнейшем архитектурном разложении, можно задать или ее предполагаемую, или подробную модель поведения в Simulink.
Щелкните правой кнопкой мыши по Motion Control
Компонент и выбор Create Simulink Behavior
.
Введите имя для новой модели Simulink. Выберите пустой шаблон Simulink (по умолчанию) или созданный шаблон и нажмите OK. Для получения дополнительной информации о создании собственных шаблонов Simulink, смотрите Создать шаблон из модели.
Это создает новую модель Simulink в текущей директории, преобразует компонент в ссылочный компонент (тот, который ссылается на другую модель, сохраненную как отдельный программный продукт) и добавляет значок модели Simulink с именем модели-ссылки в компоненте. Модель поведения Simulink предварительно сконфигурирована с портами из компонента в модели архитектуры. Теперь можно использовать Simulink, чтобы разработать модель поведения управления движением.
Дважды кликните Motion Control
. Добавьте блок Sum для вычитания SensorData
от TargetPosition
, и добавить блок Gain перед подключением к выходу Command
для представления простого пропорционального контроллера.
Можно также связать с существующей моделью поведения Simulink из компонента System Composer, если она уже доступна из предыдущего проекта.
Щелкните правой кнопкой мыши компонент и выберите Link to Model
.
Введите имя модели Simulink.
Любые подкомпоненты и порты, которые присутствуют в компоненте, удаляются, когда компонент соединяется с моделью Simulink. Затем компонент создается с портами, которые совпадают с портами, описанными в модели Simulink.
addComponent
| addElement
| addInterface
| addPort
| connect
| createModel
| createSimulinkBehavior
| linkToModel
| saveToDictionary
| setType