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

Программная обработка результатов симуляции в Engee

В этой статье мы расскажем, как сохранять результаты симуляций с помощью переменной simout. Рассмотрим работу с переменной на основе простого примера — вывода синусоиды при помощи блока Генератор синусоиды.

По умолчанию переменная simout не создается после завершения симуляции модели. Для ее появления поставьте галочку Сохранять результаты симуляции в рабочую область в окне настроек debug article icon 1:

simout open 1

Переменная simout в Engee: интеграция и взаимодействие

Создайте модель, используя блоки Генератор синусоиды и Заглушка. Для этого разместите их на рабочей области, соедините сигнальной линией и включите запись сигнала с помощью контекстного меню сигнальной линии. (см. в Запись сигналов в Engee).

simout 1

В этом примере все параметры (решатель и параметры блока Генератор синусоиды) — остаются по умолчанию. График симуляции синусоидального сигнала отобразится в окне графиков.

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

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

simout 2

Переменная simout формирует DataFrame – структуру данных, представленную в виде таблицы. Ячейки этой таблицы автоматически заполняются данными результатов симуляции. Для удобства сохраните таблицу в формате CSV (в примере названа result.csv).

К переменной simout можно обратиться через команду collect. Команда собирает данные с переменной simout и сохраняет их в новую переменную. Для выполнения команды создайте переменную (в этом примере result) и сохраните результаты симуляции, введя следующий код в командную строку:

result = collect(simout["newmodel_1/Sine Wave.1"])

где:

  • result – имя переменной, в которую сохраняются данные о симуляции (может быть переименована).

  • newmodel_1 – имя текущей модели.

  • Sin Wave – имя блока, который выдает данные.

  • 1 – номер порта, с выхода которого считываются значения для переменной simout и к которому добавлена запись сигнала.

Полученный результат можно наблюдать в виде таблицы в командной строке.

simout 4

Далее запишите данные о проведенной симуляции в файл формата CSV. Данные внутри переменной result сохраните в CSV-файл result.csv с помощью следующих команд:

using CSV
CSV.write("result.csv", result)

где:

  • using CSV – строка, указывающая, что код будет использовать функциональность из библиотеки CSV. В Julia ключевое слово using используется для импорта функций и типов из пакетов.

  • CSV.write("result.csv", result) – выполняет запись данных в файл формата CSV. Функция CSV.write принимает два аргумента: файл в формате CSV "result.csv" и переменную result. В итоге код берет переменную result и записывает ее содержимое в файл "result.csv" в формате CSV.

Полученные результаты сохранены в файле "result.csv", который отображается в файловом браузере.

simout 5

В полученном CSV-файле представлены численные результаты работы блока Генератор синусоиды с заданными параметрами (в этом примере по умолчанию). Результаты представлены в виде столбцов time и value, где к каждому моменту времени соответствует значение симуляции блока Генератор синусоиды.

CSV-файл с результатами симуляции также можно получить с помощью блока В CSV-файл.

Можно убедиться в корректности сохранения данных в переменной simout визуально, отобразив график в командной строке или редакторе скриптов:

using Plots
plot(result.time, result.value)

Полученный график будет совпадать с тем, что был получен ранее в окне графиков:

simout graph result

Таким образом, статья демонстрирует как легко сохранять результаты симуляций помощью переменной simout и нескольких строчек кода. Такой подход прост в применении и обеспечивает сохранность данных симуляции в удобном и универсальном формате CSV.