exponenta event banner

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

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

Создание модели и таблицы перехода состояний

  1. Создайте модель Simulink с новой таблицей перехода состояний.

    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. На виде модели подключите блок синусоидальной волны в качестве SWITCH событие и блок Step в качестве Shift данные для таблицы перехода состояния.

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

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

Чтобы отладить таблицу в разделе Создание модели (Create the Model) и Таблица перехода состояния (State Transition Table), выполните следующие действия.

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

  2. Запустите моделирование.

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

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

  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. Для наблюдения за фиксированным поведением многократно нажимайте кнопку «Шаг».

Связанные темы