В этом примере создайте модель архитектуры мобильного робота, который состоит из датчиков, движения и алгоритма планирования. Задайте интерфейсы и соедините требования.
Получите конструкцию манипулятора с помощью System Composer™. Манипулятор состоит из компонентов, показанных в этом предварительном эскизе.
В Командном окне MATLAB® ввести
systemcomposer
Simulink® Start Page открывается к System Composer.
Нажмите Architecture Model.
Редактор состава окно открывается новой моделью архитектуры. Можно идентифицировать модель архитектуры значком в левом нижнем углу и палитре элементов на левой стороне.
Дважды кликните заголовок модели архитектуры и измените untitled в Robot. Имя модели обычно отражает систему, архитектуру которой вы создаете.
Сохраните модель.
Перетащите Component из палитры левой стороны.
Переименуйте компонент в Sensors
.
Добавьте Trajectory Planning
и Motion
компоненты.
Можно добавить порт в компонент на любой стороне, и порт может иметь любого направление ввода или вывода. Чтобы создать порт, приостановите курсор мыши по стороне компонента. Кликните и отпустите кнопку мыши, чтобы просмотреть опции направления. Выберите или или выбрать направление. Переименуйте порт с помощью имени, которое является представительным для получения информации, которая течет через тот порт.
Создайте выходной порт на нижней стороне компонента Датчиков. Переименуйте его SensorData
.
Перетащите линию от SensorData
выходной порт к Motion
компонент. Когда вы видите входной порт, созданный в стороне компонента, отпускаете кнопку мыши. По умолчанию этот новый порт имеет то же имя как исходный порт.
Наведите в углу SensorData
линия, пока вы не видите значок ветви.. Щелкните правой кнопкой и перетащите ответвление к Trajectory Planning
компонент.
Полные связи как показано в следующем рисунке.
Корневой уровень модели архитектуры может также иметь порты, которые описывают взаимодействие системы с ее средой. В этом примере целевое положение для робота обеспечивается компьютером, внешним к самому роботу. Представляйте это отношение входным портом.
Кликните по левому краю модели архитектуры и введите имя порта TargetPosition
.
Соедините порт архитектуры с компонентом путем перетаскивания линии от TargetPosition
входной порт к Trajectory Planning
компонент. Связи с или от порта архитектуры появляются как теги.
Задайте поток данных между компонентами путем конфигурирования интерфейса данных с типами данных, модулями, размерностями и другими атрибутами. Интерфейс может быть столь же простым как отправка целочисленного значения, но это может также быть набор чисел, перечисления, комбинации чисел и строк или пакета других предопределенных интерфейсов.
Рассмотрите интерфейс между Sensors
и Motion
компоненты. Данные о датчике состоят из:
Данные о положении из двух двигателей
Данные о близости препятствия из двух датчиков
Метка времени, чтобы получить свежесть данных
Данные имеют эти технические требования.
Имя | Тип данных | Модуль |
---|---|---|
метка времени | 'double' | секунды |
position1 для моторного 1 | 'double' | степени |
position2 для моторных 2 | 'double' | степени |
distance1 для датчика 1 | 'double' | метры |
direction1 для датчика 1 | 'double' | степени |
distance2 для датчика 2 | 'double' | метры |
датчик direction2 2 | 'double' | степени |
Во вкладке Modeling выберите Interface Editor.
Нажмите кнопку, чтобы добавить интерфейс и назвать ее sensordata
.
Интерфейс называют и задают отдельно от порта компонента и затем присваивают порту.
Нажмите SensorData
выходной порт на Sensors
компонент. В Интерфейсном Редакторе щелкните правой кнопкой по sensordata
и выберите Assign to Selected Port(s).
Если вы нажимаете sensordata
снова, три SensorData
порты подсвечены, указав, что порты сопоставлены с тем интерфейсом.
Добавьте элемент в выбранный интерфейс. Нажмите кнопку, чтобы добавить элемент и назвать ее timestamp
.
Продолжите добавлять элементы в интерфейс, как задано путем нажимания добавить кнопки элемента.
Отредактируйте свойства интерфейсного элемента с помощью Property Inspector. Щелкните правой кнопкой по любому элементу и выберите Inspect Properties
. Property Inspector открывается выше Интерфейсного Редактора.
Кликните по каждому интерфейсному элементу и добавьте модули как показано в спецификации. Кликните по выпадающему рядом с кнопкой, чтобы сохранить интерфейс в словарь данных. Словарь данных позволяет вам коллективно управлять и совместно использовать набор интерфейсов среди взаимосвязанных моделей. Например, позже в проекте, если вы принимаете решение смоделировать внешний компьютер как отдельную модель архитектуры, затем эта модель и модель Robot могут совместно использовать тот же словарь данных. Здесь это сохранено как 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