# 使用 JuliaFunction 模块在 Sysblock 中实现 Julia 函数


# 引言

本示例从零开始搭建一个包含 JuliaFunction 模块的模型,详细介绍了如何自定义该模块来计算值向量的均值和标准差。

单击右侧打开示例按钮,在 Sysplorer 中打开示例文件。

# 软件环境配置

本次仿真因为需要 JuliaFunction 模块,所以需要从 Syslab 中打开 Sysplorer。

提示

若出现 "MWORKS.Sysplorer 可执行文件路径不存在",则需要重新设置 Sysplorer 的文件路径,单击 Syslab 主页 > 首选项 > MWORKS.Sysplorer 可执行文件路径 > 浏览…


找到本地安装 Sysplorer 2025b 文件夹的位置,单击打开,找到 MWORKS.Sysplorer 2025b(x64)。由于安装位置和版本的不同,文件后缀可能不同。完成设置后重新从 Syslab 中打开 Sysplorer 即可。

# 模型搭建

  1. 单击文件 > 新建 Sysblock 模型 > 创建新 Sysblock 模型,然后输入控制器模型名 Demo_UseJuliaFunction。

  2. 在库浏览器中搜索 Constant(产生不定类型常量信号)、JuliaFunction(编辑和调用 Julia 脚本函数)、DisPlay(显示输入值)。各组件对应的模型库路径如下表所示。

    组件名 组件对应的模型库路径
    Constant Sysblock.Sources(信号源模型库).Constant
    JuliaFunction Sysblock.Utilities (实用工具模型库).JuliaFunction
    DisPlay Sysblock.Utilities (实用工具模型库).DisPlay
  3. 在库浏览器中找到上述元器件,并且将它们拖到模型视图中,按照如下位置进行摆放。

# 模块参数设置

  1. 双击打开 constant1 模块,将常量值设置为 2,此时为行矩阵。

  2. 双击打开 juliaFunction 模块,为模块编程,以计算值行矩阵的均值和标准差,输入以下代码。

    function fcn(vals) # 定义函数输入
    # 计算数值的统计平均值和标准差
       len = length(vals)
       meanVal = sum(vals) / len
       stdevVal = sqrt(sum((vals .- meanVal) .^ 2) / len)
     
       # 返回两个输出值
       return meanVal, stdevVal
    end
    
  3. 完成后回到 Sysplorer,juliaFunction 模块变为两个输出端口。第一个输出端口对应 meanVal,第二个输出端口对应 stdevVal。

# 连接模块

将 constant1 模块的输出端口连接到 juliaFunction 模块的输入端口。juliaFunction 模块的第一个输出端口连接到 disPlay 模块的输入端口,第二个输出端口连接到 disPlay 模块的输入端口。

# 仿真设置

在进行仿真之前需要进行仿真设置,在软件上方功能区,单击主页 > 仿真设置按钮,打开仿真设置界面。在该界面设置开始时间 0,终止时间 1,输出区间步长 auto。积分算法类型设置为定步长算法Euler(Runge-Kutta, 1 阶, 非刚性)容差 0.0001,积分步数 1,单击确定并保存到模型

# 仿真运行

单击主页 > 仿真,等待仿真运行结束。可在 disPlay 模块上看到均值为 3.5,disPlay1 模块上看到标准差为 1.118。