Публичные методы программного управления
Смотрите также: Применение программного управления моделью |
Здесь представлены все публичные методы программного управления 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.addpath
— Function
engee.addpath(path::Vararg{String})
Добавляет один или более путей в системную переменную LOAD_PATH
. LOAD_PATH
— это системная переменная, которую Engee использует для поиска нужных исполняемых объектов (например, .engee
, .ngscript
), а также любых других путей, используемых в командах.
Аргументы
path::Vararg{String}
: один или более путей в файловой системе.
Примеры
engee.addpath("/user/models")
engee.load("model.engee") #загрузка модели
#
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(; type = "all", depth = nothing, block_params = Vector{Pair{String}}())
Совершает поиск сущностей (моделей/систем/блоков/портов) во всех доступных моделях. Возвращает пути до найденных сущностей.
Аргументы
-
system_path
: путь до системы, в которой будет проводиться поиск. -
system::System
: система, в которой будет проводиться поиск. -
model
: модель, в которой будет проводиться поиск. -
type
: тип сущности для поиска. Доступные опции:all
,model
,subsystem
,block
,port
. -
depth
: максимальная глубина поиска (включительно). Для поиска без ограничений нужно передатьnothing
. Перечисление начинается с0
. По умолчаниюnothing
. -
block_params
: Параметры для фильтрации (применимо только к блокам).
Примеры
# Список сущностей, из которых состоит модель `newmodel_1` (подсистем, блоков, портов)
engee.find_system( "newmodel_1" )
# Список сущностей модели `newmodel_1` не заходя в подсистемы
engee.find_system( "newmodel_1", depth=0 )
# Список всех блоков в модели
engee.find_system( "newmodel_1", type="block" )
# Список всех блоков с полем `Value` равным `1.0`
engee.find_system( "newmodel_1", block_params=["Value"=>1.0] )
engee.find_system(system_path::String; type = "all", depth = nothing, block_params = Vector{Pair{String}}())
Совершает поиск сущностей (моделей/систем/блоков/портов) в системе, указанной через строковый путь. Возвращает пути до найденных сущностей.
engee.find_system(system::System; type = "all", depth = nothing, block_params = Vector{Pair{String}}())
Совершает поиск сущностей (моделей/систем/блоков/портов) в системе, переданной как объект типа System
. Возвращает пути до найденных сущностей.
engee.find_system(model::Model; type = "all", depth = nothing, block_params = Vector{Pair{String}}())
Совершает поиск сущностей (моделей/систем/блоков/портов) в модели, переданной как объект типа Model
. Возвращает пути до найденных сущностей.
#
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(model_path:String, output_path:String; subsystem_name=subsystem_path:String, target::String, jl_path::String)
Генерирует код на указанном языке для модели.
Аргументы
-
model_path::String
: абсолютный или относительный путь к модели, для которой генерируется код. Также может быть передан объект модели, полученный с помощью функцииengee.gcm
. -
output_path::String
: абсолютный или относительный путь к директории, в которую будет сохранен сгенерированный код. Если директории не существует, она будет создана автоматически. -
subsystem_name=subsystem_path::String:
: (опционально) полный путь к атомарной подсистеме, для которой генерируется код. Если указан этот аргумент, код будет сгенерирован только для выбранной подсистемы. -
target::String
: (опционально) язык программирования, на котором будет сгенерирован код. Поддерживаемые значения: c (по умолчанию), chisel, verilog. -
jl_path::String
: (опционально) абсолютный или относительный путь к файлу .jl, содержащему шаблон для генерации кода.
Примеры
m = engee.gcm() #текущая открытая модель
output = "save_codegen/model_name" #относительный путь для вывода результатов кодогенерации
engee.generate_code(m, output) #сгенерирует код в output
output = "/user/save_codegen/model_name" #абсолютный путь (можно обращаться к файлам, находящимся в любых директориях).
engee.generate_code(m, output)
# Аналогично при работе с моделью как с файлом:
model_path = "/user/test.engee"
output = "save_codegen/model_name"
engee.generate_code(model_path, 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.rmpath
— Function
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.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"