Отладьте ошибки времени выполнения в таблице изменения состояния

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

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

  1. Создайте модель Simulink с новой Таблицей Изменения состояния (sfnew -stt).

  2. Добавьте следующие состояния и переходы к вашей таблице:

    Таблица имеет два состояния на высшем уровне в иерархии, 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. Затем повторения шаблона.

  3. Добавьте два входных параметров от Simulink:

    • Событие под названием SWITCH с осциллографом Входа от Simulink и Возрастающего триггера ребра.

    • Данные под названием Shift с осциллографом Входа от Simulink.

  4. В образцовом представлении соедините блок Sine Wave как событие SWITCH и блок Step как данные Shift для вашей Таблицы Изменения состояния.

    В модели существует ввод событий и ввод данных. Блок Sine Wave генерирует входное событие повторения, которое соответствует событию Stateflow SWITCH. Блок Step генерирует повторяющийся шаблон 1 и 0, который соответствует объекту данных Stateflow Shift. Идеально, событие SWITCH имеет место на частоте, которая позволяет по крайней мере один цикл через First, Second и Third.

Отладьте таблицу изменения состояния

Чтобы отладить таблицу в Создают Модель и Таблицу Изменения состояния, выполняют эти шаги:

  1. Щелкните правой кнопкой по состоянию Power_off и выберите Set Breakpoint> On State Entry.

  2. Запустите симуляцию.

    Поскольку вы задали точку останова на Power_off, остановках выполнения в той точке.

  3. Переместитесь в следующий шаг путем нажатия кнопки Step In.

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

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

Одно продвижение показывает, что цикл от First до Second к Third в Power_on состояния не происходит. Переход от Power_on до Power_off берет приоритет.

Исправьте ошибку времени выполнения

В Отладке Таблица Изменения состояния вы продвигаетесь посредством симуляции таблицы изменения состояния и находите ошибку. Событие SWITCH управляет симуляцией, но передачами времени симуляции слишком быстро для объекта Shift входных данных иметь эффект.

Исправлять эту ошибку:

  1. Остановите симуляцию так, чтобы можно было отредактировать таблицу.

  2. Добавьте условие after(20.0, sec) в переход от Power_on до Power_off.

    Теперь переход от Power_on до Power_off не происходит, пока 20 секунд не передали.

  3. Начните симуляцию.

  4. Нажмите кнопку Step In неоднократно, чтобы наблюдать фиксированное поведение.

Похожие темы