В этом примере создайте модель архитектуры мобильного робота, который состоит из датчиков, движения и алгоритма планирования. Задайте интерфейсы и соедините требования.
Получите конструкцию манипулятора с помощью System Composer™. Манипулятор состоит из компонентов, показанных в этом предварительном эскизе.
В Командном окне MATLAB® ввести
systemcomposer
Начальная страница Simulink открывается к System Composer.
Нажмите Architecture Model.
Редактор состава окно открывается новой моделью архитектуры. Можно идентифицировать модель архитектуры значком в левом нижнем углу и палитре элементов на левой стороне.
Дважды кликните заголовок модели архитектуры и измените untitled в Robot. Имя модели обычно отражает систему, архитектуру которой вы создаете.
Сохраните модель.
Перетащите Component из палитры левой стороны.
Переименуйте компонент в Sensors.
Добавьте компоненты Motion и Trajectory Planning.
Можно добавить порт в компонент на любой стороне, и порт может иметь любого направление ввода или вывода. Чтобы создать порт, приостановите курсор мыши по стороне компонента. Кликните и отпустите кнопку мыши, чтобы просмотреть опции направления. Выберите или или выбрать направление. Переименуйте порт с помощью имени, которое является представительным для получения информации, которая течет через тот порт.
Создайте выходной порт на нижней стороне компонента Датчиков. Переименуйте его 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 до компонентов Safety Rules и Motion Control.
Если у вас есть компонент, который представляет один функциональный блок, для которого не нужно дальнейшее архитектурное разложение, можно задать или его намеченную или подробную модель поведения в 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.