Смоделируйте систему лифта при помощи атомарных подграфиков

В этом примере показано, как смоделировать 2D автомобильную систему лифта при помощи соединенных атомарных подграфиков в Stateflow®. Система лифта состоит из модели Simulink® и пользовательского интерфейса (UI). Модель содержит две диаграммы Stateflow:

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

  • Контроллер пользовательского интерфейса информация о процессах из Системного графика Лифта и обновлений отображение пользовательского интерфейса. В этом графике каждый атомарный подграфик определяет, когда переместить автомобиль лифта и когда открыть его двери.

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

Справьтесь с запросами от пользовательского интерфейса

Системный график Лифта состоит из трех параллельных подграфиков. Каждый из этих подграфиков управляет очередью запросов от пользовательского интерфейса:

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

  • Elevator_A и Elevator_B представляйте логику для двух автомобилей лифта. Каждый автомобиль имеет свою собственную очередь, которая содержит все его запросы пола. Запросы пола сгенерированы, когда вы нажимаете кнопку в автомобиле лифта или когда Elevator_Manager делегирует запрос от очереди Холла к автомобилю.

Шаблоны логики повторного использования при помощи атомарных подграфиков

Автомобили лифта используют идентичную логику, чтобы обработать их отдельные очереди запроса. Системный график Лифта моделирует их поведение при помощи соединенных атомарных подграфиков из модели библиотеки.

В модели библиотеки, графике Elevator реализует логику для типового автомобиля лифта. Программировать подграфики Elevator_A и Elevator_B так, чтобы они управляли соответствующим автомобилем, вы сопоставляете данные и события в каждом подграфике к соответствующим данным и события в основном графике. Например, для Elevator_B:

  • Вход floor_request подграфика карты к входу CarB_floor_request графика.

  • Подграфик выход position карты к графику выход B_position.

  • Подграфик выход doorOpen карты к графику выход doorBOpen.

  • Событие CAR_CALL подграфика карты к событию CAR_CALL_B графика.

Чтобы видеть отображения для каждого атомарного подграфика, щелкните правой кнопкой по подграфику и выберите Subchart Mappings.

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

Для получения дополнительной информации об использовании атомарных подграфиков, чтобы инкапсулировать и снова использовать логику, смотрите, Создают Допускающие повторное использование Субкомпоненты при помощи Атомарных Подграфиков.

Включите атомарные подграфики в свой проект

Модель в этом примере является перепроектированной версией более старой модели, которая не использует атомарные подграфики. Отдельные подграфики исходного использования модели, чтобы справиться с запросами пола (подстроит диаграмму Elevator_A и Elevator_B из Системного графика Лифта) и управлять отображением пользовательского интерфейса автомобилей лифта (подстроит диаграмму CarA_Controller и CarB_Controller из Контроллера пользовательского интерфейса график). В каждом случае подграфики являются почти идентичными копиями друг друга. Они отличаются только по именам данных и событий, которые они используют.

Чтобы преобразовать дублирующиеся подграфики в атомарные подграфики, сначала сделайте библиотеку атомарным подграфиком из одного из подграфиков. Затем используйте соединенные экземпляры этой библиотеки, чтобы заменить дублирующиеся подграфики. Например, рассмотрите дублирующиеся автомобильные подграфики лифта Системного графика Лифта. Эти подграфики вызывают несколько функций и локальных переменных, которые заданы в Elevator_Manager подграфик. Прежде, чем создать атомарный подграфик, необходимо сделать эти подграфики независимыми и автономными модулями.

1. Переместите эти функции от Elevator_Manager подграфик в вышестоящую диаграмму:

  • exists_in_queue

  • deregister

  • dequeue

Переименуйте эти функции, чтобы отличить их от функций в автомобильных подграфиках лифта.

2. Используя Model Explorer, переместите эти переменные из Elevator_Manager подграфик в вышестоящую диаграмму:

  • hall_call_queue

  • hall_call_status

3. В Системном графике Лифта, набор свойство диаграммы Функций Уровня Графика Экспорта к true. Для получения дополнительной информации смотрите Экспорт Функции Stateflow для Повторного использования.

4. Измените Elevator_Manager и Elevator_A подграфики, чтобы использовать перемещенные функции и переменные.

5. Создайте библиотеку атомарный подграфик из Elevator_A подстройте диаграмму, как описано в Повторном использовании состояние Многократно в Графике.

6. Чтобы позволить атомарному подграфику передать положение автомобиля лифта к содержанию графика, измените Осциллограф данных о подграфике position от Local к Output.

7. Замените два подграфика лифта на соединенный атомарный подграфик. Для каждого соединенного атомарного подграфика сопоставьте данные и события к вышестоящей диаграмме. Для получения дополнительной информации смотрите Переменные Карты для Атомарных Подграфиков и Полей.

Похожие темы