计划管理的公共方法
engee`方法
#
engee.add_block
— Function
engee.add_block(block_identity::String, tgt_block_path::String)
从库中添加一个区块。
参数
-
lib_block_path::String
:程序块在程序库中的完整路径。路径以/
开头。 -
tgt_block_path::String
目标系统路径:目标系统的路径和新程序块的预期名称。如果只指定系统名称(如"newmodel_1/"
),程序块名称将自动生成。如果指定了带有程序块名称的完整路径(如"newmodel_1/Sum1"
),程序块将获得指定的名称。
示例
# Добавление блока из библиотеки без присвоения имени
engee.add_block("/Basic/Math Operations/Add", "newmodel_1/")
# Добавление блока с присвоением имени
engee.add_block("/Basic/Math Operations/Add", "newmodel_1/Add_block_new")
#
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
(输入)端口的完整路径。名称和记录格式与输入端口类似。
示例
# Соединяет первый входной порт блока 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
— 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.clear_all
— Function
engee.clear_all()
清除当前工作区中的所有变量、函数和已定义模块。clear_all()
返回当前工作区的原始状态。返回nothing
。
#
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
。如果有未保存的更改且参数等于false
,则会以错误结束。如果等于true
,未保存的更改将丢失。
示例
# Выгружает из памяти модель newmodel_1
engee.close("newmodel_1")
# Выгружает из памяти модель newmodel_1 без сохранения последних изменений
engee.close("newmodel_1", force=true)
# Закрывает модель newmodel_1 (выгружает и убирает с холста)
engee.close("newmodel_1", force=true)
#
engee.close_all
— Function
engee.close_all()
关闭所有模型。
示例
# Выгружает из памяти все открытые модели
engee.close_all()
#
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"
# Вернет результат сравнения m1 и m2
engee.compare_models(m1, m2)
#
engee.convert_model
— Function
engee.convert_model(model_path::String,[out_path::String])
为指定模型生成 Julia 语言的软件控制脚本。如果指定了路径out_path
,脚本将保存到指定名称的文件中(扩展名可任意设置,但建议使用 .jl 在 Julia 中运行)。如果未指定路径,结果将以字符串形式返回。
参数
-
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
— 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.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。
示例
# Копирование содержимого из корневой системы newmodel_1 в корневую систему 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
— Function
engee.create(model_name::String)::Model
使用默认参数创建名为model_name
的新模型。返回Model
。该模型将成为当前模型。其根系统成为当前系统。如果该名称的模型已经存在,则会以错误信息EngeeException
终止。
参数
model_name::String
:系统中希望使用的模型名称。模型名称不得包含字符/
。
示例
engee.create("NewModel")
Model(
name: NewModel
id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
#
engee.delete_block
— Function
engee.delete_block(block_path::String)
从系统中删除区块、所有相关行和可写端口。
参数
block_path::String
块的路径。
示例
# Удаляет блок Sine Wave и все связанные с ним линии и блоки из системы
engee.delete_block("newmodel_1/Sine Wave")
#
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.delete_line
— Function
engee.delete_line(src_port::String, dst_port::String) = delete_line(gcs(), src_port::String, dst_port::String)
engee.delete_line(system::System, src_port::String, dst_port::String)
删除数据块之间的链接(数据流)。
参数
-
system::String||System
:系统路径或System
类型对象。 -
src_port::String
:块端口out
(输出)的完整路径。端口名称使用其序列号。记录格式为“system_name/block_name/idx”
。 -
tgt_port::String
:块端口in
(输入)的完整路径。名称和记录格式与out
端口类似。
示例
# Удаляет соединение между первым входным портом блока 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
— Function
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+
搜索深度:最大搜索深度(含)。对于无限制搜索,必须不传递任何参数。枚举以0
开始。默认值为无。 -
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.gcb
— Function
engee.get_current_block()::String
engee.gcb()::String
返回当前(选定)区块的路径。如果没有选中区块,则返回nothing
。
#
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.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.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)
为模型和/或子系统生成指定语言的代码。支持使用模板定制输出代码(包括main
函数)。
针对模型
-
通过模型文件
.engee
的绝对路径或相对路径为整个模型生成代码。 -
可通过参数
target
指定代码生成目标,也可通过template_path
指定自定义模板路径。
参数
-
model_path::String
参数:生成代码的模型的绝对路径或相对路径。参数可以是模型对象(类型为model
的对象,通过函数engee.gcm
获取)。 -
output_dir::String
保存路径:保存生成代码的目录的绝对路径或相对路径。如果output_dir
目录不存在,将自动创建。 -
target::String
语言:指定生成代码的语言。支持的语言有Си
(默认)或Verilog
。 -
template_path::String
:.jl
模板文件的路径(例如,函数模板main
)。
示例
# Генерация Си кода для модели
engee.generate_code("newmodel_1.engee", "newmodel_1/codegen_output")
# Генерация Verilog-кода, будет создан файл newmodel_1.v с Verilog-кодом
engee.generate_code("newmodel_1.engee", "newmodel_1/verilog_output", target="verilog")
# Генерация кода с шаблоном, содержащим функцию main
engee.generate_code("codegen_model.engee", "codegen_dir", template_path="/user/main_template.jl")
# Получение текущей открытой модели и генерация кода из нее
m = engee.gcm()
engee.generate_code(m, "/user/newmodel_1/codegen_output")
子系统
-
仅对由名称 (
subsystem_name
) 或标识符 (subsystem_id
) 指定的原子子系统进行生成。 -
其他参数与整个模型的生成类似。
参数
-
subsystem_name::String
:生成代码的原子子系统的完整路径。 -
subsystem_id::String
:生成代码的原子子系统的唯一标识符(可选subsystem_name
)。 -
target::String
语言:代码生成语言的说明。支持的语言有Си
(默认)或Verilog
。
示例
# Генерация Си кода для подсистемы по имени
engee.generate_code("newmodel_1.engee", "newmodel_1/Subsystem", subsystem_name="Subsystem")
# Генерация кода для атомарной подсистемы по ее id
engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/Subsystem"; subsystem_id = "88275e0b-a049-4bb5-b8c7-057badd1b536")
# Генерация Verilog кода для подсистемы, будет создан файл newmodel_1.v с Verilog-кодом подсистемы
engee.generate_code("newmodel_1.engee", "newmodel_1/verilog_pid", subsystem_name="SubSystem", target="verilog")
#
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.get_current_block
— Function
engee.get_current_block()::String
engee.gcb()::String
返回当前(选定)区块的路径。如果没有选中区块,则返回nothing
。
#
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.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.get_logs
— Function
engee.get_logs([m::Model])
获取与模型相关的日志信息。返回包含日志信息的数组。
参数
m::Model
:执行操作的模型,默认为当前模型。如果模型未打开,则输出错误信息NoModelOpenedException
。
#
engee.get_param
— Function
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}
:要提取的程序块参数名称。可以是字符串或字符。
示例
# Получение словаря всех параметров модели
m = engee.gcm()
params = engee.get_param(m)
#
engee.get_results
— Function
engee.get_results(model_name::String)
engee.get_results(model::Model)
engee.get_results()
以字典形式返回模型最后一次模拟的结果Dict{String, DataFrame}
,其中 key 是被监控端口的名称。如果模型未打开,则显示错误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
— Function
engee.get_status()::SimulationStatus
将模拟状态作为SimulationStatus
类型的对象返回。返回模型的五种模拟状态之一:
-
BUILDING
模型正在构建中。 -
READY
模型准备就绪。 -
NOT_READY
模型未就绪。 -
RUNNING
模型进行中。 -
PAUSED
模型搁置。
示例
engee.get_status()
READY
#
engee.is_dirty
— Function
engee.is_dirty(model::Model)::Bool
engee.is_dirty(model_path::String)
检查模型是否有任何未保存的更改。如果有未保存的更改,则返回true
,否则返回false
。如果模型已关闭,则返回false
。
参数
-
model::Model
:一个模型对象,可使用engee.gcm
加载到内存中。该模型可以在工作区中激活,但不一定在图形用户界面中打开。 -
model_path::String
参数:模型的路径。
#
engee.load
— Function
engee.load(file_path::String; name::Maybe{String}=nothing, force::Bool = false)::Model
从扩展名为.engee
, 位于file_path
的文件加载模型。返回Model
。模型成为当前模型。其根系统成为当前系统。特征:
-
如果该名称的模型已经存在,且参数等于
true
,则重新加载该模型,任何未保存的更改都将丢失;如果参数等于false
,则抛出异常。默认值为false
。 -
如果在参数
name
中指定了不同的名称,则可以用不同的名称加载模型。如果未指定该参数,则会保留保存在文件中的模型名称。 -
如果文件扩展名不同或不存在,则会出现异常。
参数
-
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
— 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
:模型对象,可使用函数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.resume
— Function
engee.resume(; verbose::Bool = false)
恢复暂停的模拟。
参数
verbose::Bool = false
:启用模拟进度信息的输出。
#
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.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.save
— Function
engee.save(model_name::String, file_path::String; force::Bool = false)
engee.save(model::Model, file_path::String; force::Bool = false)
将路径file_path
中名为model_name
的模型保存到扩展名为.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
— 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>")
.定位:"自动"、"平铺",其他情况下适用 "自动"。
参数
-
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
— Function
engee.set_log(system_path::String, port_path::String)
engee.set_log(system::System, port_path::String)
engee.set_log(port_path::String)
将端口设置为写入。
参数
-
system_path::String
:端口所在的系统。 -
system::System
:端口所在的系统。 -
port_path::String
:端口的相对路径。如果第一个参数中没有提供系统,则使用默认的开放系统。
示例
engee.set_log("Sine Wave/1")
# Порт блока 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!
— Function
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, аналогично engee.set_param!("newmodel_1", "FixedStep" => "0.05")
params["FixedStep"] = "0.05"
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
求解器名称(取决于所选类型)。
固定步长参数
FixedStep::String
:模拟步长(Float64)。
可变步长的参数
-
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.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)
将端口从记录中删除。
参数
-
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
— Function
engee.update_params()
engee.update_params(model::Model)
engee.update_params(model_name::String)
在运行中重新计算模拟块的参数,从工作区重新计算其实际值。如果没有正在运行的模拟,则函数不会执行任何操作。
参数更新所应用的模型或模型对象的名称可以作为可选参数。
参数
-
model::Model
模型对象:可使用函数engee.gcm
加载到内存中的模型对象。该模型可以在工作区中激活,但不一定在图形用户界面中打开。 -
model_name::String
模型名称:需要重新计算参数的模型名称。
示例
# Обновляет параметры всех блоков в текущей симуляции
engee.update_params()
# Обновляет параметры указанной модели
model = engee.gcm()
engee.update_params(model)
# Обновляет параметры модели по имени
engee.update_params("newmodel_1")