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