Таблица изменения состояния является альтернативным способом выразить последовательную модальную логику. Вместо того, чтобы чертить состояния и переходы графически в графике Stateflow®, используйте таблицы переходов состояний, чтобы выразить модальную логику в табличном формате. Таблицы переходов состояний поддерживаются только как блоки в модели Simulink®. Для получения дополнительной информации смотрите Таблицы переходов состояний в Stateflow.
Создайте модель Simulink с новой Таблицей Изменения состояния (sfnew -stt
).
Добавьте следующие состояния и переходы к вашей таблице:
Таблица имеет два состояния на высшем уровне в иерархии, Power_off
и Power_on
. По умолчанию Power_off
активен. Событие SWITCH
переключает систему между состояниями Power_on
и Power_off
. Power_on
имеет три подсостояния: First
, Second
и Third
. По умолчанию, когда Power_on
становится активным, First
также становится активным. Когда Shift
равняется 1, системные переходы от First
до Second
, Second
к Third
и Third
к First
, для каждого вхождения события SWITCH
. Затем повторения шаблона.
Добавьте два входных параметров от Simulink:
Событие под названием SWITCH
с осциллографом Входа от Simulink и Возрастающего триггера ребра.
Данные под названием Shift
с осциллографом Входа от Simulink.
В образцовом представлении соедините блок Sine Wave как событие SWITCH
и блок Step как данные Shift
для вашей Таблицы Изменения состояния.
В модели существует ввод событий и ввод данных. Блок Sine Wave генерирует входное событие повторения, которое соответствует событию Stateflow SWITCH
. Блок Step генерирует повторяющийся шаблон 1 и 0, который соответствует объекту данных Stateflow Shift
. Идеально, событие SWITCH
имеет место на частоте, которая позволяет по крайней мере один цикл через First
, Second
и Third
.
Чтобы отладить таблицу в Создают Модель и Таблицу Изменения состояния, выполняют эти шаги:
Щелкните правой кнопкой по состоянию Power_off
и выберите Set Breakpoint> On State Entry.
Запустите симуляцию.
Поскольку вы задали точку останова на Power_off
, остановках выполнения в той точке.
Переместитесь в следующий шаг путем нажатия кнопки Step In.
Чтобы видеть используемые данные и текущие значения, наведите свой курсор на различные ячейки таблицы.
Продолжите нажимать кнопку Step In и смотреть состояния анимации. После каждого шага см. анимацию графика, чтобы видеть последовательность выполнения. Используйте подсказки, чтобы видеть значения данных.
Одно продвижение показывает, что цикл от First
до Second
к Third
в Power_on
состояния не происходит. Переход от Power_on
до Power_off
берет приоритет.
В Отладке Таблица Изменения состояния вы продвигаетесь посредством симуляции таблицы изменения состояния и находите ошибку. Событие SWITCH
управляет симуляцией, но передачами времени симуляции слишком быстро для объекта Shift
входных данных иметь эффект.
Исправлять эту ошибку:
Остановите симуляцию так, чтобы можно было отредактировать таблицу.
Добавьте условие after(20.0, sec)
в переход от Power_on
до Power_off
.
Теперь переход от Power_on
до Power_off
не происходит, пока 20 секунд не передали.
Начните симуляцию.
Нажмите кнопку Step In неоднократно, чтобы наблюдать фиксированное поведение.