В этой теме вы создаете модель Simulink® с графиком Stateflow®, чтобы отладить. Выполните эти шаги:
Создайте следующую модель Simulink:
Добавьте следующие состояния и переходы к вашему графику:
В вашем графике добавьте событие Switch
с осциллографом Входа от Simulink и Возрастающего триггера ребра.
Добавьте данные Shift
с осциллографом Входа от Simulink.
График имеет два состояния на высшем уровне в иерархии, 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
, и затем повторения шаблона.
В модели существует ввод событий и ввод данных. Блок Sine Wave генерирует входное событие повторения, которое соответствует событию Stateflow Switch
. Блок Step генерирует повторяющийся шаблон 1 и 0, который соответствует объекту данных Stateflow Shift
. Идеально, Switch
событие имеет место на частоте, которая позволяет по крайней мере один цикл через First
второй
, и Third
.
Чтобы отладить график в Создают Модель и диаграмму Stateflow, выполняют эти шаги:
Щелкните правой кнопкой по графику и выберите Set Breakpoint on Chart Entry.
Запустите симуляцию.
Поскольку вы задали точку останова на записи графика, остановках выполнения в той точке.
Нажмите кнопку Step In.
Кнопка Step In выполняет следующий шаг и остановки.
Продолжите нажимать кнопку Step In и смотреть график анимации.
После каждого шага см. анимацию графика, чтобы видеть последовательность выполнения.
Одно продвижение показывает, что график не предоставляет желаемое поведение. Переходы от First
к Second
к Third
в Power_on
состояния не происходят потому что переход от
Power_on
к Power_off
берет приоритет. Выходное отображение покрытия кода также подтверждает это наблюдение.
В Отладке диаграмма Stateflow вы продвигаетесь посредством симуляции графика и находите ошибку: событие Switch
управляет симуляцией, но передачами времени симуляции слишком быстро для объекта Shift
входных данных оказывать влияние.
Откорректируйте эту ошибку можно следующим образом:
Остановите симуляцию так, чтобы можно было отредактировать график.
Добавьте условие [t > 20.0]
к переходу от Power_on
к Power_off
.
Теперь переход от Power_on
к Power_off
не происходит, пока время симуляции не больше 20.0.
Начните симуляцию снова.
Нажмите кнопку Step In неоднократно, чтобы наблюдать новое поведение.