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

Таблица переходов состояний является альтернативным способом выражения последовательной модальной логики. Вместо графических состояний и переходов в 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, Second, и Third. По умолчанию, когда Power_on становится активным, First также становится активным. Когда Shift равен 1, система переходит от First на Second, Second на Third, и Third на First, для каждого вхождения события SWITCH. Затем шаблон повторяется.

  3. Добавьте два входа из Simulink:

    • Событие под названием SWITCH с возможностями входов Simulink и триггером Rising edge.

    • Данные, называемые Shift с возможностями входов Simulink.

  4. В виде модели соедините блок 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, выполните следующие шаги:

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

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

    Потому что вы указали точку останова на Power_offвыполнение останавливается в этой точке.

  3. Перейдите к следующему шагу нажатием кнопки Шаг,.

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

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

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

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

В Debug the State Transition Table вы проходите симуляцию таблицы переходов состояний и находите ошибку. Событийный SWITCH управляет симуляцией, но время симуляции проходит слишком быстро для объекта входных данных Shift чтобы иметь эффект.

Чтобы исправить эту ошибку:

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

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

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

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

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

Похожие темы