Отладка моделей в Engee
Страница в процессе разработки. |
Отладка играет ключевую роль в разработке моделей, позволяя проверять, соответствуют ли работа отдельных частей модели и ее поведение нашим ожиданиям. Этот процесс помогает выявлять и устранять ошибки, проверять, что данные передаются корректно и размерности совпадают с задуманными. Если на выходе модели возникает некорректный результат, то отладка позволяет понять, где и в чем поведение системы отклонилось от ожидаемого.
В статье рассмотрены основные подходы к отладке моделей с помощью инструментов Engee.
Первичная отладка моделей
На начальном этапе разработки модели важно убедиться, что ее компоненты и связи (сигнальные линии) работают корректно. Первичная отладка позволяет выявить базовые ошибки, такие как неправильные параметры блоков, некорректные входные данные или неверную логику выполнения.
Графики сигналов
Самый простой способ проверки — пометить сигналы для записи и наблюдать на графиках, где модель начинает вести себя некорректно (подробнее см. в статье Графики).
Отключение и пропуск блоков
В процессе отладки моделей часто возникает необходимость временно исключить некоторые блоки из выполнения, что является аналогом комментирования кода в текстовых языках программирования.
Для отключения/пропуска блока нажмите по нему правой кнопкой мыши и выберите нужную опцию в контекстном меню:
-
Отключить блок — блок полностью исключается из модели, как если бы его не существовало. Его входы и выходы разрываются, и он никак не участвует в процессе моделирования. Это позволяет проверить, как модель будет работать без этого блока. Следовательно, если блок отключен, то сигнал не передается через него, и компоненты, связанные с его выходами, не получают данных.
-
Пропустить блок — блок остается в модели, но его функциональность игнорируется. Входы блока напрямую подключаются к его выходам, и данные проходят без изменений. Это эквивалентно соединению всех входов блока с соответствующими выходами.
Пропуск недоступен для некоторых блоков.
Вкладка «Свойства» окна настроек
Выбор режима симуляции
Параметр Режим позволяет настроить выполнение симуляции в зависимости от задач отладки и производительности. Для отладки особенно полезен режим, который минимизирует время запуска и упрощает работу с моделью. Всего доступно два режима:
-
Быстрая инициализация — модель запускается максимально быстро за счет упрощенной типизации и отключения оптимизаций. Этот режим удобен для отладки, так как позволяет оперативно проверять изменения в модели без долгого ожидания запуска. Особенно полезен при частых изменениях структуры или параметров модели.
-
Быстрый счет — приоритет отдается высокой производительности и сокращению времени вычислений. Хотя этот режим менее гибок для отладки, он может быть полезен на завершающих этапах проверки, когда необходимо убедиться в правильности и стабильности расчетов.
Следовательно, на начальных этапах рекомендуется использовать Быструю инициализацию, чтобы оперативно находить и устранять ошибки, а на финальных — Быстрый счет для проверки производительности модели.
Управление скоростью симуляции
Параметр Управлять скоростью симуляции позволяет задать соотношение времени симуляции к реальному времени, указывая, сколько секунд моделирования должно пройти за одну реальную секунду.
Настройка полезна для отладки, так как замедление симуляции помогает лучше проанализировать поведение модели в реальном времени. Это позволяет:
Следовательно, замедление симуляции создает контролируемую рабочую среду, в которой можно взаимодействовать с моделью, анализировать поведение сигналов и устранять проблемы на ранних этапах отладки.
Вкладка «Отладка» окна настроек
Отображение информации
При отладке моделей важно иметь возможность наглядно отслеживать ключевые характеристики, чтобы понять, как данные передаются и обрабатываются в блоках. В Engee можно выводить различные типы информации:
-
Типы данных — отображает типы данных сигнальных линий между блоками модели. Если в модели присутствует некорректный тип данных, то при выборе функции Типы данных автоматически появится окно диагностики с указанием ошибки.
Пример отображения типов данных
-
Размерности сигналов — отображает размерности сигнальных линий между блоками модели (подробнее читайте здесь). Сигналы моделей могут быть скалярными, векторными и матричными.
Примеры отображения с разными сигналами
-
Скалярный сигнал — единичное значение данных, которое не имеет направления и является простейшим типом сигнала:
-
Векторный сигнал — упорядоченный набор данных одного типа, организованный в виде вектора, который имеет направление и может содержать несколько элементов.
-
Матричный сигнал — двумерный массив данных, состоящий из строк и столбцов, и может содержать данные различных типов. Матрица может быть использована для представления множества сигналов одновременно.
-
-
Частота дискретизации сигнала — отображает частоту дискретизации блоков модели. Мелкий шаг дискретизации может привести к увеличению объема данных, что может замедлить выполнение моделирования. Слишком крупный шаг может привести к потере точности расчета модели. Для управления частотой дискретизации сигнала удобно использовать блок Rate Transition.
Пример с частотой дискретизации
Здесь для блока Sine Wave DSP установлена амплитуда 1, частота 2 Гц и шаг дискретизации равный 0.001 для первого канала (D1, блок DSP Sine Wave) и 0.01 для второго (D2, блок DSP Sine Wave-1). В блоке Rate Transition задан шаг выборки: 0.005 для D1 и 0.02 для D2. Это позволит увидеть на графике: сигнал D1 — сглаженный и точный, сигнал D2 — ступенчатый, с меньшей детализацией.
-
Выделение цветом — подпункт опции частота дискретизации сигнала позволяет выделить цветом один из следующих вариантов: сигналы с текущей частотой дискретизации, источник сигнала, либо не выделять ничего (выбрано по умолчанию). Дискретные сигналы могут отображаться разными цветами в зависимости от частоты дискретизации сигнала (как в примере выше).
-
-
Порядок выполнения блоков — позволяет узнать порядок выполнения блоков в модели. Последовательность выполнения моделей будет отображаться цифрами, где 1 — первый исполняемый блок в модели. Эта опция помогает контролировать последовательность выполнения блоков во избежание нежелательных зависимостей и улучшает читаемость модели.
Пример порядка выполнения
Запись сигналов
Запись сигналов позволяет фиксировать результаты моделирования и анализировать их для последующей диагностики и отладки. В Engee доступны два способа записи сигналов:
-
Сохранять результаты симуляции в рабочую область — позволяет сохранить результаты симуляции модели в рабочую область (окно переменных
) в виде переменной simout. Это позволяет получить доступ к данным после завершения симуляции и использовать их для анализа, визуализации или последующей обработки. Подробнее о сохранении результатов симуляции читайте в статье.
-
Физические переменные — позволяет записать данные с выбранных блоков. Для записи подходят только блоки из библиотеки Физическое моделирование. Нажмите правой кнопкой мыши по блоку, сигнал с которого хотите записать и выберите опцию Записать физические сигналы в контекстном меню:
Записанные переменные отображаются в модуле Графики
и в приложении Инспектор данных.
Примеры записанных сигналов
Записанные переменные в модуле Графики:
Записанные переменные в приложении Инспектор данных:
-
-
Результаты инициализации физических переменных — отображает значения физических переменных в окне физических переменных
.
Отладка в реальном времени
Среда Engee позволяет контролировать выполнение модели в реальном времени. Такой подход объединяет несколько инструментов, которые помогают шаг за шагом отслеживать состояние сигналов, блоков и их динамических процессов:
-
Пошаговое исполнение — позволяет выполнять модель по одному временному шагу за раз. Включение настройки добавляет дополнительные кнопки в верхнее меню моделирования Engee:
В этом режиме можно настроить параметры:
-
Количество сохраненных шагов — параметр определяет, сколько шагов симуляции будет сохраняться в памяти. Полезно для понимания того, как модель достигла текущего состояния, и для отладки, так как позволяет сравнивать изменения на каждом шаге.
-
Интервал между сохраненными шагами — параметр устанавливает, через сколько временных шагов будет сохраняться состояние модели.
-
Шагать вперед/назад на — параметр определяет количество шагов, на которое модель будет продвигаться:
-
Шаг вперед
— симуляция продолжается на указанное количество шагов. Например, если значение параметра «Шагать вперед/назад на» равно
2
, то симуляция продвинется на два шага. -
Шаг назад
— симуляция возвращается на указанное количество шагов. Engee восстанавливает рабочую точку состояния модели, от которой и возвращается выбранное количество шагов.
-
-
-
Отображение мгновенного значения сигналов — позволяет отмечать сигналы для отображения мгновенного значения во время симуляции или пошагового исполнения. Такой метод нагляден и удобен для зрительного анализа передачи данных между блоками.
-
Скорость анимации — управляет скоростью работы конечного автомата (поддерживается внутри блока Chart). Имеет четыре режима: выключена (по умолчанию), медленная, средняя и быстрая.
Точки останова
Одним из важных инструментов для отладки моделей являются точки останова. Они позволяют приостановить выполнение модели в нужный момент симуляции, чтобы изучить состояние системы, найти ошибки или проверить работу отдельных блоков и настроек.
Для открытия редактора точек перейдите в окно настроек и во вкладке «Отладка» выберите «Открыть список точек останова»:
Это откроет редактор для работы с точками останова:
Рассмотрим пример, в котором с помощью точек останова симуляция остановится на конкретном этапе. Для этого соберите модель из блоков Sine Wave и Terminator, включите запись сигнала:
Нажатием левой кнопки мыши выделите сигнальную линию и в редакторе точек останова нажмите . В открывшемся окне выберите меньше нуля как показано на рисунке:
Созданная точка останова будет иметь характерную красную метку на сигнальной линии:
Запустите симуляцию. Симуляция встанет на паузу на третьей секунде, а график модели будет выглядеть так:
Сработавшая точка останова будет помечена зеленым цветом в редакторе, а количество срабатываний будет показано в столбце «Срабатывания»: