# Sysblock 基础(1):对系统算法进行建模
# 引言
本文以质点 - 弹簧 - 阻尼机械系统为例,详细介绍如何使用 Sysblock 进行系统建模和仿真。通过本教程,读者可以了解 Sysblock 的基本操作流程,掌握系统建模的方法,以及学习使用不同类型的输入输出模块进行仿真分析。
单击右侧打开示例按钮,在 Sysplorer 中打开文件。
# 系统模型介绍
本文使用由质点、弹簧和阻尼组成的简单机械系统作为示例,通过 Sysplorer 软件进行建模并验证其有效性。该系统可以模拟许多实际工程问题,如悬挂系统、减震装置等。
# 系统动力学方程
该系统特性由以下二阶微分方程描述:
# 软件环境配置
本次仿真因为需要从 Syslab 工作区传递数据,所以需要从 Syslab 中打开 Sysplorer。
提示
若出现“MWORKS.Sysplorer 可执行文件路径不存在”,则需要重新设置 Sysplorer 的文件路径,单击 Syslab主页 > 首选项 > MWORKS.Sysplorer 可执行文件路径 > 浏览…。
找到本地安装 Sysplorer 2025b 文件夹的位置,单击打开,找到 MWORKS.Sysplorer 2025b(x64)。由于安装位置和版本的不同,文件后缀可能不同。完成设置后重新从 Syslab 中打开 Sysplorer 即可。

单击文件 > 新建 Sysblock 模型 > 创建新 Sysblock 模型,然后输入控制器模型名 Spring。
# 模型搭建
在库浏览器中搜索 step(阶跃信号发生器)、sineWave(输出正弦波)、fromWorkspace(从 Syslab 工作区读取向量格式的数据值)、signalBuilder(输出各种波形)、sum(对输入执行加法或减法)、gain(元素增益)、integrator(输入信号的连续时间积分)、scope(显示仿真过程中生成的信号)、toFile(向指定的 CSV 文件中写入数据)、display(显示输入的数值)、toWorkspace(以数组的形式向 Syslab 工作区写入数据)。各组件对应的模型库路径如下表所示。
| 组件名 | 组件对应的模型库路径 |
|---|---|
| step | Sysblock.Sources(信号源模型库).step |
| sineWave | Sysblock.Sources(信号源模型库).sineWave |
| fromWorkspace | Sysblock.Sources(信号源模型库).fromWorkspace |
| signalBuilder | Sysblock.Sources(信号源模型库).signalBuilder |
| sum | Sysblock.MathOperation(数学运算模型库).sum |
| gain | Sysblock.Math(数学运算模型库).gain |
| integrator | Sysblock/Continuous(连续模型库).integrator |
| scope | Sysblock.Utilities(实用工具模型库).scope |
| toFile | Sysblock.Utilities(实用工具模型库).toFile |
| display | Sysblock.Utilities(实用工具模型库).display |
| toWorkspace | Sysblock.Utilities(实用工具模型库).toWorkspace |
在库浏览器中找到上述元器件,并且将它们拖到图中,按照如下位置进行摆放。
在软件上方功能区,单击编辑 > 矩形,添加 3 个大小合适的矩形画布,再添加 3 个文本,分别命名 source、system、sinks。其中 sources 的区域包含系统输入,system 的区域包含表示系统或被控对象的模块,sinks 的区域包含系统输出。
# 输入模块配置
# 阶跃信号输入
双击 step 模块,设置阶跃时间 1,初始值 0,终值 1,采样时间 -1,再单击确定保存设置。
# FromWorkspace 输入
当输入模块为 fromWorkspace 时,需要在 Syslab 的终端窗口输入数据,对 fromWorkspace 模块进行参数设置。
双击打开 fromWorkspace 模块,设置数据名称为 simin,数据维度为 [2](需要加上英文格式下的 []),单击确定保存设置。在 Syslab 命令行输入simin=[0 0;1 1],可在 julia 工作区间和终端窗口看到输入的数据。
# SineWave 输入
双击打开 sineWave 模块,设置振幅为 1、偏置 0、频率 1、相位 0、采样时间 0,其余保持默认,单击确定保存设置。
# SignalBuilder 输入
双击打开 signalBuilder 模块,可以用它模拟波形。右击时间和值的表格下方,依次删除所有表格。
删除后,右击时间和值的表格下方,新建四个表格。
在时间和值的表格中输入下表内容。
| 时间 | 值 |
|---|---|
| 0 | 0 |
| 1 | 0 |
| 1 | 1 |
| 10 | 1 |
# 系统模块设置
双击元器件下方给对元器件命名,为 3 个 gain 元器件命名为 k1、c1、m1。双击元器件可对元器件参数进行设置,将 k1 增益设置为 5、c1 增益设置为 3、m1 增益设置为 1/2,sum 模块符号列表设置为 +--,完成设置后单击确定保存设置。其余保持默认。
# 输出模块进行设置
双击 scope 模块,单击文件下方齿轮状图像,将输入端口数改为 2,单击确定保存设置。其余保持默认。
# 仿真设置
在进行仿真之前需要进行仿真设置,在软件上方功能区,单击主页 > 仿真设置按钮,打开仿真设置界面。在该界面设置开始时间 0,终止时间 10、输出区间步长 0.2。积分算法的类型设置为定步长、算法为 Euler (Runge-Kutta, 1 阶, 非刚性)、容差 0.001、积分步数 1,单击确定并保存到模型。
# 仿真运行
# 连接模块
每次仿真时 Sources 系统输入资源区只需一个信号,将 step 模块的输出连接到 sum 模块的 + 输入端。右击 Sources 资源区另外 3 个模块,选择注释,避免不使用的时候影响仿真。
将 step 模块连接到 sum 的 + 输入口,k1 和 c1 的输出连接到 sum 模块的 - 输入端,sum 模块的输出端连接到 m1 的输入端。m1 的输出端再连接到 integrator 模块的输入端,integrator 模块的输出端连接到 integrator1 模块的输入端、scope 模块的第一个输入端、c1 的输入端。integrator1 模块的输出端连接到 scope 模块的第二个输入端、k1 的输入端、toFile、display、toWorkspace 的输入端。 完成连接后单击主页 > 仿真,运行仿真并且等待仿真运行结束。
# 示波器 / 结果查看器
双击 scope 示波器可查看运行结果,可看到 integrator 和 integrator1 的输出。
或者单击主页 > 结果查看器,单击 integrator 和 integrator1,再单击 y,也可看到相同的数据。
# ToFile 输出
仿真运行结束后会在本地文件创建一个csv文件用来保存数据,可根据需求修改文件名称。
# Display 输出
display 模块可直接查看仿真运行的结果。
# 结果查看器的输出
单击主页 > 结果查看器,单击 c 和 k 和 m ,再单击 y,可直接看到所有模块的输出数据,相比 Simulink,结果查看器更容易观测到中间变量的变化情况。
# ToWorkspace 输出
toWorkspace 模块在仿真后会将结果输出到 Syslab 的工作区间,在仿真结束后回到 Syslab,单击工作区 Vout > simout 就能看到仿真数据。
# 切换输入模块
当要使用其他仿真模块时,右击该模块,选择取消注释。下面以由 step 模块切换到 SineWave 模块为例,因切换到 FromWorkspace 模块和 SignalBuilder 模块的操作方式一样,且输出与 Step 模块仿真结果一致,故在此不再赘述。
单击 Step 模块的输出信号线,再右击后删除。右击 Step 模块,选择注释,避免影响后续仿真。
右击 SineWave 模块,选择取消注释,将 SineWave 模块的输出端连接到 sum 模块的 + 输入端。
# 仿真运行
完成连接后单击主页 > 仿真,运行仿真并且等待仿真运行结束。
同上文一样双击 scope 示波器可查看运行结果,可看到 integrator 和 integrator1 的输出。
或者单击主页 > 结果查看器,单击 integrator 和 integrator1,再单击 y,也可看到相同的数据。
其余数据查看方式与上文一致,读者可自行尝试。