Отладчик конечных автоматов
Страница в процессе разработки. |
Создание моделей на основе конечных автоматов — это эффективный способ описания сложной дискретной логики. Чтобы упростить анализ работы таких автоматов и обеспечить контроль над их поведением, в Engee предусмотрен встроенный отладчик, позволяющий пошагово отслеживать выполнение выявлять ошибки конечного автомата.
Отладчик доступен внутри блока Chart и включается если для состояния и/или перехода
установить точку останова (Breakpoint):
Точки останова выглядят как красные маркеры (или серые
, если отключены).
Точки останова — ключевой инструмент отладчика конечных автоматов, с помощью которого можно устанавливать условия для остановки выполнения модели. Это позволяет исследовать поведение модели на конкретном шаге выполнения конечного автомата. Так, с помощью точек останова можно:
-
Пошагово управлять симуляцией конечного автомата;
-
Просматривать значения переменных на конкретном шаге;
-
Анализировать, когда и какие состояния становятся активными или завершаются;
-
Проверять, выполняются ли Группы операторов машины состояний (для групп entry, during и exit);
-
Анализировать, валидность переходов, включая переходы с операторами темпоральной логики, отслеживания фронта сигнала и индикаторами изменений;
-
А также диагностировать скрытые логические ошибки и нестабильные состояния, которые не проявляются в выходных данных модели.
Работа с точками останова
Точки останова можно установить на:
-
Состояния
— при входе, во время выполнения и при выходе;
-
Переходы
— при проверке условия или перед выполнением перехода.
Чтобы добавить точку останова на состояние или переход
, щелкните левой кнопкой мыши по нужному элементу и затем по появившемуся значку точки останова. Активная точка останова будет отмечена красной меткой:
Вы можете устанавливать различные типы точек останова для состояний и переходов. Для этого кликните по точке останова левой кнопкой мыши:
В состояниях |
На переходах |
|
|
Выбранные типы будут отображены при наведении курсора на точку останова:


Можно включать любые сочетания флажков — в зависимости от того, какой момент работы состояния/перехода нужно отследить. Если снять все флажки, то точка останова будет удалена.
Чтобы временно отключить точку останова (оставив ее на состоянии/переходе, но без срабатывания), повторно кликните по значку точки останова:
Список точек останова
Для перехода в список точек останова нажмите левой кнопкой мыши по уже созданной точке останова и выберите Список точек останова:
Это откроет список всех точек останова модели конечного автомата:
Через список точек останова можно:
-
Отслеживать какие точки останова сработали в ходе симуляции модели и количество их срабатываний. Количество срабатываний показано в столбце «Срабатывания». Сработавшая точка останова будет выделена зеленым цветом:
-
Удалить точку останова, кликнув по ней в списке левой кнопкой мыши и нажав на значок Удалить точку останова
.
-
Добавить точку останова, кликнув по ней в списке левой кнопкой мыши и нажав на значок Добавить точку останова
. В открывшемся окне выберите нужные параметры — тип срабатывания и, при необходимости, условии:
-
Включить/отключить точку останова — для этого управляйте флажками
у соответствующих точек.
-
Задать условие для точки останова, введя выражение в столбце «Условие» напротив нужной строки. Например,
y > 5
или(y == 0) & (n > 5)
. В условиях могут задаваться логические выражения, поддерживаемые логикой работы конечных автоматов. Для них используются значения входов, выходов, и все переменные, доступные в блоке Chart.
Управление выполнением модели
Пошаговое выполнение доступно только внутри блока Chart и не затрагивает глобальное выполнение модели в рабочем пространстве. При выходе из блока Chart панель скрывается и Engee возвращается к обычному режиму симуляции. |
После установки первой точки останова внутри блока Chart, в верхнем левом углу холста появится панель пошагового управления симуляцией:
Доступны три команды управления выполнением:
-
Step In
— переходит к следующему этапу выполнения внутри текущего состояния или перехода. Команда выполняет детали элемента конечного автомата пошагово. Это может быть:
-
Вход в диаграмму конечного автомата;
-
Проверка условий перехода;
-
Выполнение действий перехода;
-
Активация состояния;
-
Выполнение групп операторов
entry
,during
илиexit
; -
Переход в дочерние состояния или вложенные Графы переходов.
-
-
Step Over
— выполняет текущий шаг целиком, без перехода к внутренним деталям. Команда используется для последовательного прохождения ключевых этапов исполнения конечного автомата:
-
Активация конечного автомата;
-
Переход в состояние;
-
Проверка доступных переходов;
-
Выполнение действий перехода;
-
Выполнение действий состояния.
-
-
Step Out
— завершает выполнение текущего состояния, перехода, дочернего состояния или вложенного графа перехода и возвращается к вышестоящему уровню исполнения. Команда позволяет выйти из текущего уровня вложенности и продолжить выполнение автомата на уровне, с которого был выполнен вход.
Для наглядного отслеживания текущего этапа исполнения модели автомата используется подсветка — активный элемент выделяется зеленым цветом при выполнении как в самой модели, так и в списке точек останова:
Помимо выделения цветом система также дает подсказки в виде иконок, при наведении курсора на которые всплывает вспомогательное сообщение как именно отработала модель на текущем шаге:
-
Перед входом в состояние
-
Внутри состояния
-
Перед выходом из состояния
-
Перед проверкой условий перехода
-
Перед переходом
Например:
Просмотр и редактирование переменных
Во время пошаговой симуляции конечного автомата можно не только наблюдать, какие состояния и переходы активируются, но и следить за значениями переменных, используемых внутри блока Chart.
Для этого откройте окно настроек блока Chart — оно отображает все доступные переменные.
В этом окне вы можете:
-
Просматривать текущие значения переменных на каждом шаге;
-
Видеть изменения значений — они подсвечиваются зеленым цветом по аналогии со списком точек останова;
-
Вручную изменять значения некоторых переменных прямо во время остановки модели.
Редактирование значений переменных доступно только во время паузы симуляции и при наличии активной точки останова.
Чтобы изменить значение переменной:
-
Наведите курсор на нужную строку в колонке «Значение»;
-
Кликните по текущему значению;
-
Введите новое значение и нажмите Enter.
Изменять можно локальные переменные и выходные сигналы. Значения входных сигналов задаются из внешней среды моделирования (вне блока Chart). |