Программная обработка результатов симуляции в Engee
В этой статье мы расскажем, как сохранять результаты симуляций с помощью переменной simout. Рассмотрим работу с переменной на основе простого примера — вывода синусоиды при помощи блока Sine Wave.
|
По умолчанию переменная
|
Переменная simout в Engee: интеграция и взаимодействие
Создайте модель, используя блоки Sine Wave и Terminator. Для этого разместите их на рабочей области, соедините сигнальной линией и включите запись сигнала с помощью контекстного меню сигнальной линии. (см. в Запись сигналов в Engee).

В этом примере все параметры (решатель и параметры блока Sine Wave) — остаются по умолчанию. График симуляции синусоидального сигнала отобразится в окне визуализации сигналов
.
Включите запись сигналов при соединении блоков на тех выводах, для которых требуется получить информацию.
|
Если схема собрана правильно, то результат симуляции будет отображен на графике. После окончания симуляции переменная simout будет автоматически создана в рабочей области Engee.

Переменная simout формирует DataFrame – структуру данных, представленную в виде таблицы. Ячейки этой таблицы автоматически заполняются данными результатов симуляции. Для удобства сохраните таблицу в формате CSV (в примере названа result.csv).
К переменной simout можно обратиться через команду collect. Команда собирает данные с переменной simout и сохраняет их в новую переменную. Для выполнения команды создайте переменную (в этом примере result) и сохраните результаты симуляции, введя следующий код в командную строку:
result = collect(simout["newmodel_1/Sine Wave.1"])
где:
-
result– имя переменной, в которую сохраняются данные о симуляции (может быть переименована). -
newmodel_1– имя текущей модели. -
Sin Wave– имя блока, который выдает данные. -
1– номер порта, с выхода которого считываются значения для переменнойsimoutи к которому добавлена запись сигнала.
Полученный результат можно наблюдать в виде таблицы в командной строке.

Далее запишите данные о проведенной симуляции в файл формата 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", который отображается в файловом браузере.

В полученном CSV-файле представлены численные результаты работы блока Sine Wave с заданными параметрами (в этом примере по умолчанию). Результаты представлены в виде столбцов time и value, где к каждому моменту времени соответствует значение симуляции блока Sine Wave.
| CSV-файл с результатами симуляции также можно получить с помощью блока To CSV. |
Можно убедиться в корректности сохранения данных в переменной simout визуально, отобразив график в командной строке или редакторе скриптов:
using Plots
plot(result.time, result.value)
Полученный график будет совпадать с тем, что был получен ранее в окне Графики:

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

