Образцовый контроллер скорострельного оружия при помощи таблицы изменения состояния

Таблица изменения состояния является альтернативным способом выразить последовательную модальную логику. Вместо того, чтобы чертить состояния и переходы графически в графике Stateflow®, используйте таблицы переходов состояний, чтобы выразить модальную логику в табличном формате. Таблицы переходов состояний поддерживаются только как блоки в модели Simulink®. Для получения дополнительной информации смотрите Таблицы переходов состояний в Stateflow.

Конструктивные требования

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

  • Высокая температура не может превысить 25 градусов Цельсия.

  • Низкая температура не может упасть ниже 23 градусов Цельсия.

  • Установившаяся операция требует периода прогрева 10 секунд.

  • Когда сигнал тревоги звучит, бойлер должен сразу закрыться.

  • Когда звуки сигнала отбоя, бойлер может включить снова.

Идентифицируйте системные атрибуты

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

Рабочие режимы

Высокоуровневые рабочие режимы для бойлера:

  • Нормальное функционирование, когда никакой сигнал тревоги не звучит.

  • Сигнальное состояние, во время сигнала тревоги.

Во время нормального функционирования бойлер может быть в одном из трех состояний:

  • Прочь, когда температура выше 25 градусов Цельсия.

  • Прогрев, в течение первых 10 секунд того, чтобы быть включенного.

  • На, установившийся после 10 секунд прогрева, когда температура ниже 23 градусов Цельсия.

Требования к данным

Контроллер скорострельного оружия требует следующих данных.

ОсциллографОписаниеИмя переменной
Входной параметрСетбол высокой температурыreference_high
Входной параметрНизкий температурный сетболreference_low
Входной параметрСигнальный индикаторALARM
Входной параметрИндикатор отбояCLEAR
Входной параметрТекущая температура бойлераtemp
ЛокальныйИндикатор, что бойлер завершил прогревdoneWarmup
Вывод Команда, чтобы установить режим бойлера: прочь, прогрев, или наboiler_cmd

Создайте контроллер или используйте предоставленную модель

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

Составьте новую таблицу изменения состояния

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

  1. Откройте частично созданную модель котельной установка.

    Эта модель содержит все необходимые блоки Simulink, за исключением контроллера скорострельного оружия.

  2. Удалите эти пять выходных портов и один входной порт.

  3. Откройте Браузер Библиотеки путем выбора View> Library Browser.

  4. На левой панели Браузера Библиотеки выберите библиотеку Stateflow, затем перетащите блок State Transition Table от правой панели в вашу модель бойлера.

    Ваша модель выглядит так модель.

  5. Закройте браузер библиотеки.

Теперь вы готовы добавить состояния и иерархию к таблице изменения состояния.

Добавьте состояния и иерархию

Чтобы представлять рабочие режимы бойлера, добавьте состояния и иерархию к таблице изменения состояния.

  1. Откройте таблицу изменения состояния.

  2. Представляйте высокоуровневые рабочие режимы: нормальный и предупреждение.

    1. Дважды кликните state1 и переименуйте его Normal.

    2. Дважды кликните state2 и переименуйте его Alarm.

  3. Представляйте три состояния нормального функционирования как подсостояния Normal:

    1. Щелкните правой кнопкой по состоянию Normal, выберите Insert Row> Child State Row и назовите новый Off состояния.

    2. Повторный шаг еще два времена, чтобы создать дочерний элемент утверждает Warmup и On в том порядке.

    По умолчанию, когда существует неоднозначность, верхняя часть, исключительная (OR), состояние на каждом уровне иерархии становится активным сначала. Поэтому Normal и состояния Off появляются с переходами по умолчанию. Эта настройка соответствует конструктивным требованиям для этой модели. Чтобы установить состояние по умолчанию, щелкните правой кнопкой по состоянию и выберите Set to default.

Ваша таблица изменения состояния выглядит так таблица.

Теперь вы готовы задать действия для каждого состояния.

Задайте акты государственной власти

Чтобы описать поведение, которое происходит в каждом состоянии, задайте акты государственной власти в таблице. В этом осуществлении вы инициализируете режимы работы, когда бойлер вводит нормальные и сигнальные состояния, с помощью переменных boiler_cmd и doneWarmup (описанный в Требованиях к данным).

  1. В следующих состояниях щелкните после имени состояния, нажмите Enter и введите заданные действия записи.

    В состоянии:Ввод:Получившееся поведение
    Off
    entry:
    boiler_cmd = 0;
    doneWarmup = false;
    Выключает бойлер и указывает, что бойлер не нагрелся.
    Warmup
    entry:
    boiler_cmd = 2;
    Начинает нагревать бойлер.
    On
    entry:
    boiler_cmd = 1;
    Включает бойлер.
    Alarm
    entry:
    boiler_cmd = 0;
    Выключает бойлер.
  2. Сохраните таблицу изменения состояния.

Ваша таблица изменения состояния выглядит так таблица.

Теперь вы готовы задать условия и действия для перехода от одного состояния до другого состояния.

Задайте условия перехода и действия

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

  1. В Normal утверждают строку, введите:

    если
    [ALARM]
     
    Alarm

    Во время симуляции:

    1. Когда сначала вводимый, график активирует состояние Normal.

    2. На каждом временном шаге, циклах нормального функционирования через Off, Warmup и состояния On, пока условие ПРЕДУПРЕЖДЕНИЯ не верно.

    3. Когда условие ПРЕДУПРЕЖДЕНИЯ верно, переходы бойлера к Alarm утверждают, и сразу закрывается.

  2. В Off утверждают строку, введите:

    если
    [temp <= reference_low]
     
    Warmup

    Во время симуляции, когда текущая температура бойлера опускается ниже 23 градусов Цельсия, бойлер начинает нагреваться.

  3. В Warmup утверждают строку, введите:

    еслиеще - если
    [doneWarmup][after(10, sec)]
     {doneWarmup = true;}
    OnOn

    Во время симуляции бойлер нагревается в течение 10 секунд и затем переходов к состоянию On.

  4. В On утверждают строку, введите:

    если
    [temp >= reference_high]
     
    Off

    Во время симуляции, когда текущая температура бойлера повышается выше 25 градусов Цельсия, выключается бойлер.

  5. В Alarm утверждают строку, введите:

    если
    [CLEAR]
     
    Normal

    Во время симуляции, когда условие отбоя верно, бойлер возвращается к режиму normal mode.

  6. Сохраните таблицу изменения состояния.

Ваша таблица изменения состояния выглядит так таблица.

Теперь вы готовы добавить определения данных с помощью Мастера Символа.

Задайте данные

Когда вы составляете таблицу изменения состояния, которая использует синтаксис MATLAB, существуют требования языка для генерации кода C/C++. Одно из этих требований - то, что вы задаете размер, введите, и сложность всех переменных MATLAB так, чтобы их свойства могли быть определены во время компиляции. Даже при том, что вы явным образом еще не задали данные в своей таблице изменения состояния, можно использовать Мастер Символа. Во время симуляции Мастер Символа предупреждает вас к неразрешенным символам, выводит их свойства и добавляет недостающие данные в вашу таблицу.

  1. В меню редактора моделей Simulink выберите Simulation> Run.

    Появляются два диалоговых окна:

    • Диагностическое Средство просмотра указывает, что вы не разрешили символы в таблице изменения состояния.

    • Мастер Символа пытается разрешить недостающие данные. Мастер правильно выводит осциллограф всех данных за исключением входных параметров ALARM and CLEAR.

  2. В Мастере Символа исправьте осциллографы ALARM и CLEAR путем выбора Input из их Осциллографа выпадающие списки.

  3. Когда Model Explorer открывается, проверьте, что Мастер Символа добавил все необходимые определения данных правильно.

    Некоторые входные параметры присвоены неправильным портам.

  4. В панели Содержимого Model Explorer повторно присвойте входные порты можно следующим образом:

    Присвоение:К порту:
    reference_low2
    reference_high1
    temp5
    ALARM3
    CLEAR4
  5. Сохраните таблицу изменения состояния.

  6. Закройте диагностическое средство просмотра и Model Explorer.

В модели Simulink вводы и выводы, которые вы задали, появляются в блоке State Transition Table. Теперь вы готовы соединить эти вводы и выводы с Сигналами Simulink и запустить модель.

Соедините таблицу перехода и запустите модель

  1. В модели Simulink соедините таблицу изменения состояния с вводами и выводами Simulink:

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

  3. Вновь откройте свою таблицу изменения состояния.

  4. Запустите симуляцию путем выбора Simulation> Run.

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

Следующий вывод появляется в блоке Scope.

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

Просмотрите графическое представление

Stateflow автоматически генерирует графическое представление только для чтения таблицы изменения состояния, которую вы составили.

  1. В таблице изменения состояния выберите Chart> View auto-generated diagram.

    Диаграмма переходов состояний верхнего уровня:

    Состояние Normal появляется как подграфик.

  2. Просмотреть состояния и переходит график, содержит, дважды кликните состояние Normal.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте