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

Отладка моделей в Engee

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

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

В статье рассмотрены основные подходы к отладке моделей с помощью инструментов Engee.

Первичная отладка моделей

На начальном этапе разработки модели важно убедиться, что ее компоненты и связи (сигнальные линии) работают корректно. Первичная отладка позволяет выявить базовые ошибки, такие как неправильные параметры блоков, некорректные входные данные или неверную логику выполнения.

Графики сигналов

Самый простой способ проверки — пометить сигналы для записи signal logging 1 и наблюдать на графиках, где модель начинает вести себя некорректно (подробнее см. в статье Графики).

Отключение и пропуск блоков

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

Для отключения/пропуска блока нажмите по нему правой кнопкой мыши и выберите нужную опцию в контекстном меню:

  • Отключить блок — блок полностью исключается из модели, как если бы его не существовало. Его входы и выходы разрываются, и он никак не участвует в процессе моделирования. Это позволяет проверить, как модель будет работать без этого блока. Следовательно, если блок отключен, то сигнал не передается через него, и компоненты, связанные с его выходами, не получают данных.

    comment out 1

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

    comment through 1

    Пропуск недоступен для некоторых блоков.

Вкладка «Свойства» окна настроек

settings first

Выбор режима симуляции

Параметр Режим позволяет настроить выполнение симуляции в зависимости от задач отладки и производительности. Для отладки особенно полезен режим, который минимизирует время запуска и упрощает работу с моделью. Всего доступно два режима:

  • Быстрая инициализация — модель запускается максимально быстро за счет упрощенной типизации и отключения оптимизаций. Этот режим удобен для отладки, так как позволяет оперативно проверять изменения в модели без долгого ожидания запуска. Особенно полезен при частых изменениях структуры или параметров модели.

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

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

Управление скоростью симуляции

Параметр Управлять скоростью симуляции позволяет задать соотношение времени симуляции к реальному времени, указывая, сколько секунд моделирования должно пройти за одну реальную секунду.

Настройка полезна для отладки, так как замедление симуляции помогает лучше проанализировать поведение модели в реальном времени. Это позволяет:

  • Наглядно отслеживать изменения сигналов на графиках;

  • Удобно работать с анимацией, чтобы поэтапно проверять выполнение модели.

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

Вкладка «Отладка» окна настроек

Отображение информации

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

information display 1

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

    Пример отображения типов данных

    datatypes function engee

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

    Примеры отображения с разными сигналами
    • Скалярный сигнал — единичное значение данных, которое не имеет направления и является простейшим типом сигнала:

      example dimension scalar

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

      example dimension vector

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

      example dimension matrix

  • Частота дискретизации сигнала — отображает частоту дискретизации блоков модели. Мелкий шаг дискретизации может привести к увеличению объема данных, что может замедлить выполнение моделирования. Слишком крупный шаг может привести к потере точности расчета модели. Для управления частотой дискретизации сигнала удобно использовать блок Rate Transition.

    Пример с частотой дискретизации

    rate transition example 1

    Здесь для блока 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 — первый исполняемый блок в модели. Эта опция помогает контролировать последовательность выполнения блоков во избежание нежелательных зависимостей и улучшает читаемость модели.

    Пример порядка выполнения

    order feature models

Запись сигналов

Запись сигналов позволяет фиксировать результаты моделирования и анализировать их для последующей диагностики и отладки. В Engee доступны два способа записи сигналов:

signal recording 1

  • Сохранять результаты симуляции в рабочую область — позволяет сохранить результаты симуляции модели в рабочую область (окно переменных img65) в виде переменной simout. Это позволяет получить доступ к данным после завершения симуляции и использовать их для анализа, визуализации или последующей обработки. Подробнее о сохранении результатов симуляции читайте в статье.

    • Физические переменные — позволяет записать данные с выбранных блоков. Для записи подходят только блоки из библиотеки Физическое моделирование. Нажмите правой кнопкой мыши по блоку, сигнал с которого хотите записать и выберите опцию Записать физические сигналы в контекстном меню:

      physical variables recording 1

      Записанные переменные отображаются в модуле Графики graphs icon 1 и в приложении Инспектор данных.

      Примеры записанных сигналов

      Записанные переменные в модуле Графики:

      graphs variables 1

      Записанные переменные в приложении Инспектор данных:

      data inspector variables 1

  • Результаты инициализации физических переменных — отображает значения физических переменных в окне физических переменных variable viewer icon.

Отладка в реальном времени

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

interactive debugging 1

  • Пошаговое исполнение — позволяет выполнять модель по одному временному шагу за раз. Включение настройки добавляет дополнительные кнопки в верхнее меню моделирования Engee:

    stepping through sim

    В этом режиме можно настроить параметры:

    • Количество сохраненных шагов — параметр определяет, сколько шагов симуляции будет сохраняться в памяти. Полезно для понимания того, как модель достигла текущего состояния, и для отладки, так как позволяет сравнивать изменения на каждом шаге.

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

    • Шагать вперед/назад на — параметр определяет количество шагов, на которое модель будет продвигаться:

      • Шаг вперед move forward — симуляция продолжается на указанное количество шагов. Например, если значение параметра «Шагать вперед/назад на» равно 2, то симуляция продвинется на два шага.

      • Шаг назад move back — симуляция возвращается на указанное количество шагов. Engee восстанавливает рабочую точку состояния модели, от которой и возвращается выбранное количество шагов.

  • Отображение мгновенного значения сигналов — позволяет отмечать сигналы для отображения мгновенного значения во время симуляции или пошагового исполнения. Такой метод нагляден и удобен для зрительного анализа передачи данных между блоками.

    instant values 1

  • Скорость анимации — управляет скоростью работы конечного автомата (поддерживается внутри блока Chart). Имеет четыре режима: выключена (по умолчанию), медленная, средняя и быстрая.

    image3

Точки останова

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

Для открытия редактора точек перейдите в окно настроек debug article icon 1 и во вкладке «Отладка» выберите «Открыть список точек останова»:

breakpoints adding 1

Это откроет редактор для работы с точками останова:

breakpoints 1

Рассмотрим пример, в котором с помощью точек останова симуляция остановится на конкретном этапе. Для этого соберите модель из блоков Sine Wave и Terminator, включите запись сигнала:

sine wave terminator model

Нажатием левой кнопки мыши выделите сигнальную линию и в редакторе точек останова нажмите breakpoint add. В открывшемся окне выберите меньше нуля как показано на рисунке:

breakpoints editing 1

Созданная точка останова будет иметь характерную красную метку на сигнальной линии:

sine wave terminator model 1

Запустите симуляцию. Симуляция встанет на паузу на третьей секунде, а график модели будет выглядеть так:

sine wave terminator model 2

Сработавшая точка останова будет помечена зеленым цветом в редакторе, а количество срабатываний будет показано в столбце «Срабатывания»:

sine wave terminator model 3