Engee 文档

模型软件编辑

使用模型

添加图块

编辑模型前,请使用open 方法打开模型。编辑完成后,别忘了用save 保存结果。

要添加图块,请使用公共方法add_block

engee.add_block(lib_block_path, tgt_block_path)
  • lib_block_pathtgt_block_path 添加块的副本。

  • lib_block_path "是模型或库中块的完整路径。双击工作区的空闲区域并键入所需块的名称,即可看到 lib_block_path 路径:

    block path add method

  • tgt_block_path - 系统路径和预期名称。如果没有指定名称,则会自动设置。

  • 如果现有模型块的路径与库中块的路径一致,因为模型及其系统的名称与库中部分的名称一致,则选择模型中的块。

  • 如果 tgt_block_path 最后包含未来区块的名称,则会尝试在该名称下添加一个区块。

  • 如果 tgt_path 不包含未来区块的名称,则使用模式 <block_type>-<index>,例如 Sin-1,其中 index 是添加后给定类型区块的数量,Sin 是区块的区块类型。

  • 在添加区块端口时,为子系统添加一个额外的端口,例如 Inport

添加的程序块不会立即显示。要显示图块,必须重新打开模型(之前已保存模型)、在模型之间切换或重新加载页面。
示例
engee.add_block("/Basic/Math Operations/Add", "newmodel_1/")

engee.add_block("/Basic/Math Operations/Complex to Real-Imag", "newmodel_1/Test_name") # добавит блок из библиотеки в систему и присвоит ему имя Test_name
错误
  • 如果名称繁忙,则以 IncorrectBlockNameException 错误终止。

  • 如果库块的路径不正确,则会以 "InvalidBlockPathException "错误终止。

  • 如果添加库块的系统不存在或已关闭,则会以 `SystemIsNotExistException`错误终止。

删除程序块

公共方法delete_block 用于

engee.delete_block(block_path)
  • 删除指定路径上的块。

  • block_path - 模型中块的绝对路径,类型为 newmodel_1/Sine Wave,其中 newmodel_1 是模型名称,Sine Wave 是块名称。

  • 同时删除与程序块相关的所有线路和端口。

复制程序块

使用公共方法copy_block

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")
  • 从模型 newmodel_1 中添加一个块,并在模型 newmodel_2 中为其赋名。

  • src_block_path::String - 系统中块的完整路径。

  • tgt_block_path::String - 系统路径和预期名称。格式: path/to/system/newblockname(如果未指定名称,则会自动设置)。

错误
  • IncorrectBlockNameException - 新块的名称不正确。 新块的名称不正确。

  • InvalidBlockPathException - 复制的程序块在指定路径上不存在。

  • SystemIsNotExistException - 被添加块的系统不存在。

添加/删除信号

使用公共方法add_linedelete_line

# добавляет линии между портами
engee.add_line(src_port, dst_port) = engee.add_line(engee.gcs(), src_port_path, dst_port_path)
engee.add_line(system::String|System, src_port :: String, dst_port :: String)

# удаляет линии между портами
engee.delete_line(src_port, dst_port) = delete_line(gcs(), src_port, dst_port)
engee.delete_line(system, src_port :: String, dst_port :: String)
  • 在端口 src_port_pathdst_port_path 之间添加/删除一行,其中 src_port 是指向模块输出端口的完整路径,tgt_port 是指向模块输入端口的完整路径。

  • 如果路径指向子系统的块端口,则通过相应端口连接/断开子系统本身。

  • 在其他情况下,相应端口的模块必须在同一系统中。

  • 端口的序列号用作端口名称。

错误
  • SourceEdgeIsNotOutputPort` - 如果在 端口不是输出端口

  • TargetEgdeIsNotInputPort - 如果 tgt_port_path 上的端口不是输入端口。

  • TargetEdgeAlreadyConnected - 如果 tgt 端口已连接。

  • NotAcausalPort - 在非定向连接上,如果其中一个端口的类型为非因果端口。

  • LineCannotBeAdded` - 如果端口类型或线路方向不正确。

写入/读取程序块和信号参数

使用公共方法set_param!get_param

engee.set_param!(blockPath, paramName => paramValue)
engee.get_param(blockPath, paramName)
engee.get_param(blockPath)
engee.set_param!(blockPath, blockParams)
  • 类似于模型参数的 get_paramset_param!

你不仅可以获取模型参数,还可以获取特定程序块的参数,例如,使用变量结构(我们称之为 params)更改参数:

params = engee.get_param("newmodel_1/Terminator") #возвращает все параметры блока Terminator в структуру params

engee.set_param!("newmodel_1/Terminator", params) #блоку Terminator присваиваются параметры из структуры params

用鼠标选中一个程序块,然后执行 "engee.get_param(engee.gcb()) "命令,即可获得该程序块的所有可用参数。例如,对于程序块Constant

engee> engee.get_param(engee.gcb())
BlockParameters(
  BlockName => Constant,
  Value => 1.0,
  OutDataTypeStr => Inherit: auto,
  SampleTime => Inf,
  BlockType => Constant,
)
文章计划管理的公共方法 介绍了 Engee 提供的所有公共计划管理方法。

实例

engee.add_block("/Basic/Sources/Sine Wave", "model_name/Sine Wave-x") #вставляет блок Sine Wave из библиотеки Basic/Sources и присваивает ему имя Sine Wave-x

engee.add_block("/Basic/Sinks/Terminator", "model_name/") #вставляет блок Terminator из библиотеки Basic/Receivers и присваивает имя автоматически (например Terminator-1, если блок с именем Terminator уже существует)

engee.delete_block("newmodel_1/Terminator") #удаляет блок и все связанные с блоком линии и порты

engee.add_line("Sine Wave/1", "Terminator/1")  #устанавливает сигнал между выходным портом №1 у блока Sin Wave и входным портом №1 блока Terminator

engee.delete_line("Sine Wave/1", "Terminator/1") # удаляет сигнал между выходным портом №1 у блока Sin Wave и входным портом №1 блока Terminator

engee.get_param("newmodel_1") # получение параметров моделирования

engee.set_param!("newmodel_1", "StopTime" => 15, "FixedStep" => 0.05) #меняем время окончания симуляции и фиксированный размер шага