2026a

# SyslabObject


使用 Syslab 中的 Julia 对象进行动态系统建模和处理流式数据,组件位于SyslabWorkspace.SyslabObject.SyslabObject

# 说明

SyslabObject 是一种 Julia 类,专为仿真输入随时间变化的动态系统而设计,具备以下能力:

  • 创建用于算法建模的特定方法和属性,您可以使用工具箱产品中包含的预定义 SyslabObject,也可以定义自己的 SyslabObject;

  • 提供了一套结构化的模板流程,可在执行期间自动完成许多管理操作,包括初始化系统、验证数据、单步计算、仿真结束时释放资源、运行日志等。

# Julia 对象

当您新建 Julia 对象后,将打开一个默认的模板文件,请留意文件注释中的书写规范:

using ObjectOriented
@oodef mutable struct Untitled
    # Description (用于生成Modelica组件描述)
    # Template for syslabobject block.

    # Parameter (用于生成 Modelica 组件参数,包括名称、类型、描述)
    # 格式:参数名::参数类型 = 参数值   # 参数注释
    # 例如:
    gain::Real = 1.0                              # 增益

    # Private (Julia内部变量)
    # 格式:变量名::类型 = 值   # 变量说明
    # 例如:
    _count::Integer = -1                          # 计数器

    # Methods (主要调用算法,包括setupImpl,stepImpl,releaseImpl)

    # 初始化函数:函数名固定,函数形参与stepImpl函数形参一致
    function setupImpl(self, u)
        self._count = 0
        # ...
        return nothing
    end #setupImpl

    # 单步计算函数:函数名固定,第一个函数形参必须是self,其余函数形参将作为Modelica组件的输入端口,函数返回值作为输出端口
    function stepImpl(self, u)
        self._count += 1
        # ...
        y = u * self.gain
        return y
    end #stepImpl

    # 释放资源函数:函数名固定,且只能有一个函数参数self
    function releaseImpl(self)
        # ...
        return nothing
    end #releaseImpl

    # 其它自定义函数,第一个函数形参数必须是self
    # function xx(self)
    #     ...
    # end
end

注意

编辑 Julia 对象文件时,请注意以下几点

  • 请勿删除注释标签,如# Description# Methods等;
  • 请勿删除初始化函数setupImpl(),单步计算函数stepImpl(),释放资源函数releaseImpl()
  • 类名需要具有唯一性,且与文件名一致。

# 属性

Julia 对象文件中属性分为公共属性Parameter和私有属性Private

属性分类 特点 支持的数据类型
Parameter Sysplorer 中可以直接访问 特定的 Julia 数据类型
Private 只能通过 SyslabObject 的方法来访问,用户不可见 符合 Julia 语法的数据类型

目前您可以在Parameter参数中使用以下数据类型:

String | Bool | Int64 | Integer | Float64 | Real | Number
Vector{Int64} | Vector{Integer} | Vector{Float64} | Vector{Real} | Vector{Number}
Matrix{Int64} | Matrix{Integer} | Matrix{Float64} | Matrix{Real} | Matrix{Number}

# 方法

Julia 对象文件中包含有三个固定方法:

方法 说明
setupImpl 执行设置和初始化任务
stepImpl 系统输出和状态更新方程
releaseImpl 释放使用的资源和执行必要的清理任务

# 使用 SyslabObject

# 在 Sysplorer 中使用 SyslabObject

您可按下图所示在 Sysplorer 中使用 SyslabObject。

  1. 加载模型库 - 在 Syslab 中启动 Sysplorer,加载 SyslabWorkspace 模型库
  2. 创建单个组件 - 拖拽创建单个 SyslabObject 组件
  3. 配置组件 - 关联组件对应的 Julia 对象文件
    • 新建或编辑 SyslabObject 组件的 Julia 对象文件
    • 编辑 SyslabObject 组件的端口设置
  4. 将组件组合到系统中 - 编写一个包含这些 SyslabObject 的 Sysplorer 程序,完成其余部分模型的建模
  5. 运行系统 - 在 Sysplorer 中运行您的程序进行仿真
  6. 修改组件 - 对已关联 Julia 对象文件的组件进行修改

注意

在使用 SyslabObject 组件之前,请确认已安装 julia 1.9 版本。

# 加载模型库

请通过 Syslab 启动 Sysplorer 软件,确认插件管理中已启用Syslab Extension for Sysplorer插件(默认启用)之后,加载 SyslabWorkspace 模型库。

# 创建单个组件

通过拖拽创建单个 SyslabObject 组件。除了工具箱提供的 SyslabObject 以外,您还可以创建自定义的 SyslabObject,组件在模型库中的路径为SyslabWorkspace.SyslabObject.SyslabObject

# 配置组件

如果您使用某个工具箱中提供的 SyslabObject 组件,可编辑修改默认属性值方法以便为您的特定系统建立模型。

如果您需要配置自定义 System Object:

  • 右击组件在上下文菜单中单击选择 Syslab 对象文件…,弹出 “Syslab 对象参数” 对话框。
  • 如果您需要新建 Julia 对象文件,单击对话框中 “新建” 按钮,可以在 Syslab 中打开编辑器并默认新建一个 Julia 对象文件;您也可以通过 Syslab 的 “主页” 菜单栏中的 “新建” 下拉框中选择 “新建 Julia 对象” 进行创建:

  • 编辑 Julia 对象文件,详情请参见 Julia 对象

  • 保存 Julia 文件。默认类名为Untitled,请注意文件名需与类名一致,保存后此文件自动关联到 SyslabObject 组件

  • 如果您需要将 SyslabObject 组件关联到现有 Julia 对象文件,单击对话框中的 “浏览…” 按钮选择对应的 Julia 文件。您也可在文本框中输入文件路径,文件路径支持绝对路径和相对路径

  • 单击对话框中的 “确认” 按钮,组件依据 Julia 文件自动生成参数、端口等信息

注意

组件的默认参数、端口信息仅在单击“确认”按钮后进行刷新。如您对 Julia 文件进行了修改,请重新单击“确认”按钮。

  • 右击组件在上下文菜单中单击设置 Syslab 对象端口 ,弹出 “设置 Syslab 函数端口” 对话框:
    • 指定输入/输出端口的类型和维度信息
    • 如有需要,可修改输入端口的范围、初值和参数说明的信息。详情请参见端口配置

# 将组件组合到系统中

当您确定了所需组件并已创建和配置 SyslabObject 之后,请组装您的系统。

# 运行系统

单击 Sysplorer 的 “仿真” 按钮对系统进行仿真。如果您需要在 Sysplorer 中获取 Syslab Block 的调试信息,请参见调试信息

# 修改组件

如果您需要修改已关联 Julia 文件的 SyslabObject 组件配置,右击组件在上下文菜单中单击选择 Syslab 对象文件 ,单击弹出对话框中的 “源代码” 按钮,可在 Syslab 中打开对应文件进行编辑。

完成编辑后,单击对话框中的 “确认” 按钮,组件将自动更新参数、端口等信息。

提示

  • 对于组件参数,如果已在 Sysplorer 中对类生成的属性初始值进行了修改,比如在 Sysplorer 组件参数底部停靠栏中修改了初始属性值, 更新后不会覆盖当前修改值;
  • 对于组件端口,如果您删除了某一端口,更新后对应位置上的原有连接线将悬空。

您也可以在对话框中新建或更改关联的 Julia 对象文件,组件将自动更新。

提示

切换关联的 Julia 对象文件,更新后原有连接线将悬空。

# 模型示例