В этом примере создайте модель архитектуры мобильного робота, который состоит из датчиков, движения и алгоритма планирования. Задайте интерфейсы и соедините требования.
Получите конструкцию манипулятора с помощью 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