Отладьте автономную диаграмму Stateflow

Автономный график Stateflow® является классом MATLAB®, который задает поведение конечного автомата. Автономные графики реализуют классическую семантику графика с MATLAB как язык действия. Можно программировать график при помощи полной функциональности MATLAB, включая те функции, которые ограничиваются для генерации кода в Simulink®. Для получения дополнительной информации смотрите, Создают диаграммы Stateflow для Выполнения как Объекты MATLAB.

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

Примечание

При отладке автономного графика, который вы выполняете из скрипта MATLAB, сначала откройте редактора Stateflow. Попытка отладить автономный график прежде, чем открыть редактор, по крайней мере, однажды может привести к неожиданным результатам.

Для получения информации об отладке диаграмм Stateflow в моделях Simulink смотрите Отладку диаграмм Stateflow.

Установка точек останова и ясные точки останова

Точки останова появляются как круговые красные значки. Например, этот график содержит точки останова на A состояния и на переходе от A к B.

Можно установить точки останова на графиках, состояниях и переходах.

Точки останова на графиках

Чтобы установить точку останова на графике, щелкните правой кнопкой в графике и выберите Set Breakpoint on Chart Entry. Этот тип точки останова приостанавливает выполнение прежде, чем ввести график.

Чтобы удалить точку останова, щелкните правой кнопкой в графике и очистите опцию Set Breakpoint on Chart Entry.

Точки останова на состояниях и переходах

Можно установить различные типы точек останова на состояниях и переходах.

ОбъектУстановите точки останова тип
Состояние

On State Entry — Приостановите выполнение прежде, чем выполнить entry состояния действия.

During State — Приостановите выполнение прежде, чем выполнить during состояния действия.

On State Exit — Приостановите выполнение после выполнения exit состояния действия.

Переход

When Transition is Tested — Приостановите выполнение прежде, чем протестировать это, переход является допустимым путем. Если никакое условие не существует на переходе, этот тип точки останова не доступен.

When Transition is Valid — Приостановите выполнение после того, как переход будет допустим, но прежде, чем взять переход.

Чтобы установить точку останова на состоянии или переходе, щелкните правой кнопкой по состоянию или переходу и выберите Set Breakpoint. Для состояний точками останова по умолчанию является On State Entry и During State. Для переходов точкой останова по умолчанию является When Transition is Valid. Чтобы изменить тип точки останова, кликните по значку точки останова и выберите различную настройку точек останова. Для получения дополнительной информации смотрите, Управляют Типами Точки останова и Условиями.

Чтобы удалить точку останова, щелкните правой кнопкой по состоянию или переходу и выберите Clear Breakpoint. Чтобы удалить все точки останова в графике, щелкните правой кнопкой в графике и выберите Clear All Breakpoints In Chart.

Управляйте типами точки останова и условиями

Значок точки останова может представлять больше чем один тип точки останова. Чтобы видеть подсказку, которая перечисляет типы точки останова, которые установлены на состоянии или переходе, укажите на его значок. В этом примере, значке на A состояния представляет два типа точки останова: On State Entry и During State.

Чтобы изменить тип точки останова на объекте, кликните по значку точки останова. В диалоговом окне Breakpoints можно выбрать различную настройку точек останова, в зависимости от типа объекта. Очистка всех флажков в диалоговом окне Breakpoints удаляет точку останова.

Чтобы ограничить число раз что остановки выполнения в точке останова, добавьте условие в точку останова. По умолчанию диаграмма Stateflow делает паузу каждый раз, когда она достигает точки останова. Когда вы добавляете условие в точку останова, график делает паузу в точке останова только, когда условие верно. Например, с этими условиями, точками останова на A состояния приостановите выполнение графика только когда значение x отрицательно.

Чтобы задать условие для точки останова, можно использовать любое допустимое выражение MATLAB, которое комбинирует численные значения и объекты данных Stateflow, которые находятся в осциллографе в точке останова.

Выполнение диаграммы управления после точки останова

Когда остановки выполнения в точке останова, Stateflow вводит режим отладки.

  • Командная строка MATLAB превращается в K>>.

  • Панель Символов отображает значение каждого объекта данных в графике.

  • График подсвечивает активные элементы синего цвета и объект выполняющегося в данного момента зеленого цвета.

Например, когда выполнение останавливается в точке останова в A состояния, граница состояния и первого оператора в entry состояния действие кажется подсвеченным в зеленом.

Значок состояния выполнения появляется в графическом объекте, где выполнение делает паузу.

ЗначокОписание

Выполнение приостановлено прежде, чем ввести график или в entry состояния действие.

Выполнение приостановлено в during состояния действие.

Выполнение приостановлено в exit состояния действие.

Выполнение приостановлено прежде, чем протестировать переход.

Выполнение приостановлено прежде, чем взять допустимый переход.

Когда график приостановлен в точке останова, можно продолжить выполнение при помощи:

  • Кнопки во вкладке Debug

  • Окно Команды MATLAB

  • Горячие клавиши

ДействиеОтладьте кнопку вкладкиКоманда MATLABГорячая клавишаОписание
Продолжение

dbcontCtrl+T

Продолжите выполнение к следующей точке останова.

Переступить

dbstepF10

Перейдите к следующему шагу в выполнении графика. На уровне графика возможные шаги включают:

  • Введите график

  • Выполните действие перехода

  • Активируйте состояние

  • Выполните акт государственной власти

Для получения дополнительной информации смотрите Выполнение диаграммы Stateflow.

Вступить

dbstep inF11

От состояния или действия перехода, которое вызывает функцию, усовершенствование к первому исполняемому оператору в функции.

От оператора в функции, содержащей другой вызов функции, перейдите к первому исполняемому оператору во второй функции.

В противном случае перейдите к следующему шагу в выполнении графика. (См. Шаг По опции.)

Выйти

dbstep outShift+F11

От вызова функции возвратитесь к оператору, вызывающему функцию.

В противном случае продолжите выполнение к следующей точке останова. (См. Продолжать опцию.)

Остановка

dbquitCtrl+Shift+T

Выйдите из режима отладки и прервите выполнение.

Когда вы выполняете автономный график от редактора Stateflow, это действие удаляет объект диаграммы из рабочего пространства MATLAB.

В состоянии или действиях перехода, содержащих больше чем один оператор, можно продвинуться через отдельные операторы по одному путем выбора Step Over. Редактор Stateflow подсвечивает каждый оператор прежде, чем выполнить его.

Примечание

Поскольку автономные графики задают временную логику в терминах тактового стеной времени, временный логический оператор может стать допустимым, в то время как график приостановлен в точке останова. В этом случае график выходит из режима отладки, и выполнение продолжается к следующей точке останова.

Исследуйте и измените значения данных о графике

Когда Stateflow находится в режиме отладки, панель Символов отображает значение каждого объекта данных в графике. Можно также исследовать значения данных, указав на состояние или переход в графике. Подсказка отображает значение каждого объекта данных, используемого в выбранном состоянии или переходе.

Чтобы протестировать поведение вашего графика, в панели Символов, можно изменить значение объекта данных во время выполнения. В качестве альтернативы в подсказке отладки, введите новое значение при помощи имени this вместо имени объекта диаграммы. Например, чтобы изменить значение локальных данных x, Введите:

this.x = 7
Новое значение появляется в панели Символов.

Примечание

В то время как Stateflow находится в режиме отладки, переменной this рабочей области содержит указатель на объект диаграммы. Чтобы избежать неожиданного поведения, не перезаписывайте this с различным значением.

Похожие темы