exponenta event banner

Создание модели архитектуры

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

Визуальное представление системы

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

Diagram with arrow from the left pointing toward trajectory planning called target position, and a cycle of trajectory planning, sensors, and motion within.

Создать архитектурную модель

  1. В окне команд MATLAB ® введите

    systemcomposer

    Откроется начальная страница Simulink ® System Composer.

    Accessing a new System Composer architecture model from the Simulink start page.

  2. Щелкните Архитектура (Architecture) Модель (Model).

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

    A new untitled architecture model in System Composer.

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

    Renamed architecture model called 'Robot'.

  4. Сохраните модель.

Рисование компонентов

  1. Щелкните и перетащите компонент из левой палитры.

    Click and drag a component from the left-side palette to add it to the architecture model.

  2. Переименование компонента в Sensors.

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

    An architecture model called 'Robot' with three components

Создание портов и соединений

Можно добавить порт к компоненту на любой стороне, и порт может иметь направление ввода или вывода. Чтобы создать порт, наведите курсор мыши на сторону компонента. Нажмите и отпустите кнопку мыши для просмотра параметров направления. Выберите либоthe right arrowthe left arrow, либо для выбора направления. Переименуйте порт, используя имя, представляющее информацию, передаваемую через этот порт.

  1. Создайте выходной порт на нижней стороне компонента «Сенсоры». Переименование SensorData.

    'Robot' architecture model with a downward facing output port below the 'Sensors' component called 'Sensor Data'.

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

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

    'Robot' architecture model with a 'Sensor Data' connection out-port from the 'Sensors' component connected to two in-ports into the 'Trajectory Planning' and 'Motion' components.

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

    To the 'Robot' architecture model, add a 'Motion Command' connection from the 'Trajectory Planning' component to the 'Motion' component, and an 'Encoder' connection from the 'Motion' component to the 'Sensors' component.

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

  1. Щелкните по левому краю архитектурной модели и введите имя порта. TargetPosition.

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

    Final 'Robot' model has an architecture port connected from the 'Trajectory Planning' component to the 'Target Position' input port.

Редактировать интерфейсы

Укажите поток данных между компонентами, настроив интерфейс данных с типами данных, единицами измерения, измерениями и другими атрибутами. Интерфейс может быть таким же простым, как отправка целочисленного значения, но он также может быть набором чисел, перечислением, комбинацией чисел и строк или набором других предопределенных интерфейсов.

Рассмотрим интерфейс между Sensors и Motion компоненты. Данные датчика состоят из:

  • Данные о положении от двух двигателей

  • Данные о близости препятствия от двух датчиков

  • Временная метка для регистрации свежести данных

Данные имеют эти спецификации.

ИмяТип данныхЕдиница
метка временидваждысекунды
позиции1 для двигателя 1дваждыстепени
позиции2 для двигателя 2дваждыстепени
расстояние 1 для датчика 1дваждыметры
направление 1 для датчика 1дваждыстепени
расстояние 2 для датчика 2дваждыметры
датчик направления 2 2дваждыстепени
  1. На вкладке Моделирование (Modeling) выберите Редактор интерфейсов (Interface Editor).

  2. Нажмите кнопку, чтобы добавить интерфейс и присвоить ему имя sensordata.

    Интерфейс именуется и определяется отдельно от порта компонента, а затем назначается порту.

  3. Щелкните значок SensorData выходной порт на Sensors компонент. В редакторе интерфейсов щелкните правой кнопкой мыши sensordata и выберите Assign to Selected Port (s).

    При нажатии sensordata опять же, три SensorData порты выделяются, указывая на то, что порты связаны с этим интерфейсом.

    Model with three 'Sensor Data' ports highlighted in purple.

  4. Добавление элемента к выбранному интерфейсу. Нажмитеadd interface element кнопку, чтобы добавить элемент и присвоить ему имя timestamp.

  5. Продолжите добавление элементов в интерфейс, как указано, нажав кнопку «Добавить элемент».

  6. Отредактируйте свойства элемента интерфейса с помощью инспектора свойств. Щелкните правой кнопкой мыши любой элемент и выберите Inspect Properties. Инспектор свойств открывается над редактором интерфейсов.

    Щелкните каждый элемент интерфейса и добавьте единицы измерения, как показано в спецификации. Нажмите раскрывающийся список рядом с кнопкой для сохранения интерфейса в словаре данных. Словарь данных позволяет осуществлять коллективное управление и совместное использование набора интерфейсов между взаимосвязанными моделями. Например, если позже в проекте будет выбрана модель внешнего компьютера как отдельная модель архитектуры, то эта модель и модель робота могут совместно использовать один и тот же словарь данных. Здесь он сохраняется как RobotDD.

    The RobotDD dictionary with interface named 'sensor data' and interface elements named 'time stamp', 'direction 1', direction 2', distance 1', distance 2', 'position 1', and 'position 2.

Разложение компонентов

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

  1. Дважды щелкните значок Trajectory Planning компонент. Заголовок или браузер модели указывает положение компонента в иерархии модели.

    The inside of the 'Trajectory Planning' component shows three architecture ports called 'Target Position, 'Sensor Data', and 'Motion Command'.

    Этот компонент сначала использует данные о положении двигателя, которые являются частью sensordata интерфейс для вычисления команды идеального положения и скорости. Затем он обрабатывает информацию о расстоянии препятствия в том же интерфейсе, чтобы обусловить эту команду движения, в соответствии с некоторыми правилами безопасности.

  2. Добавить Motion Control и Safety Rules компонентов в составе Trajectory Planning архитектура.

    Перетащите элемент TargetPosition порт к Motion Control компонент. Добавить Command выходной порт в Motion Control, а затем перетащите строку в Safety Rules компонент. Перетаскивание линий из SensorData порт в Motion Control и Safety Rules компоненты.

    Port connections for the 'Trajectory Planning' component.

Реализация поведения компонента

При наличии компонента, представляющего одну функциональную единицу, которая не нуждается в дальнейшей архитектурной декомпозиции, можно определить предполагаемую или детальную модель поведения в Simulink.

  1. Щелкните правой кнопкой мыши Motion Control компонент и выберите Create Simulink Behavior.

  2. Введите имя новой модели Simulink. Выберите пустой шаблон Simulink (по умолчанию) или созданный шаблон и нажмите кнопку ОК. Дополнительные сведения о создании собственных шаблонов Simulink см. в разделе Создание шаблона из модели.

    'Create Simulink behavior' dialog with new model name specified as 'Motion Controller' from a Default Simulnk template and data dictionary RobotDD.

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

    Simulink icon in the top right of the 'Motion Control' component specifying a Simulink behavior inside.

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

    A Simulink model inside the 'Motion Control' component.

Ссылка на существующую модель поведения Simulink

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

  1. Щелкните правой кнопкой мыши компонент и выберите Link to Model.

  2. Введите имя модели Simulink.

    Link to model dialog with existing Simulink model called 'Data Processing'.

Все субкомпоненты и порты, присутствующие в компоненте, удаляются, когда компонент связывается с моделью Simulink. Затем компонент создается с теми же портами, которые описаны в модели Simulink.

См. также

Функции

Блоки

Связанные темы