Engee 文档

计划管理的公共方法

另请参见: 程序模型控制的应用

这里介绍了 engee 程序控制的所有公共方法。关于 engee.script 方法,请参阅文章软件脚本管理

engee`方法

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(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(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()

清除当前工作区中的所有变量、函数和已定义模块。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)
engee.close_all()

关闭所有模型。

示例

# Выгружает из памяти все открытые модели
engee.close_all()
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 ,脚本将保存到指定名称的文件中(扩展名可任意设置,但建议使用 .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(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。

示例

# Копирование содержимого из корневой системы 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(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(block_path::String)

从系统中删除区块、所有相关行和可写端口。

参数

block_path::String块的路径。

示例

# Удаляет блок 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) = 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(; 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.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)

为模型和/或子系统生成指定语言的代码。支持使用模板定制输出代码(包括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(; 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}:要提取的程序块参数名称。可以是字符串或字符。

示例

# Получение словаря всех параметров модели
m = engee.gcm()
params = engee.get_param(m)
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()::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 中指定了不同的名称,则可以用不同的名称加载模型。如果未指定该参数,则会保留保存在文件中的模型名称。

  • 如果文件扩展名不同或不存在,则会出现异常。

参数

  • 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 。您也可以直接传递ModelSystem 的实例来代替路径。

参数

  • 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)

将路径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(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(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!(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_paramset_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-stepvariable-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.stop()

停止运行模拟。

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()
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")
engee.version()

返回 Engee 的简写。

示例

engee.version()
"24.10.0"