Документация Engee

Отладчик конечных автоматов

Страница в процессе разработки.

Создание моделей на основе конечных автоматов — это эффективный способ описания сложной дискретной логики. Чтобы упростить анализ работы таких автоматов и обеспечить контроль над их поведением, в Engee предусмотрен встроенный отладчик, позволяющий пошагово отслеживать выполнение выявлять ошибки конечного автомата.

Отладчик доступен внутри блока Chart и включается если для состояния stateflow state и/или перехода stateflow default transition установить точку останова (Breakpoint):

state machines breakpoint 1

Точки останова выглядят как красные маркеры state machines breakpoint 1 (или серые state machines breakpoint 2, если отключены).

Точки останова — ключевой инструмент отладчика конечных автоматов, с помощью которого можно устанавливать условия для остановки выполнения модели. Это позволяет исследовать поведение модели на конкретном шаге выполнения конечного автомата. Так, с помощью точек останова можно:

  • Пошагово управлять симуляцией конечного автомата;

  • Просматривать значения переменных на конкретном шаге;

  • Анализировать, когда и какие состояния становятся активными или завершаются;

  • Проверять, выполняются ли Группы операторов машины состояний (для групп entry, during и exit);

  • Анализировать, валидность переходов, включая переходы с операторами темпоральной логики, отслеживания фронта сигнала и индикаторами изменений;

  • А также диагностировать скрытые логические ошибки и нестабильные состояния, которые не проявляются в выходных данных модели.

Работа с точками останова

Точки останова можно установить на:

  • Состояния stateflow state — при входе, во время выполнения и при выходе;

  • Переходы stateflow default transition — при проверке условия или перед выполнением перехода.

Чтобы добавить точку останова на состояние stateflow state или переход stateflow default transition, щелкните левой кнопкой мыши по нужному элементу и затем по появившемуся значку точки останова. Активная точка останова будет отмечена красной меткой:

sm breakpoints 1

state machines breakpoint 4

Вы можете устанавливать различные типы точек останова для состояний и переходов. Для этого кликните по точке останова левой кнопкой мыши:

В состояниях

На переходах

state machines breakpoint 3

  • При входе в состояние (entry) — симуляция останавливается перед выполнением entry;

  • При нахождении в состоянии (during) — симуляция останавливается перед выполнением during на каждом такте;

  • При выходе из состояния (exit) — симуляция приостанавливается сразу после выполнения exit перед переходом в другое состояние.

state machines breakpoint 11

  • Когда переход валиден — симуляция останавливается в момент, когда переход становится допустимым и может быть выполнен;

  • Когда переход тестируется — симуляция приостанавливается в момент проверки условия перехода. Этот параметр недоступен, если переход не содержит логического условия (например, безусловный переход).

Выбранные типы будут отображены при наведении курсора на точку останова:

state machines breakpoint 4
state machines breakpoint 12

Можно включать любые сочетания флажков — в зависимости от того, какой момент работы состояния/перехода нужно отследить. Если снять все флажки, то точка останова будет удалена.

Чтобы временно отключить точку останова (оставив ее на состоянии/переходе, но без срабатывания), повторно кликните по значку точки останова:

state machines breakpoint 3

Список точек останова

Для перехода в список точек останова нажмите левой кнопкой мыши по уже созданной точке останова и выберите Список точек останова:

state machines breakpoint 5

Это откроет список всех точек останова модели конечного автомата:

state machines breakpoint 6

Через список точек останова можно:

  • Отслеживать какие точки останова сработали в ходе симуляции модели и количество их срабатываний. Количество срабатываний показано в столбце «Срабатывания». Сработавшая точка останова будет выделена зеленым цветом:

    state machines breakpoint 14 x

  • Удалить точку останова, кликнув по ней в списке левой кнопкой мыши и нажав на значок Удалить точку останова state machines breakpoint 7.

  • Добавить точку останова, кликнув по ней в списке левой кнопкой мыши и нажав на значок Добавить точку останова state machines breakpoint 8. В открывшемся окне выберите нужные параметры — тип срабатывания и, при необходимости, условии:

    state machines breakpoint 9

  • Включить/отключить точку останова — для этого управляйте флажками state machines breakpoint 10 у соответствующих точек.

  • Задать условие для точки останова, введя выражение в столбце «Условие» напротив нужной строки. Например, y > 5 или (y == 0) & (n > 5). В условиях могут задаваться логические выражения, поддерживаемые логикой работы конечных автоматов. Для них используются значения входов, выходов, и все переменные, доступные в блоке Chart.

Управление выполнением модели

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

После установки первой точки останова внутри блока Chart, в верхнем левом углу холста появится панель пошагового управления симуляцией:

state machines breakpoint 14

Доступны три команды управления выполнением:

  1. Step In state machines breakpoint 14 1 — переходит к следующему этапу выполнения внутри текущего состояния или перехода. Команда выполняет детали элемента конечного автомата пошагово. Это может быть:

    • Вход в диаграмму конечного автомата;

    • Проверка условий перехода;

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

    • Активация состояния;

    • Выполнение групп операторов entry, during или exit;

    • Переход в дочерние состояния или вложенные Графы переходов.

  2. Step Over state machines breakpoint 14 2 — выполняет текущий шаг целиком, без перехода к внутренним деталям. Команда используется для последовательного прохождения ключевых этапов исполнения конечного автомата:

    • Активация конечного автомата;

    • Переход в состояние;

    • Проверка доступных переходов;

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

    • Выполнение действий состояния.

  3. Step Out state machines breakpoint 14 3 — завершает выполнение текущего состояния, перехода, дочернего состояния или вложенного графа перехода и возвращается к вышестоящему уровню исполнения. Команда позволяет выйти из текущего уровня вложенности и продолжить выполнение автомата на уровне, с которого был выполнен вход.


Для наглядного отслеживания текущего этапа исполнения модели автомата используется подсветка — активный элемент выделяется зеленым цветом при выполнении как в самой модели, так и в списке точек останова:

state machines breakpoint 14 4

Помимо выделения цветом система также дает подсказки в виде иконок, при наведении курсора на которые всплывает вспомогательное сообщение как именно отработала модель на текущем шаге:

  • sm before entering Перед входом в состояние

  • sm during Внутри состояния

  • sm before exit Перед выходом из состояния

  • sm before testing transition Перед проверкой условий перехода

  • sm before transition Перед переходом

Например:

state machines breakpoint 14 5 state machines breakpoint 14 6

Просмотр и редактирование переменных

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

Для этого откройте окно настроек debug article icon 1 блока Chart — оно отображает все доступные переменные.

state machines breakpoint 14 7

В этом окне вы можете:

  • Просматривать текущие значения переменных на каждом шаге;

  • Видеть изменения значений — они подсвечиваются зеленым цветом по аналогии со списком точек останова;

  • Вручную изменять значения некоторых переменных прямо во время остановки модели.

    Редактирование значений переменных доступно только во время паузы симуляции и при наличии активной точки останова.

Чтобы изменить значение переменной:

  1. Наведите курсор на нужную строку в колонке «Значение»;

  2. Кликните по текущему значению;

  3. Введите новое значение и нажмите Enter.

Изменять можно локальные переменные и выходные сигналы. Значения входных сигналов задаются из внешней среды моделирования (вне блока Chart).

Полезные ссылки