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

Публичные методы программного управления

Здесь представлены все публичные методы программного управления engee. Для ознакомления с методами engee.script обратитесь к статье Программное управление скриптами.

Методы engee

engee.add_block(block_identity::String, tgt_block_path::String; sync_gui::Bool=false)

Добавляет блок из библиотеки.

Аргументы

  • lib_block_path::String: полный путь до блока в библиотеке. Путь начинается с /.

  • tgt_block_path::String: путь до целевой системы и ожидаемое имя нового блока. Если указано только имя системы (например, "newmodel_1/"), то имя блока будет автоматически сгенерировано. Если указан полный путь с именем блока (например, "newmodel_1/Sum1"), то блок получит указанное имя.

  • sync_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

engee.add_block("/Basic/Math Operations/Add", "newmodel_1/")
engee.add_block("/Basic/Math Operations/Add", "newmodel_1/Add_block_new")

Также можно добавить блок из библиотеки в систему и сразу присвоить ему имя.

engee.add_block("/Basic/Math Operations/Complex to Real-Imag", "newmodel_1/Test_name")
engee.add_line(src_port::String, dst_port::String) = engee.add_line(engee.gcs(), src_port::String, dst_port::String)
engee.add_line(system::String|System, src_port::String, dst_port::String)
engee.add_line(system_id::UUID, src_port::String, dst_port::String)

Добавляет связь (поток данных) между блоками.

Аргументы

  • system::System: путь до системы или объект типа System.

  • src_port::String: полный путь до out (выходного) порта блока. В качестве названия порта используется его порядковый номер. Формат записи — "system_name/block_name/idx". Для физических блоков используется программное имя порта, например, Resistor/ac_1.

  • tgt_port::String: полный путь до in (входного) порта блока. Название и формат записи по аналогии с входным портом.

  • syng_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

# Соединить первый входной порт блока `Sine Wave` и первый выходной порт блока `Terminator` в текущей модели
engee.add_line("Sine Wave/1", "Terminator/1")
# Первый параметр может быть объектом `System`
system = engee.gcs()

# Вызов эквивалентен предыдущему
engee.add_line(system, "Sine Wave-1/1", "Terminator-1/1")

# Для физических блоков
engee.add_line("Resistor/ac_1", "Current Sensor/ac_1")
engee.addpath(path::Vararg{String})

Добавляет один или более путей в системную переменную LOAD_PATH. LOAD_PATH — это системная переменная, которую Engee использует для поиска нужных исполняемых объектов (например, .engee, .ngscript), а также любых других путей, используемых в командах.

Аргументы

path::Vararg{String}: один или более путей в файловой системе.

Примеры

engee.addpath("/user/models")
engee.load("model.engee") #загрузка модели
engee.clear()

Очищает все переменные в текущем рабочем пространстве. clear() удаляет все данные, хранящиеся в переменных, чтобы освободить память под новые вычисления и потоки данных. Возвращает nothing.

engee.clear_all()

Очищает все переменные, функции, и defined модули из текущего рабочего пространства. clear_all() возвращает текущее рабочее пространство в исходное состояние. Возвращает nothing.

engee.close(model_name::String; force::Bool = false)
engee.close(model::Model; force::Bool = false)
engee.close(; force::Bool = false)

Закрывает модель с именем model_name. Текущей становится модель, открытая левее в панели навигации по моделям. Если модель не указана, то закрывает текущую модель. Если текущая модель не задана, то ничего не делает. Если модель уже не существует, то ничего не делает.

Аргументы

  • model_name::String: имя модели, которая будет закрыта.

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе.

  • force::Bool: по умолчанию равен false. Если есть несохраненные изменения и параметр равен false, то завершается с ошибкой. Если равен true, то несохраненные изменения будут потеряны.

Примеры

# Выгрузить из памяти модель `newmodel_1`
engee.close("newmodel_1")

# Выгрузить из памяти модель `newmodel_1` без сохранения последних изменений
engee.close("newmodel_1", force=true)

# Закрыть модель `newmodel_1` (выгрузить и убрать с холста)
engee.close("newmodel_1", force=true, sync_gui=true)
engee.close_all()
engee.close_all(; sync_gui=true)

Закрывает все модели.

Примеры

# Выгрузить из памяти все открытые модели
engee.close_all()

# Закрыть все модели (выгрузить из памяти и закрыть на холсте)
engee.close_all(sync_gui=true)
engee.compare_models(model_path_1::String, model_path_2::String; subsystem_id_a=UUID_YOU_SUBSYSTEM_IN_MODEL_m)

Производит сравнение пары моделей и возвращает список различий.

Аргументы

  • model_path_1::String: путь к первой модели, которую нужно сравнить.

  • model_path_2::String: путь ко второй модели для сравнения с первой.

  • subsystem_id_a: идентификатор подсистемы, который используется для сравнения только определенной части модели (в подсистеме). Для вызова используется конкретный UUID. Этот параметр может быть полезен, если требуется сравнение конкретной подсистемы внутри модели.

Примеры

# Абсолютный путь (указание полного пути до файла модели)
m1 = "/user/modelname_1.engee"

# Относительный путь (указание относительного пути до файла модели)
m2 = "modelname_2.engee"

# Вернет результат сравнения m1 и m2
engee.compare_models(m1, m2)
engee.convert_model(model_path::String,[out_path::String])

Генерирует скрипт программного управления на языке Julia для указанной модели. Если указан путь out_path, то скрипт сохраняется в файл с указанным именем (расширение можно задать произвольно, но для последующего запуска в Julia рекомендуется использовать .jl). Если путь не указан, то результат возвращается как строка.

Аргументы

  • model_path::String: путь к исходной модели в формате .engee или .slx, которую необходимо преобразовать.

  • out_path::String: путь для сохранения сгенерированного скрипта. Если этот аргумент не указан, то скрипт может быть сохранен в папке по умолчанию (/user).

Примеры

# Получение абсолюнтого пути и вывод Engee-скрипта
model_path = "/user/newmodel_1.engee"
engee.convert_model(model_path)

# Получение относительного пути и вывод Engee-скрипта
m_abs_path = "newmodel_2.engee"
engee.convert_model(m_abs_path)
engee.copy_block(src_block_path::String, tgt_block_path::String)

Копирует блок из системы.

Аргументы

  • src_block_path::String: полный путь до блока в системе.

  • tgt_block_path::String: путь до системы и ожидаемое имя. Формат записи — path/to/system/new_block_name. Если имя не указано, то задается автоматически.

Примеры

# Добавить блок из модели `newmodel_1` и присвоить ему имя в модели `newmodel_2` автоматически
engee.copy_block("newmodel_1/Add-3", "newmodel_2/")

# Добавить блок из модели `newmodel_1` с именем "Test_name" в модель `nemodel_2`
engee.copy_block("newmodel_1/Custom Block Name", "newmodel_2/Test_name")
engee.copy_contents(src_system_path::String, tgt_system_path::String)
engee.copy_contents(src_system_id::UUID, tgt_system_id::UUID)

Копирует содержимое одной системы в другую. Целевая система должна быть пустой. Рекурсивное копирование запрещено.

Аргументы

  • src_system_path::String: путь до системы, из которой производится копирование.

  • tgt_system_path::String: путь до системы, в которую производится копирование.

  • src_system_id::UUID: ID системы, из которой производится копирование.

  • src_system_id::UUID: ID системы, из которой производится копирование.

Примеры

# Копирование содержимого из root системы `newmodel_1` в root систему `newmodel_2`
engee.copy_contents("newmodel_1", "newmodel_2")

# Копирование содержимого из системы "newmodel_1/Subsystem" в систему `newmodel_1/Subsystem-1`
engee.copy_contents("newmodel_1/Subsystem", "newmodel_1/Subsystem-1")
ERROR: "newmodel_1/Subsystem-1 must be empty. Use `engee.delete_contents`"
engee.delete_contents("newmodel_1/Subsystem-1")
engee.copy_contents("newmodel_1/Subsystem", "newmodel_1/Subsystem-1")
engee.create(model_name::String; sync_gui=false)::Model

Создает новую модель с именем model_name и параметрами по умолчанию. Возвращает Model. Модель становится текущей моделью. Ее корневая система становится текущей системой. Если модель с таким именем уже существует, то завершается ошибкой EngeeException.

Аргументы

  • model_name::String: желаемое имя модели в системе. Имя модели не должно содержать символ /.

  • sync_gui: по умолчанию равен false. Если равен true, то новая созданная модель отобразится на экране.

Примеры

engee.create("NewModel")
Model(
        name: NewModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
engee.delete_block(block_path::String; sync_gui::Bool=false)

Удаляет блок, все связанные линии и записываемые порты из системы.

Аргументы

  • block_path::String: путь до блока.

  • syng_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

# Удалить блок Sine Wave и все связанные с ним линии и блоки из системы
engee.delete_block("newmodel_1/Sine Wave")
engee.delete_contents(system_path::String)
engee.delete_contents(system_id::UUID)

Удаляет содержимое системы.

Аргументы

  • system_path::String: путь до системы, контент которой будет удален.

  • system_id::UUID: ID системы, контент которой будет удален.

Примеры

# Удаление всех блоков из подсистемы Subsystem-1 в модели newmodel_1
engee.delete_contents("newmodel_1/Subsystem-1")
engee.delete_line(src_port::String, dst_port::String; sync_gui::Bool=false) = delete_line(gcs(), src_port::String, dst_port::String; sync_gui::Bool=false)
engee.delete_line(system::System, src_port::String, dst_port::String; sync_gui::Bool=false)

Удаляет связь (поток данных) между блоками.

Аргументы

  • system::String||System: путь до системы или объект типа System.

  • src_port::String: полный путь до out (выход) порта блока. В качестве названия порта используется его порядковый номер. Формат записи — "system_name/block_name/idx".

  • tgt_port::String: полный путь до in (вход) порта блока. Название и формат записи по аналогии с out портом.

  • syng_gui::Bool=false: именованный параметр для синхронизации с графическим интерфейсом.

Примеры

# Удалить соединение между первым входным портом блока `Sine Wave` и первым выходным портом блока `Terminator` в модели `newmodel_1`
engee.delete_line("newmodel_1", "Sine Wave/1", "Terminator/1")

system = engee.gcs()
engee.delete_line(system, "Sine Wave-1/1", "Terminator-1/1")

# Без указания системы. По умолчанию вызывается применительно к текущей системе.
engee.delete_line("Sine Wave-2/1", "Terminator-2/1")
engee.find_system(; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())

Совершает поиск сущностей (моделей/систем/блоков) во всех доступных моделях. Возвращает пути до найденных сущностей.

Аргументы

  • blocktype::Maybe{String}=nothing: тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth::Maybe{Int}=nothing: максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams::Vector: возвратятся только блоки, имеющие заданные параметры.

Примеры

# Список всех сущностей
engee.find_system(;)

# Список сущностей моделей, не заходя в подсистемы
engee.find_system(; depth=0)

# Список всех блоков типа `Sin`
engee.find_system(; blocktype="Sin")

# Список всех блоков с полем `Value` равным `1.0`
engee.find_system(; blockparams=["Value"=>1.0])

engee.find_system(path::String; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())

Совершает поиск сущностей (моделей/систем/блоков) по указанному пути. Возвращает пути до найденных сущностей.

Аргументы:

  • path::String: путь до сущности, в которой будет проводиться поиск

  • blocktype::Maybe{String}=nothing: тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth::Maybe{Int}=nothing: максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams::Vector: возвратятся только блоки, имеющие заданные параметры.

Примеры

# Список сущностей, из которых состоит модель с именем `newmodel_1` (подсистем, блоков)
engee.find_system("newmodel_1")

# Список сущностей модели `newmodel_1` не заходя в подсистемы
engee.find_system("newmodel_1"; depth=0)

# Список всех блоков типа `Sin` в модели `newmodel_1`
engee.find_system("newmodel_1"; blocktype="Sin")

# Список всех блоков с полем `Value` равным `1.0` в модели `newmodel_1`
engee.find_system("newmodel_1"; blockparams=["Value"=>1.0])

engee.find_system(system::System; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())

Совершает поиск сущностей (моделей/систем/блоков) в указанной системе, переданной как объект типа System. Возвращает пути до найденных сущностей.

Аргументы:

  • system::System: система, в которой будет проводиться поиск.

  • blocktype::Maybe{String}=nothing: тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth::Maybe{Int}=nothing: максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams::Vector: возвратятся только блоки, имеющие заданные параметры.

Примеры

# Список сущностей, из которых состоит cистема system (подсистем, блоков)
engee.find_system(system)

# Список сущностей системы system не заходя в подсистемы
engee.find_system(system; depth=0)

# Список всех блоков типа `Sin` в системе system
engee.find_system(system;  blocktype="Sin")

# Список всех блоков с полем `Value` равным `1.0` в системе system
engee.find_system(system; blockparams=["Value"=>1.0])

engee.find_system(model::Model; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())

Совершает поиск сущностей (моделей/систем/блоков) в указанной модели, переданной как объект типа Model. Возвращает пути до найденных сущностей.

Аргументы:

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе. Поиск будет проводиться в этой модели.

  • blocktype::Maybe{String}=nothing: тип блока для поиска. Возвратятся только блоки с заданным типом.

  • depth::Maybe{Int}=nothing: максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing.

  • blockparams::Vector: возвратятся только блоки, имеющие заданные параметры.

Примеры

# Список сущностей, из которых состоит модель model (подсистем, блоков)
engee.find_system(model)

# Список сущностей модель model не заходя в подсистемы
engee.find_system(model; depth=0)

# Список всех блоков типа `Sin` в модели model
engee.find_system(model; blocktype="Sin")

# Список всех блоков с полем `Value` равным `1.0` в модели model
engee.find_system(model; blockparams=["Value"=>1.0])
engee.get_current_block()::String
engee.gcb()::String

Возвращает путь до текущего (выбранного) блока. Если блок не выбран, то возвращает nothing.

engee.get_current_model()::Model
engee.gcm()::Model

Возвращает текущую (активную) модель (возвращает объект с типом Model). Если текущей модели нет, то бросает исключение EngeeException.

Примеры

engee.get_current_model()
Model(
        name: ssc_bridge_rectifier_modified
        id: c390ed60-d2c4-4e17-85df-07129aca8ba4
)
engee.get_current_system()::System
engee.gcs()::System

Возвращает текущую систему как объект типа System. Если текущая модель отсутствует, то вызывает ошибку EngeeException.

Примеры

engee.get_current_system()
System(
        name: root
        id: 4db18dce-1bca-46ca-8441-6f4802a78c6f
)
engee.generate_code(path/to/modelname.engee::String, path/to/output_dir::String; subsystem_name=subsystem_path::String, subsystem_id=subsystem_id::String, target::String, jl_path::String)

Генерирует код на указанном языке для модели или подсистемы.

Аргументы

  • path/to/modelname.engee::String: абсолютный или относительный путь к модели из которой генерируется код. В качестве аргумента может выступать объект модели (объект типа model, полученный функцией engee.gcm).

  • path/to/output_dir::String: абсолютный или относительный путь к директории, в которую сохранится сгенерированный код. Если директории output_dir не существует — она будет создана автоматически.

  • subsystem_name=path/to/subsystem::String: полный путь к атомарной подсистеме из которой генерируется код.

  • subsystem_id=subsystem_id::String: уникальный идентификатор атомарной подсистемы из которой генерируется код.

  • target::String: указание языка для генерации кода. Поддерживаемые языки — Си (по умолчанию) или Verilog.

  • jl_path::String: абсолютный или относительный путь к файлу .jl, содержащему шаблон для генерации кода.

Примеры

# Генерация кода для подсистемы
engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/Subsystem")

# Генерация через абсолютный путь к модели
engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/codegen_output")

# Генерация через относительный путь к модели
engee.generate_code("newmodel_1.engee", "newmodel_1/codegen_output")

# Получение текущей открытой модели и генерация кода из нее
m = engee.gcm()
engee.generate_code(m, "/user/newmodel_1/codegen_output")
engee.get_all_models(; sorted=true)::Vector{Model}

Возвращает список всех моделей, открытых в текущей сессии, в формате Vector{Model}. Если параметр sorted=true, то возвращает отсортированный по имени список моделей.

Аргументы

sorted::Bool: по умолчанию true. Определяет, будет ли список моделей отсортирован по имени.

Примеры

# Список с перечнем всех открытых моделей
models_list = engee.get_all_models()

# Список с названиями всех открытых моделей
model_names = [m.name for m in engee.get_all_models()]
engee.get_current_block()::String
engee.gcb()::String

Возвращает путь до текущего (выбранного) блока. Если блок не выбран, то возвращает nothing.

engee.get_current_model()::Model
engee.gcm()::Model

Возвращает текущую (активную) модель (возвращает объект с типом Model). Если текущей модели нет, то бросает исключение EngeeException.

Примеры

engee.get_current_model()
Model(
        name: ssc_bridge_rectifier_modified
        id: c390ed60-d2c4-4e17-85df-07129aca8ba4
)
engee.get_current_system()::System
engee.gcs()::System

Возвращает текущую систему как объект типа System. Если текущая модель отсутствует, то вызывает ошибку EngeeException.

Примеры

engee.get_current_system()
System(
        name: root
        id: 4db18dce-1bca-46ca-8441-6f4802a78c6f
)
engee.get_logs([m::Model])

Получает сообщения из журнала, связанные с моделью. Возвращает массив с сообщениями.

Аргументы

m::Model: модель, относительно которой выполняется операция, по умолчанию, текущая модель. Если модель не открыта, то выводит ошибку NoModelOpenedException.

engee.get_param(model::Model)
engee.get_param(path::String, param::Union{Symbol, String})::Any
engee.get_param(path::String, param::Union{Symbol, String})::Any
engee.get_param(block::Block)
engee.get_param(block::Block, param::Union{Symbol, String})::Any

Для моделей

  • Если указано имя модели, но не указано имя параметра, возвращает настройки симуляции для выбранной модели в виде словаря.

  • Если же имя параметра указано, то возвращает значение параметра.

Аргументы

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе. Параметры будут извлечены из этой модели.

  • path::String: строковый путь к модели, если вместо объекта модели используется путь.

  • param::Union{Symbol, String}: имя параметра, который нужно извлечь. Может быть строкой или символом.

Для блоков

  • По пути до блока возвращает либо значение параметра (если указан), либо словарь с параметрами.

  • Если же имя параметра указано, то возвращает значение параметра.

Аргументы

  • block::Block: объект блока, для которого нужно извлечь параметры.

  • path::String: строковый путь к блоку, если вместо объекта блока используется путь.

  • param::Union{Symbol, String}: имя параметра блока, который нужно извлечь. Может быть строкой или символом.

engee.get_results(model_name::String)
engee.get_results(model::Model)
engee.get_results()

Возвращает результаты последней симуляции модели в виде словаря Dict{String, DataFrame}, где ключ — имя отслеживаемого порта. Если модель не открыта, то выводит ошибку NoModelOpenedException. Если симуляция не запущена, то выводит ошибку ModelIsNotRunningException.

Аргументы

model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе. Операция возвращения результатов последней симуляции будет выполняться относительно этой модели.

Примеры

m = engee.load("start/examples/powersystems/models/power_line_apv.engee")
results1 = engee.run(m);
results2 = engee.get_results(m)
Dict{String, DataFrame} with 6 entries:
  "Va" => 40001×2 DataFrame…
  "Ia" => 40001×2 DataFrame…
  "Ib" => 40001×2 DataFrame…
  "Ic" => 40001×2 DataFrame…
  "Vc" => 40001×2 DataFrame…
  "Vb" => 40001×2 DataFrame…
results1 == results2
true
engee.get_status()::SimulationStatus

Возвращает статус симуляции как объект типа SimulationStatus. Возвращает один из пяти статусов симуляции модели:

  • BUILDING: модель строится.

  • READY: модель готова.

  • NOT_READY: модель не готова.

  • RUNNING: модель в процессе выполнения.

  • PAUSED: выполнение модели приостановлено.

Примеры

engee.get_status()
READY
engee.is_dirty(model::Model)::Bool
engee.is_dirty(model_path::String)

Проверяет, есть ли несохраненные изменения модели. Возвращает true при наличии несохраненных изменений, иначе — false. Если модель уже закрыта, то возвращает false.

Аргументы

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе.

  • model_path::String: путь до модели.

engee.load(file_path::String; name::Maybe{String}=nothing, force::Bool = false)::Model

Загружает модель из файла с расширением .engee, расположенного в file_path. Возвращает Model. Модель становится текущей моделью. Ее корневая система становится текущей системой. Особенности:

  • Если модель с таким именем уже существует и параметр равен true, то перезагружает ее и все не сохраненные ранее изменения будут утеряны, если же равен false, то бросает исключение. По умолчанию равен false.

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

  • Если у файла другое расширение или он не существует, бросает исключение.

  • Если указать параметр sync_gui=true, то загруженная модель отобразится на экране.

Аргументы

  • file_path::String: путь к файлу, из которого будет загружена модель или данные.

  • name::Maybe{String}: используется для задания имени загружаемой модели или данных.

  • force::Bool: по умолчанию равен false. Если равен true, то загрузка будет выполнена, если файл уже был ранее загружен.

Примеры

engee.load("NewModel.engee"; force = true)
Model(
        name: NewModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
engee.open(path::String)::System
engee.open(model::Model)::System
engee.open(system::System)::System

Возвращает открытую систему System. Если модели или системы не существует, то завершается ошибкой EngeeException. Поведение метода изменяется, если:

  • В параметре указано название model_name открытой ранее модели, она становится текущей моделью. Ее корневая система становится текущей системой;

  • В параметре указан путь до существующей системы system_path, содержащая ее модель становится текущей моделью, а сама система — текущей системой, которая отображается в визуальном редакторе. Возвращает System. Также вместо пути можно передать непосредственно экземпляр Model или System.

Аргументы

  • path::String: путь до модели.

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе. По умолчанию - текущая модель.

  • system::System: путь до системы или объект типа System.

Примеры

# open model:
s1 = engee.open("NewModel")
System(root)
engee.gcm(), engee.gcs()
(Model(
        name: NewModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
, System(
        name: root
        id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
)
# open system:
engee.open("AnotherModel/Subsystem-1")
System(
        name: root
        id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
engee.gcm(), engee.gcs()
(Model(
        name: AnotherModel
        id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
, System(
        name: Subsystem-1
        id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
)
engee.pause()

Приостанавливает запущенную симуляцию.

engee.reset()

Перезапускает ядро симуляции.

engee.resume(; verbose::Bool = false)

Возобновляет приостановленную симуляцию.

Аргументы

verbose::Bool = false: включает вывод сообщений о ходе выполнения симуляции.

engee.rmpath(path::String)

Удаляет путь из системной переменной LOAD_PATH. LOAD_PATH — это системная переменная, которую Engee использует для поиска нужных исполняемых объектов (например, .engee, .ngscript), а также любых других путей, используемых в командах.

Аргументы

path::String: путь в файловой системе, который необходимо удалить из LOAD_PATH.

Примеры

engee.addpath("/user/models")

# Загрузка модели
engee.load("model.engee")
engee.rmpath("/user/models")

# Загрузка модели выдаст ошибку
engee.load("model.engee")
engee.run([m::Model]; verbose=false)

Запускает исполнение модели. Если модель не указана, то запускает симуляцию текущей модели. Если модель не открыта, то бросается исключение NoModelOpenedException.

Аргументы

  • verbose: уточнение необходимости вывода прогресса исполнения модели на печать (по умолчанию равен false — не выводится).

  • m::Model: модель, относительно которой выполняется операция. По умолчанию — текущая модель.

Примеры

m = engee.load("/user/start/examples/power_systems/power_line_apv/power_line_apv.engee")
engee.run(m)
Dict{String, DataFrame} with 6 entries:
  "Va" => 40001×2 DataFrame…
  "Ia" => 40001×2 DataFrame…
  "Ib" => 40001×2 DataFrame…
  "Ic" => 40001×2 DataFrame…
  "Vc" => 40001×2 DataFrame…
  "Vb" => 40001×2 DataFrame…

# Пример асинхронного, бесконечного моделирования
m = engee.load("/user/start/examples/controls/PID_controller/pid_controls_tf_stable.engee")
engee.set_param!(m, "end_time" => Inf)
ch = Channel(c -> put!(c, engee.run(m)))
sleep(10)
engee.stop()
take!(ch)
engee.save(model_name::String, file_path::String; force::Bool = false)
engee.save(model::Model, file_path::String; force::Bool = false)

Сохраняет модель с именем model_name по пути file_path в файл с расширением .engee. Если необходимо, то создаются промежуточные директории. Возвращает nothing.

Аргументы

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе.

  • model_name::String: желаемое имя модели в системе.

  • file_path::String: директория сохраняемой модели.

  • force::Bool: по умолчанию равен false. Если файл уже существует и параметр равен true, то перезаписывает файл. Если равен false, то завершается ошибкой FileAlreadyExists.

Примеры

# Сохранить модель `newmodel_1` в новый файл `newmodel_1.engee`
engee.save("newmodel_1", "newmodel_1.engee")

# Сохранить модель `newmodel_1` в файл `newmodel_1.engee` (перезаписать файл)
engee.save("newmodel_1", "newmodel_1.engee", force = true)
engee.screenshot(to_print::Union{Model, String, System}, save_path::String; position_mode::String="auto")

Сохраняет скриншот модели/системы в файл по пути save_path. Поддерживаемые форматы: PNG, SVG. В других случаях ошибка выводится ошибка ErrorException("unsuported picture format: <FORMAT>"). Позиционирование: "auto", "tiled", в других случаях применится "auto".

Аргументы

  • to_print::Union{Model, String, System}: имя модели, с которой будет делаться скриншот.

  • save_path::String: путь для сохранения скриншота.

  • position_mode::String : позиционирование скриншота. Используются следующие режимы: "auto" — автоматически определить оптимальное расположение блоков (стандартный режим); "tiled" — разложить блоки сеткой, чтобы избежать наложений и сделать структуру более читаемой. Любое другое значение воспринимается как "auto".

Примеры

engee.screenshot(loaded_model, "/user/saved.png"[; position_mode="tiled"])
engee.set_log(system_path::String, port_path::String; sync_gui=false)
engee.set_log(system::System, port_path::String; sync_gui=false)
engee.set_log(port_path::String; sync_gui=false)

Устанавливает порт на запись. Для отображения в графическом интерфейсе, необходимо передать именованный параметр sync_gui=true.

Аргументы

  • system_path::String: система, в которой находится порт.

  • system::System: система, в которой находится порт.

  • port_path::String: относительный путь до порта. Если система не предоставлена в качестве первого параметра, то используется открытая система по умолчанию.

Примеры

engee.set_log("Sine Wave/1"; sync_gui=true)

# Порт блока Sine Wave в текущей системе установлен на запись
engee.set_log("newmodel_1/Subsystem","Sine Wave/1")

# Порт блока Sine Wave в системе `newmodel_1/Subsystem` установлен на запись
system = engee.gcs()
engee.set_log(system, "Sine Wave/1")

# Порт блока Sine Wave в системе `system` установлен на запись
engee.run()
Dict{String, DataFrames.DataFrame} with 1 entry:
  "Sine Wave.1" => 1001×2 DataFrame…
engee.set_param!(model::Model | model_name::String, param::Pair...)

Обновляет параметры моделей. Возвращает nothing. Если параметры некорректны, то возникает ошибка.

Аргументы

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе. Параметры будут обновлены для этой модели.

  • model_name::String: строковый путь или имя модели.

  • param::Pair...: один или несколько параметров в формате "name" => value.

Примеры

engee.set_param!("model_1", "SolverName" => "ode45", "StopTime" => "10")
# Получаем параметры модели model_1
param_1 = engee.get_param("model_1")
# Копируем параметры из model_1 в model_2
engee.set_param!("model_2", param_1)

Пример показывает, как можно использовать get_param и set_param! вместе для копирования параметров между моделями.

Структура настроек симуляции привязывается к конкретной модели — можно изменять настройки модели непосредственно через задание полей структуры, тогда:

params = engee.get_param("newmodel_1")

# Структура params привязана к конкретной model
params["FixedStep"] = "0.05"
0.05

# Аналогично engee.set_param!("newmodel_1", "FixedStep" => "0.05")

Изменение значений в словаре params не обновляет параметры модели автоматически — это локальная копия. Чтобы изменения вступили в силу, нужно передать словарь обратно с помощью engee.set_param!.

params = engee.get_param("newmodel_1")
params["FixedStep"] = "0.05"
params["SolverName"] = "Euler"
engee.set_param!("newmodel_1", "FixedStep" => params["FixedStep"], "SolverName" => params["SolverName"])

Каждый параметр должен быть представлен как пара (Pair), состоящая из имени параметра и его значения (например, "StartTime" => 0.0). Для параметра param:

Параметры симуляции

  • StartTime::String: время начала симуляции (Float64).

  • StopTime::String: время окончания симуляции (Float64). Чтобы задать бесконечное время симуляции, передайте строку "Inf" или "inf" (engee.set_param!("model_name", "StopTime" => "Inf"))

  • SolverType::String: тип решателя (fixed-step или variable-step).

  • SolverName::String: имя решателя (зависит от выбранного типа).

Параметры для fixed-step

FixedStep::String: шаг симуляции (Float64).

Параметры для variable-step

  • AbsTol::String: абсолютная точность (Float64 или 'auto').

  • RelTol::String: относительная точность (Float64 или 'auto').

  • InitialStep::String: начальный шаг (Float64 или 'auto').

  • MaxStep::String: максимальный шаг (Float64 или 'auto').

  • MinStep::String: минимальный шаг (Float64 или 'auto').

  • OutputTimes::String: интервал вывода (Float64 или 'auto').

  • DenseOutput::Bool: плотный вывод результатов.


engee.set_param!(block::Block | block_path::String, params::Pair{String}...)

Обновляет параметры блоков.

Аргументы

  • block::Block: объект блока.

  • block_path::String: строковый путь к блоку.

  • params::Pair{String}...: параметры блока в формате "name" => value.

Примеры

engee.set_param!("model_name", "StartTime" => 0.0, "StopTime" => 10.0, "SolverType" => "fixed-step", "SolverName" => "ode45")
engee.stop()

Останавливает запущенную симуляцию.

engee.unset_log(system_path::String, port_path::String)
engee.unset_log(system::System, port_path::String)
engee.unset_log(port_path::String)

Снимает порт с записи. Для отображения в графическом интерфейсе необходимо передать именованный параметр sync_gui=true.

Аргументы

  • system_path::String: система, в которой находится порт.

  • system::System: система, в которой находится порт.

  • port_path::String: относительный путь до порта. Если система не предоставлена в качестве первого параметра, то используется открытая система по умолчанию.

Примеры

engee.set_log("Sine Wave/1")

# Порт блока Sine Wave в текущей системе установлен на запись
engee.run()
Dict{String, DataFrames.DataFrame} with 1 entry:
  "Sine Wave.1" => 1001×2 DataFrame…

# Запустили симуляцию и получили результаты
engee.unset_log("Sine Wave/1")

# Порт блока Sine Wave в текущей системе снят с записи
engee.run()
Dict{String, DataFrames.DataFrame}()
engee.update_params()
engee.update_params(model::Model)
engee.update_params(model_name::String)

Пересчитывает на лету параметры блоков запущенной симуляции, перечитывая их актуальные значения из рабочего пространства (Workspace). Если работающей симуляции нет, то функция ничего не делает.

Может принимать в качестве необязательного аргумента имя модели или объект модели, для которой нужно применить обновление параметров.

Аргументы

  • model::Model: объект модели, который может быть загружен в память с помощью функции engee.gcm. Эта модель может быть активной в рабочем пространстве, но не обязательно открыта в графическом интерфейсе.

  • model_name::String: имя модели, параметры которой нужно пересчитать.

Примеры

# Обновляет параметрыы всех блоков в текущей симуляции
engee.update_params()

# Обновляет параметры указанной модели
model = engee.gcm()
engee.update_params(model)

# Обновляет параметры модели по имени
engee.update_params("newmodel_1")
engee.version()

Возвращает короткую версию Engee.

Примеры

engee.version()
"24.10.0"