Таблица изменения состояния является альтернативным способом описать последовательную модальную логику. Вместо того, чтобы чертить состояния и переходы графически в Stateflow® стройте диаграмму, используйте таблицы переходов состояний, чтобы описать модальную логику в табличном формате. Таблицы переходов состояний поддерживаются только как блоки в Simulink® модель. Для получения дополнительной информации смотрите Таблицы переходов состояний в Stateflow.
Создайте модель Simulink с новым State Transition Table.
sfnew -STT
Добавьте следующие состояния и переходы к вашей таблице:
Таблица имеет два состояния на высшем уровне в иерархии, Power_off
и Power_on
. По умолчанию, Power_off
активно. Событие SWITCH
переключается система между Power_off
и Power_on
состояния. Power_on
имеет три подсостояния: First
второй
, и Third
. По умолчанию, когда Power_on
становится активным, First
также становится активным. Когда Shift
равняется 1, системные переходы от First
к 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
второй
, и 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 неоднократно, чтобы наблюдать фиксированное поведение.