Как работает пошаговое исполнение модели
По умолчанию Engee выполняет симуляцию модели непрерывно — это основной режим, который используется почти всегда. Для отладки модели доступен режим пошагового исполнения модели: оно позволяет продвигать симуляцию по шагам решателя и останавливаться на интересующих моментах, чтобы анализировать сигналы и состояния модели.
-
Обычная (непрерывная) симуляция — Engee выполняет симуляцию модели автоматически до завершения (или до принудительной остановки). Режим подходит для большинства задач: проверить модель, получить графики, выполнить серию прогонов. Если нужно просто получить результат симуляции «целиком», то используйте обычную (непрерывную) симуляцию.
-
Пошаговое исполнение (отладка симуляции) — вы управляете продвижением симуляции вручную: двигаетесь по шагам решателя и можете останавливаться на интересующих моментах, чтобы детально проанализировать сигналы и состояния модели.
В режиме пошагового исполнения Engee позволяет:
-
Продвигать симуляцию вперед или назад на заданное число шагов, используя опции «Шаг вперед» и «Шаг назад»;
-
Возвращаться назад за счет сохраненных снимков (snapshots) рабочей точки модели — состояния, достаточного для продолжения симуляции с выбранного момента времени.
Начало работы
По умолчанию опция пошагового исполнения модели выключена. Для ее включения перейдите в окно Настройки и на вкладке «Отладка» в разделе «Пошаговое исполнение» установите флажок Пошаговое исполнение:

В разделе можно настроить параметры пошагового исполнения.
После включения опции меняется панель управления симуляцией: к обычным кнопкам запуска/остановки добавляются элементы для пошаговой отладки — шаг назад и шаг вперед.
Обычная симуляция (опция пошагового исполнения выключена)
|
Пошаговое исполнение (опция включена)
|
Под «шагом» понимается шаг решателя по времени. Между шагами решатель может выполнять внутренние (промежуточные) вычисления; они важны, например, для работы точек останова (см. Пауза на точках останова).
-
Количество сохраненных шагов — общее число снимков, которые Engee хранит для возможности шага назад.
-
Интервал между сохраненными шагами — сколько шагов решателя пропускать между сохранениями снимков.
-
Шагать вперед/назад на — на сколько шагов решателя продвигать (или откатывать) симуляцию при нажатии Шаг вперед / Шаг назад.
|
Снимки симуляции хранятся в памяти Engee и могут замедлять выполнение модели. Начните с небольших значений (например, десятки или первые сотни снимков) и увеличивайте их только при необходимости: оптимальное значение зависит от размера модели. |
При шаге вперед Engee продолжает симуляцию. Однако при шаге назад Engee не выполняет симуляцию системы «в обратном направлении». Чтобы обеспечить шаг назад, Engee по мере выполнения симуляции сохраняет снимки рабочей точки модели. При нажатии Шаг назад, Engee восстанавливает рабочую точку модели из одного из таких снимков.
|
Engee собирает снимки симуляции для шага назад только когда включено пошаговое исполнение и активен шаг назад. Если вы включили шаг назад уже во время выполняющейся симуляции, то перед тем как шагать назад, нужно хотя бы один раз выполнить шаг вперед. Нельзя шагнуть назад к моменту симуляции, который был до включения шага назад. |
Шаг вперед
За то, на сколько шагов решателя продвигается симуляция при нажатии Шаг вперед, отвечает параметр Шагать вперед/назад на. Он задает количество шагов решателя (по времени), на которое Engee перемещает симуляцию вперед за одно нажатие.
Например, представим временную шкалу симуляции; состояние на каждом шаге решателя по времени покажем зеленым кружком, а изогнутые стрелки иллюстрируют продвижение симуляции:

На изображении показано, как изменяется продвижение симуляции, если значение Шагать вперед/назад на равно 1 или 2:
-
В начале симуляции (Состояние 0) значение параметра равно
2. При нажатии Шаг вперед, симуляция проходит через Состояние 1 и останавливается на Состоянии 2. -
Пока симуляция на паузе после второго шага решателя по времени, допустим, вы изменили значение параметра на
1. Теперь при нажатии Шаг вперед симуляция продвинется до Состояния 3 — на один следующий шаг решателя по времени. -
Допустим, вы изменили значение параметра обратно на
2, пока симуляция на паузе после четвертого основного шага решателя по времени. Теперь при нажатии Шаг вперед симуляция продвинется до Состояния 6.
Снимки симуляции
Снимки симуляции (сохраненные шаги) — нужны для шага назад: они содержат состояние, достаточное для продолжения симуляции с выбранного момента времени. Снимки хранятся в памяти Engee и не сохраняются в файловую систему. Сбор снимков требует памяти и может влиять на производительность симуляции.
Для управления тем, сколько данных хранится для шага назад, используются параметры:
-
Количество сохраненных шагов — общее количество снимков, которые нужно сохранить;
-
Интервал между сохраненными шагами — сколько шагов решателя по времени пропускать между сохранениями снимков.
Параметры сохранения снимков независимы от опции Шагать вперед/назад на: интервал и количество снимков определяют, как часто и сколько состояний сохраняется, а Шагать вперед/назад на — на сколько шагов решателя перемещается симуляция при нажатии Шаг вперед или Шаг назад.

На изображении показано, как сохраняются снимки при значении Интервал между сохраненными шагами = 3. Engee сохраняет снимок в начале симуляции, после третьего основного шага решателя по времени и после шестого.
Вы можете изменять интервал между снимками во время симуляции, когда нужно продвигаться меньшими приращениями, чтобы проанализировать интересующую точку. Например, на изображении показано, как симуляция из предыдущего примера сохраняло бы снимки, если изменить интервал между снимками с 3 на 1:

-
Engee сохраняет снимок Состояние 0 в начале симуляции;
-
Через три шага по решателя по времени Engee сохраняет снимок Состояние 3;
-
Пока симуляция на паузе в Состояние 3, вы меняете значение параметра Интервал между сохраненными шагами с
3на1; -
Engee сохраняет снимок состояния симуляции для каждого шага решателя по времени вплоть до Состояния 6.
Шаг назад
При шаге назад Engee опирается на сохраненные снимки рабочей точки модели. В зависимости от того, есть ли снимок для нужного шага решателя по времени, Engee действует по-разному:
-
Если снимок для нужного шага есть — Engee его восстановит;
-
Если снимка нет — Engee восстановит ближайший предыдущий снимок и выполняет симуляцию вперед до нужного момента.
Например, вы на паузе после шестого шага решателя по времени в симуляции, которое:
-
Сохраняет снимок каждые три шага по времени;
-
При нажатии Шаг назад возвращается назад на один шаг.
Когда вы нажимаете Шаг назад, то Engee восстанавливает снимок, сделанный после третьего шага решателя по времени, и выполняет симуляцию вперед на два шага, чтобы остановиться после пятого шага решателя по времени.

На рисунке показана временная шкала симуляции; состояние показано зеленым кружком, оттенок зеленого темнее для каждого состояния, сохраненного как снимок. Сплошная изогнутая стрелка показывает продвижение симуляции при нажатии Шаг назад. Желтые изогнутые стрелки иллюстрируют, как Engee выполняет шаг назад.
Пока симуляция на паузе, можно менять настраиваемые параметры. Новые значения применяются при следующем продвижении симуляции вперед. В зависимости от настроек шагов симуляции это может произойти сразу после нажатия Шаг назад.
Пауза на точках останова
Если модель содержит активные точки останова, то симуляция при шаге вперед может остановиться, когда условие точки останова выполнится. При шаге назад Engee игнорирует точки останова.
По умолчанию Engee ставит симуляцию на паузу на ближайшей вычислительной точке, которую определяет решатель. Если условие точки останова сработало между основными шагами времени, то остановка произойдет на внутреннем (промежуточном) шаге решателя в пределах текущего шага времени.
Когда вы нажимаете Шаг вперед, находясь на паузе из-за точки останова, то симуляция продолжится и завершит текущий шаг времени. Когда вы нажимаете Шаг назад, то Engee возвращается к началу текущего шага времени.
Дополнительные соображения при пошаговом выполнении симуляции
Не все блоки, функции и конфигурации модели поддерживают опцию шага назад. Отсутствие поддержки шага назад не прерывает симуляцию: Engee выдает предупреждение, если в модели с включенным шагом назад есть неподдерживаемый блок.
В таблице приведены другие соображения, связанные с шагом назад, для ряда блоков и конструкций моделирования.
| Функция или шаблон моделирования | Соображения для шага назад |
|---|---|
Если вы изменяете параметры пошагового выполнения моделирования для подключенной модели во время моделирования, те же параметры изменяются и в модели верхнего уровня. Когда моделирование завершится, параметры пошагового выполнения для подключенных моделей вернутся к значениям, которые были до моделирования. Параметры пошагового выполнения для модели верхнего уровня останутся такими, какими они были в конце моделирования. |
|
Состояние моделирования после шага назад может быть некорректным для моделей, содержащих блоки C Function, которые вызывают Си код со статическими переменными или с побочными эффектами (например, запись в файл). |

