Публичные методы программного управления
Смотрите также: Применение программного управления моделью |
Здесь представлены все публичные методы программного управления engee.engee
. Для ознакомления с методами engee.script
обратитесь к статье.
Методы Engee.engee
#
Engee.engee.add_block
— Function
engee.add_block(block_identity::String, tgt_block_path::String; sync_gui::Bool=false)
Добавляет блок из библиотеки.
Аргументы
-
lib_block_path::String
: полный путь до блока в библиотеке. Путь начинается с /. -
tgt_block_path::String
: путь до системы и ожидаемое имя example: path/to/system/new block name Если имя не указано, то задается автоматически. -
syng_gui::Bool=false
: именованный параметр для синхронизации с графическим интерфейсом.
Примеры
engee.add_block("/Basic/Math Operations/Add", "newmodel_1/")
Также можно добавить блок из библиотеки в систему и сразу присвоить ему имя.
engee.add_block("/Basic/Math Operations/Complex to Real-Imag", "newmodel_1/Test_name")
#
Engee.engee.add_line
— Function
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.engee.clear
— Function
engee.clear()
Очищает все переменные в текущем рабочем пространстве. clear()
удаляет все данные, хранящиеся в переменных, чтобы освободить память под новые вычисления и потоки данных. Возвращает nothing
.
#
Engee.engee.clear_all
— Function
engee.clear_all()
Очищает все переменные, функции, и defined модули из текущего рабочего пространства. clear_all()
возвращает текущее рабочее пространство в исходное состояние. Возвращает nothing
.
#
Engee.engee.close
— Function
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
. Если есть несохраненные изменения и параметрforce = false
, то завершается с ошибкой. Еслиforce = 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.engee.close_all
— Function
engee.close_all()
engee.close_all(; sync_gui=true)
Закрывает все модели.
Примеры
# Выгрузить из памяти все открытые модели
engee.close_all()
# Закрыть все модели (выгрузить из памяти и закрыть на холсте)
engee.close_all( sync_gui=true )
#
Engee.engee.compare_models
— Function
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" # относительный путь (лежит в папке рядом с test1.engee)
engee.compare_models(m1, m2) # вернет результат сравнения m1 и m2.
#
Engee.engee.convert_model
— Function
engee.convert_model(model_path::String[,out_path::String])
Генерирует engee-скрипт для построения текущей модели с помощью команд программного управления.
Аргументы
-
model_path::String
: путь к модели, которую нужно преобразовать. -
out_path::String
: (опционально) путь для сохранения сгенерированного Engee-скрипта. Если этот аргумент не указан, скрипт может быть сохранен в папке по умолчанию (/user).
Примеры
m_path = "/user/modelname_1.engee" # работа с абсолютным путем
engee.convert_model(m_path) # выведет engee-скрипт
m_abs_path = "modelname_2.engee" # работа с относительным путем
engee.convert_model(m_abs_path)
#
Engee.engee.copy_block
— Function
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.engee.copy_contents
— Function
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.engee.create
— Function
engee.create(model_name::String; sync_gui=false)::Model
Создает новую модель с именем model_name
и параметрами по умолчанию. Возвращает Model
. Модель становится текущей моделью. Ее корневая система становится текущей системой. Если модель с таким именем уже существует, то завершается ошибкой EngeeException
.
Аргументы
-
model_name::String
: желаемое имя модели в системе. Имя модели не должно содержать символ/
. -
sync_gui
: по умолчанию=false
. Если указать параметрsync_gui=true
, то новосозданная модель отобразится на экране.
Примеры
engee.create("NewModel")
Model(
name: NewModel
id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
#
Engee.engee.delete_block
— Function
engee.delete_block(block_path::String; sync_gui::Bool=false)
Удаляет блок, все связанные линии и записываемые порты из системы.
Аргументы
-
block_path::String
: путь до блока. -
syng_gui::Bool=false
: именованный параметр для синхронизации с графическим интерфейсом.
Примеры
engee.delete_block("newmodel_1/Sine Wave") # удалить блок Sine Wave и все связанные с ним линии и блоки из системы
#
Engee.engee.delete_contents
— Function
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.engee.delete_line
— Function
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.engee.find_system
— Function
engee.find_system(; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())
Совершает поиск сущностей (моделей/систем/блоков) во всех доступных моделях. Возвращает пути до найденных сущностей.
Аргументы
-
blocktype
: Тип блока для поиска. Возвратятся только блоки с заданным типом. -
depth
: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing. -
blockparams
: Возвратятся только блоки, имеющие заданные параметры.
Примеры
# Список всех сущностей
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
: Путь до сущности, в которой будет проводится поиск -
blocktype
: Тип блока для поиска. Возвратятся только блоки с заданным типом. -
depth
: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing. -
blockparams
: Возвратятся только блоки, имеющие заданные параметры.
engee.find_system(system::System; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())
Совершает поиск сущностей (моделей/систем/блоков) в указанной системе, переданной как объект типа `System`. Возвращает пути до найденных сущностей.
Аргументы:
-
system
: Система, в которой будет проводится поиск -
blocktype
: Тип блока для поиска. Возвратятся только блоки с заданным типом. -
depth
: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing. -
blockparams
: Возвратятся только блоки, имеющие заданные параметры.
engee.find_system(model::Model; blocktype::Maybe{String}=nothing, depth::Maybe{Int}=nothing, blockparams::Vector{<:Pair{<:AbstractString,<:Any}}=Vector{Pair{String, Any}}())
Совершает поиск сущностей (моделей/систем/блоков) в указанной модели, переданной как объект типа `Model`. Возвращает пути до найденных сущностей.
Аргументы:
-
model
: Модель, в которой будет проводится поиск -
blocktype
: Тип блока для поиска. Возвратятся только блоки с заданным типом. -
depth
: Максимальная глубина поиска (включительно). Для поиска без ограничений нужно передать nothing. Перечисление начинается с 0. По умолчанию nothing. -
blockparams
: Возвратятся только блоки, имеющие заданные параметры.
#
Engee.engee.gcb
— Function
engee.get_current_block()::String
engee.gcb()::String
Возвращает путь до текущего (выбранного) блока. Если блок не выбран, то возвращает nothing
.
#
Engee.engee.gcm
— Function
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.engee.gcs
— Function
engee.get_current_system()::System
engee.gcs()::System
Возвращает текущую систему как объект типа System
. Если текущая модель отсутствует, то вызывает ошибку EngeeException
.
Примеры
engee.get_current_system()
System(
name: root
id: 4db18dce-1bca-46ca-8441-6f4802a78c6f
)
#
Engee.engee.generate_code
— Function
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.engee.get_all_models
— Function
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.engee.get_current_block
— Function
engee.get_current_block()::String
engee.gcb()::String
Возвращает путь до текущего (выбранного) блока. Если блок не выбран, то возвращает nothing
.
#
Engee.engee.get_current_model
— Function
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.engee.get_current_system
— Function
engee.get_current_system()::System
engee.gcs()::System
Возвращает текущую систему как объект типа System
. Если текущая модель отсутствует, то вызывает ошибку EngeeException
.
Примеры
engee.get_current_system()
System(
name: root
id: 4db18dce-1bca-46ca-8441-6f4802a78c6f
)
#
Engee.engee.get_logs
— Function
engee.get_logs([m::Model])
Получает сообщения из журнала, связанные с моделью. Возвращает массив с сообщениями.
Аргументы
m::Model
: модель, относительно которой выполняется операция, по умолчанию, текущая модель. Если модель не открыта, то выводит ошибку NoModelOpenedException
.
#
Engee.engee.get_param
— Function
engee.get_param(model::Model)::ModelParameters
engee.get_param(path::String, param::Union{Symbol, String})::Any
engee.get_param(path::String)::Union{BlockParameters, ModelParameters}
engee.get_param(path::String, param::Union{Symbol, String})::Any
engee.get_param(block::Block)::BlockParameters
engee.get_param(block::Block, param::Union{Symbol, String})::Any
Для моделей
Если указано имя модели, но не указано имя параметра, возвращает настройки симуляции для выбранной модели в виде структуры ModelParameters
. Если же имя параметра указано, возвращает значение параметра.
Аргументы
-
model::Model
: объект модели, из которого извлекаются параметры. -
path::String
: строковый путь к модели, если вместо объекта модели используется путь. -
param::Union{Symbol, String}
: имя параметра, который нужно извлечь. Может быть строкой или символом.
Для блоков
По пути до блока возвращает либо значение параметра (если указан), либо объект класса BlockParameters
. Если же имя параметра указано, возвращает значение параметра.
Аргументы
-
block::Block
: объект блока, для которого нужно извлечь параметры. -
path::String
: строковый путь к блоку, если вместо объекта блока используется путь. -
param::Union{Symbol, String}
: имя параметра блока, который нужно извлечь. Может быть строкой или символом.
#
Engee.engee.get_results
— Function
engee.get_results(model_name::String)
engee.get_results(model::Model)
engee.get_results()
Возвращает результаты последней симуляции модели в виде словаря Dict{String, DataFrame}
, где ключ — имя отслеживаемого порта. Если модель не открыта, то выводит ошибку NoModelOpenedException
. Если симуляция не запущена, то выводит ошибку ModelIsNotRunningException
.
Аргументы
m::Model
: модель, относительно которой выполняется операция, по умолчанию, текущая модель.
Примеры
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.engee.get_status
— Function
engee.get_status()::SimulationStatus
Возвращает статус симуляции как объект типа SimulationStatus
. Возвращает один из пяти статусов симуляции модели:
-
BUILDING
: модель строится. -
READY
: модель готова. -
NOT_READY
: модель не готова. -
RUNNING
: модель в процессе выполнения. -
PAUSED
: выполнение модели приостановлено.
Примеры
engee.get_status()
READY
#
Engee.engee.is_dirty
— Function
engee.is_dirty(model::Model)::Bool
engee.is_dirty(model_path::String)
Проверяет, есть ли несохраненные изменения модели. Возвращает true
при наличии несохраненных изменений, иначе — false
. Если модель уже закрыта, то возвращает false
.
#
Engee.engee.load
— Function
engee.load(file_path::String; name::Maybe{String}=nothing, force::Bool = false)::Model
Загружает модель из файла с расширением .engee
, расположенного в file_path
. Возвращает Model
. Модель становится текущей моделью. Ее корневая система становится текущей системой. Особенности:
-
Если модель с таким именем уже существует и параметр
force = true
, то перезагружает ее и все не сохраненные ранее изменения будут утеряны, если жеforce = false
, то бросает исключение. По умолчаниюforce = 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.engee.open
— Function
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
: модель, относительно которой выполняется операция. По умолчанию — текущая модель. -
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.engee.resume
— Function
engee.resume(; verbose::Bool = false)
Возобновляет приостановленную симуляцию.
Аргументы
verbose::Bool = false
: включает вывод сообщений о ходе выполнения симуляции.
#
Engee.engee.run
— Function
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.engee.save
— Function
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
: объект типа Model. -
model_name::String
: желаемое имя модели в системе. -
file_path::String
: директория сохраняемой модели. -
force::Bool
: по умолчанию= false
. Если файл уже существует и параметрforce = true
, то перезаписывает файл. Еслиforce = 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.engee.screenshot
— Function
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
: позиционирование скриншота.
Примеры
engee.screenshot(loaded_model, "/user/saved.png"[; position_mode="tiled"])
#
Engee.engee.set_log
— Function
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.engee.set_param!
— Function
engee.set_param!(model::Model | model_name::String, param::Pair...)
engee.set_param!(model::Model | model_name::String, param::ModelParameters)
Обновляет параметры моделей. Возвращает nothing
. Если параметры некорректны, то возникает ошибка.
Аргументы
-
model::Model
: объект модели, для которой задаются параметры. -
model_name::String
: строковый путь или имя модели. -
param::Pair...
: один или несколько параметров в формате"name" => value
. -
param::ModelParameters
: структура параметров модели.
Примеры
engee.set_param!("model_1", "solver"=>"ode45", "stop_time"=>10)
param_1 = engee.get_param("model_1")::ModelParameters
engee.set_param!("model_2", param_1)
Структура настроек симуляции привязывается к конкретной модели — можно изменять настройки модели непосредственно через задание полей структуры, тогда:
params = engee.get_param(model::Model)::ModelParameters
# структура params привязана к конкретной model
params.step_time = 0.01
0.01
# аналогично `engee.set_param!(model::Model, "step_time" => 0.01)`
Каждый параметр должен быть представлен как пара (Pair), состоящая из имени параметра и его значения (например, "StartTime" => 0.0
). Для параметра param
:
Параметры симуляции
-
start_time::String
: время начала симуляции (Float64). -
end_time::String
: время окончания симуляции (Float64). -
type::String
: тип решателя (fixed-step или variable-step). -
name::String
: имя решателя (зависит от выбранного типа).
Параметры для fixed-step
fixed_stepsize::String
: шаг симуляции (Float64).
Параметры для variable-step
-
absolute_tolerance::String
: Абсолютная точность (Float64 или 'auto'). -
initial_stepsize::String
: Начальный шаг (Float64 или 'auto'). -
maximum_stepsize::String
: Максимальный шаг (Float64 или 'auto'). -
minimum_stepsize::String
: Минимальный шаг (Float64 или 'auto'). -
output_interval::String
: Интервал вывода (Float64 или 'auto'). -
relative_tolerance::String
: Относительная точность (Float64 или 'auto'). -
dense_output::Bool
: Плотный вывод результатов.
engee.set_param!(block::Block | block_path::String, params::Pair{String}...)
engee.set_param!(block::Block | block_path::String, block_params::BlockParameters)
Обновляет параметры блоков.
Аргументы
-
block::Block
: объект блока. -
block_path::String
: строковый путь к блоку. -
block_params::BlockParameters
: структура параметров блока. -
params::Pair{String}...
: параметры блока в формате"name" => value
.
Примеры
engee.set_param!("model_name", "StartTime" => 0.0, "StopTime" => 10.0, "SolverType" => "fixed-step", "SolverName" => "ode45")
#
Engee.engee.unset_log
— Function
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.engee.version
— Function
engee.version()
Возвращает короткую версию Engee.
Примеры
engee.version()
"24.10.0"