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".

  • tgt_port::String:完整路径 in 块的(输入)端口。 记录的名称和格式与输入端口类似。

例子

# 连接当前模型中正弦波块的第一输入端口和终结器块的第一输出端口
engee.add_line("Sine Wave/1", "Terminator/1")

# 第一个参数可以是系统对象
system = engee.gcs()

# 调用相当于前一个
engee.add_line(system, "Sine Wave-1/1", "Terminator-1/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. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。

  • 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模型中添加Add-3块,并在newmodel_2模型中自动为其分配名称。
engee.copy_block("newmodel_1/Add-3", "newmodel_2/")

# 将名为Custom Block Name的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:块的路径。

例子

# 从系统中删除正弦波块以及所有关联的线和块
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。

例子

# 从Newmodel_1模型中的子系统-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 港口。

例子

# 删除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")

# 值字段等于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)

# Newmodel_1模型中所有Sin类型块的列表
engee.find_system("newmodel_1"; blocktype="Sin")

# 'Newmodel_1'模型中值字段等于1.0的所有块的列表
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:只返回具有指定参数的块。

例子

# 组成系统的实体列表(子系统,块)
engee.find_system(system)

# 不进入子系统的系统实体列表
engee.find_system(system; depth=0)

# 系统系统中所有Sin类型块的列表
engee.find_system(system; blocktype="Sin")

# 系统系统中值字段等于1.0的所有块的列表
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. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。 搜索将在此模型中进行。

  • blocktype::Maybe{String}=nothing:要搜索的块的类型。 仅返回具有指定类型的块。

  • depth::Maybe{Int}=nothing:最大搜索深度(含)。 要无限制地搜索,您需要通过 nothing. 枚举以 0. 默认情况下 nothing.

  • blockparams::Vector:只返回具有指定参数的块。

例子

# 构成模型的实体列表(子系统、块)
engee.find_system(model)

# 不进入子系统的实体模型列表
engee.find_system(model; depth=0)

# 模型中所有Sin类型块的列表
engee.find_system(model; blocktype="Sin")

# 模型中值字段等于1.0的所有块的列表
恩吉。find_system(模型;blockparams=["值"=>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).

例子

# 生成模型的C代码
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)或通过ID(subsystem_id).

  • 其余参数类似于完整模型的生成。

参数

  • subsystem_name::String:生成代码的原子子系统的完整路径。

  • subsystem_id::String:生成代码的原子子系统的唯一标识符(备选 subsystem_name).

  • target::String:指定代码生成的语言。 支持的语言 — Си (默认情况下)或 Verilog.

例子

# 按名称为子系统生成C代码
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. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。 参数将从该模型中提取。

  • 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},其中键是被监视端口的名称。 如果模型未打开,则输出错误。 NoModelOpenedException. 如果仿真未运行,则输出错误。 ModelIsNotRunningException.

参数

model::Model:可以使用函数加载到内存中的模型对象 engee.gcm. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。 返回上次仿真结果的操作将相对于此模型执行。

例子

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. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。

  • 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. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。 默认为当前模型。

  • system::System:系统或系统类型对象的路径。

例子

# 开放模式:
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
)
)
# 开放系统:
engee.open("AnotherModel/Subsystem-1")
System(
    name: root
    id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
engee.gcm(), engee.gcs()
(Model(
    name: AnotherModel
    id: 6b59d80d-8b48-419d-83e7-a90660aa1a6a
)
, System(
    name: Subsystem-1
    id: 69f5da6f-250d-4fa7-a25f-645bac751aea
)
)
engee.pause()

暂停运行模拟。

engee.reset()

重新启动仿真核心。

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

恢复暂停的模拟。

参数

verbose::Bool = false:启用模拟进度消息的输出。

engee.rmpath(path::String)

从系统变量中删除路径 LOAD_PATH. LOAD_PATH -这是Engee用来查找必要的可执行对象的系统变量(例如, .engee, .ngscript),以及命令中使用的任何其他路径。

参数

path::String:要删除的文件系统中的路径 LOAD_PATH.

例子

engee.addpath("/user/models")

# 加载模型
engee.load("model.engee")
engee.rmpath("/user/models")

# 加载模型将返回错误。
engee.load("model.engee")
engee.run([m::Model]; verbose=false)

开始执行模型。 如果未指定模型,则启动对当前模型的模拟。 如果模型未打开,则引发异常。 NoModelOpenedException.

参数

  • verbose:澄清需要打印模型执行进度(默认情况下,等于 false -未显示)。

  • m::Model:相对于其执行操作的模型。 默认为当前模型。

例子

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

# 异步、无限仿真的一个例子
m = engee.load("/user/start/examples/controls/PID_controller/pid_controls_tf_stable.engee")
engee.set_param!(m, "end_time" => Inf)
ch = Channel(c -> put!(c, engee.run(m)))
sleep(10)
engee.stop()
take!(ch)
engee.save(model_name::String, file_path::String; force::Bool = false)
engee.save(model::Model, file_path::String; force::Bool = false)

使用名称保存模型 model_name 在路上 file_path 到具有扩展名的文件 .engee. 如有必要,将创建中间目录。 申报表 nothing.

参数

  • model::Model:可以使用函数加载到内存中的模型对象 engee.gcm. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。

  • model_name::String:系统中所需的模型名称。

  • file_path::String:保存模型的目录。

  • force::Bool:默认情况下等于 false. 如果文件已存在且参数等于 true,然后复盖文件。 如果等于 false,然后以错误结束 FileAlreadyExists.

例子

# 将newmodel_1模型保存到新的newmodel_1。工程师档案
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")

# 当前系统中正弦波块的端口设置为写
engee.set_log("newmodel_1/Subsystem","Sine Wave/1")

# Newmodel_1/Subsystem系统中正弦波块的端口设置为写
system = engee.gcs()
engee.set_log(system, "Sine Wave/1")

# 系统中正弦波块的端口设置为写
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. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。 将为此模型更新参数。

  • 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结构与特定模型相关联,类似于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"])

每个参数必须表示为由参数名称及其值组成的对(例如, "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!("newmodel_1/Генератор синусоиды", "Phase" => 1.0, "Amplitude" => 3.0, "Frequency" => 4.0)
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")

# 当前系统中正弦波块的端口设置为写
engee.run()
Dict{String, DataFrames.DataFrame} with 1 entry:
 "Sine Wave.1" => 1001×2 DataFrame…

# 我们运行了模拟,得到了结果
engee.unset_log("Sine Wave/1")

# 当前系统中正弦波块的端口已从记录中删除
engee.run()
Dict{String, DataFrames.DataFrame}()
engee.update_params()
engee.update_params(model::Model)
engee.update_params(model_name::String)

通过从工作区重读当前值来更新正在运行的模拟的参数。

该功能允许您将工作区中的参数更改动态应用于已经运行的模拟,而无需停止并重新启动它。 如果没有工作模拟,那么函数什么也不做。

它可以将模型的名称或应用参数更新的模型的对象作为可选参数。 此功能相当于在仿真过程中单击"编译模型"按钮。

参数

  • model::Model:可以使用函数加载到内存中的模型对象 engee.gcm. 此模型可以在工作区中处于活动状态,但不一定在GUI中打开。

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