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