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

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

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

  1. Создайте модель Simulink с новым State Transition Table.

    sfnew -STT

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

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

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

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

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

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

    В модели существует ввод событий и ввод данных. Блок Sine Wave генерирует входное событие повторения, которое соответствует событию Stateflow SWITCH. Блок Step генерирует повторяющийся шаблон 1 и 0, который соответствует объекту данных Stateflow Shift. Идеально, SWITCH событие имеет место на частоте, которая позволяет по крайней мере один цикл через Firstвторой, и 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 неоднократно, чтобы наблюдать фиксированное поведение.

Похожие темы