В этом примере создайте архитектурную модель мобильного робота, состоящую из датчиков, движения и алгоритма планирования. Определите интерфейсы и свяжите требования.
Зафиксируйте конструкцию руки робота с помощью System Composer™. Рука робота состоит из компонентов, показанных на этом предварительном эскизе.

В окне команд MATLAB ® введите
systemcomposer
Откроется начальная страница Simulink ® System Composer.

Щелкните Архитектура (Architecture) Модель (Model).
Откроется окно редактора композиции с новой архитектурной моделью. Архитектурную модель можно идентифицировать по значку в левом нижнем углу и палитре компонентов в левой части.

Дважды щелкните заголовок модели архитектуры и измените название на «Робот». Имя модели, как правило, отражает систему, архитектуру которой вы строите.

Сохраните модель.
Щелкните и перетащите компонент
из левой палитры.

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

Можно добавить порт к компоненту на любой стороне, и порт может иметь направление ввода или вывода. Чтобы создать порт, наведите курсор мыши на сторону компонента. Нажмите и отпустите кнопку мыши для просмотра параметров направления. Выберите либо![]()
, либо для выбора направления. Переименуйте порт, используя имя, представляющее информацию, передаваемую через этот порт.
Создайте выходной порт на нижней стороне компонента «Сенсоры». Переименование SensorData.

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

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

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

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

Укажите поток данных между компонентами, настроив интерфейс данных с типами данных, единицами измерения, измерениями и другими атрибутами. Интерфейс может быть таким же простым, как отправка целочисленного значения, но он также может быть набором чисел, перечислением, комбинацией чисел и строк или набором других предопределенных интерфейсов.
Рассмотрим интерфейс между Sensors и Motion компоненты. Данные датчика состоят из:
Данные о положении от двух двигателей
Данные о близости препятствия от двух датчиков
Временная метка для регистрации свежести данных
Данные имеют эти спецификации.
| Имя | Тип данных | Единица |
|---|---|---|
| метка времени | дважды | секунды |
| позиции1 для двигателя 1 | дважды | степени |
| позиции2 для двигателя 2 | дважды | степени |
| расстояние 1 для датчика 1 | дважды | метры |
| направление 1 для датчика 1 | дважды | степени |
| расстояние 2 для датчика 2 | дважды | метры |
| датчик направления 2 2 | дважды | степени |
На вкладке Моделирование (Modeling) выберите Редактор интерфейсов (Interface Editor).
Нажмите
кнопку, чтобы добавить интерфейс и присвоить ему имя sensordata.
Интерфейс именуется и определяется отдельно от порта компонента, а затем назначается порту.
Щелкните значок SensorData выходной порт на Sensors компонент. В редакторе интерфейсов щелкните правой кнопкой мыши sensordata и выберите Assign to Selected Port (s).
При нажатии sensordata опять же, три SensorData порты выделяются, указывая на то, что порты связаны с этим интерфейсом.

Добавление элемента к выбранному интерфейсу. Нажмите
кнопку, чтобы добавить элемент и присвоить ему имя timestamp.
Продолжите добавление элементов в интерфейс, как указано, нажав кнопку «Добавить элемент».
Отредактируйте свойства элемента интерфейса с помощью инспектора свойств. Щелкните правой кнопкой мыши любой элемент и выберите Inspect Properties. Инспектор свойств открывается над редактором интерфейсов.
Щелкните каждый элемент интерфейса и добавьте единицы измерения, как показано в спецификации. Нажмите раскрывающийся список рядом с
кнопкой для сохранения интерфейса в словаре данных. Словарь данных позволяет осуществлять коллективное управление и совместное использование набора интерфейсов между взаимосвязанными моделями. Например, если позже в проекте будет выбрана модель внешнего компьютера как отдельная модель архитектуры, то эта модель и модель робота могут совместно использовать один и тот же словарь данных. Здесь он сохраняется как RobotDD.

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

Этот компонент сначала использует данные о положении двигателя, которые являются частью 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 (по умолчанию) или созданный шаблон и нажмите кнопку ОК. Дополнительные сведения о создании собственных шаблонов Simulink см. в разделе Создание шаблона из модели.

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

Двойной щелчок Motion Control. Добавление блока «Сумма» для вычитания SensorData от TargetPositionи добавьте блок усиления перед подключением к выходу Command для представления простого пропорционального контроллера.

Можно также связать с существующей моделью поведения Simulink из компонента System Composer, если она уже доступна из предыдущей конструкции.
Щелкните правой кнопкой мыши компонент и выберите Link to Model.
Введите имя модели Simulink.

Все субкомпоненты и порты, присутствующие в компоненте, удаляются, когда компонент связывается с моделью Simulink. Затем компонент создается с теми же портами, которые описаны в модели Simulink.
addComponent | addElement | addInterface | addPort | connect | createModel | createSimulinkBehavior | linkToModel | saveToDictionary | setType