# Sysplorer 与 Simulink 环境差异说明


本章节面向从 Simulink 环境迁移而来的用户,介绍 Sysplorer/Sysblock 与 Simulink/Stateflow/Simscape 在基础能力方面的异同,帮助用户快速建立起对 Sysplorer 环境的直观认识。其中,Sysplorer 主要提供面向多领域物理对象的物理建模能力,类似于 Simscape;Sysblock 主要提供基于过程的框图与状态机建模能力,类似于 Simulink 和 Stateflow。

# 基础概念说明

# 物理建模

物理建模是以物理实体为核心,基于组件的物理特性,通过物理定律(如牛顿力学、电磁学、热力学)将物理系统(如机械系统、电气系统、热力学系统)转化为数学模型的过程。通过分析和求解模型,可获得定量结果,为科学研究、工程设计和优化决策提供理论依据和实践指导。

Simulink/Simscape 采用物理网络法,模块化封装物理元件(如电机、阀门)并以图形化连接来构建能量守恒拓扑,底层基于微分-代数方程自动生成,适合中小规模系统与控制算法联合仿真。而 Sysplorer 基于 Modelica 语言,支持声明式方程的非因果建模,可反映系统实际物理拓扑,也可以从 CAD 模型一键生成参数化物理模型,特别适合复杂机械系统和多相流系统的高保真建模。

在多域协同方面,Simscape 依赖领域专用工具箱,跨域耦合需通过 Simulink 信号接口桥接,实时性受限。Sysplorer 则内置统一的多域建模框架,支持直接耦合不同领域的物理端口,无需信号转换,并通过 AI 驱动的模型降阶技术提升复杂系统的实时性能。

# 框图建模

框图建模是一种图形化建模方法,通过功能块(Block)连接线(Line) 表示系统的组成及其信号流动关系,广泛应用于动态系统的设计与仿真,例如控制系统、信号处理等。

  • 功能块(Block):表示系统中的一个功能单元,例如运算、输入或输出模块;
  • 连接线(Line):表示信号的传递路径,定义了数据流的方向;
  • 应用场景:框图建模能够直观地呈现动态系统的行为,适用于工程仿真和系统仿真。

Sysblock 和 Simulink 在框图建模的概念上高度一致,均通过图形化的方式表示动态系统,利用功能块和连接线描述系统的组成和信号流动关系。两者都基于系统理论,将复杂系统分解为模块化的功能单元(如输入、运算、输出),通过信号流反映系统的动态行为,适用于控制系统、信号处理等工程领域的仿真和验证。

# 状态机建模

状态机建模是一种用于描述系统行为的建模方法,通过定义系统的状态状态之间的转换来表示系统的逻辑流程,特别适合事件驱动的离散系统。状态机以有限数量的状态为核心,清晰地展示系统如何响应外部事件或条件变化,常用于控制系统、协议设计和自动化流程等领域。

  • 状态(State):系统在某一时刻所处的特定模式或条件;
  • 转换(Transition):系统从一个状态切换到另一个状态的过程;
  • 应用场景:状态机建模适用于需要明确逻辑控制的场景,例如电梯运行、设备开关或软件工作流。

Sysblock 和 Simulink/Stateflow 在状态机建模的概念上高度一致,均基于有限状态机理论,通过状态、转换和事件来表示系统的逻辑行为,适用于事件驱动的设计与验证。两者都支持状态(State)表示系统模式、转换(Transition)定义状态切换条件、事件(Event)触发转换,以及动作(Action)执行特定操作。核心思想是通过状态图清晰地描述系统如何响应外部条件或事件。

# Sysplorer 环境

Sysplorer 建模环境提供文本图标图形等视图,支持不同形式的 Modelica 建模手段,并提供本地模型(库)管理功能。Sysplorer 支持基于组件连接图的拖放式物理建模,模型与实际物理系统拓扑结构一致。详情请参阅物理建模

Sysblock 基于 Modelica 规范,共享 Sysplorer 建模环境,具备内核自主可控的优势,逐步成为框图状态机建模、仿真和代码生成的新选择。Sysblock 整体界面跟 Simulink 非常类似,熟悉 Simulink 的用户可以快速上手 Sysblock。详情请参阅框图建模状态机建模

# 基础环境

Sysblock 从建模环境、基础模块库、仿真调试到代码生成,大体兼容 Simulink 使用习惯。但 Sysblock 不是 Simulink 的 1:1 复制,在模型格式、科学计算语言以及操作细节方面有一些区别,Simulink 用户在初步上手 Sysblock 时有必要了解这些差异,以便更快熟悉 Sysblock 的使用。

除了本章节内容,还可以参阅 Sysblock 框图建模系列教程,以及 Sysblock 框图建模示例

# 模型格式

MWORKS 平台模型使用.mo文件格式,而 Simulink 使用.slx.mdl格式,双方无法直接兼容打开,需要导入转换或手动搭建等效模型。

  • Modelica.mo文件格式

    .mo是 Modelica 的源代码文件格式,用于存储用 Modelica 语言编写的模型代码。每个.mo文件通常包含一个或多个 Modelica 类的定义(如模型、组件、函数、类型等)。

  • Simulink.slx.mdl文件格式

    .slx.mdl是 Simulink 使用的模型文件格式。.mdl是较旧的文件格式,而.slx是新版本的格式,基于压缩存档(ZIP)的结构,可以包含更多信息,如模型的元数据、仿真结果等。

  • 特性对比

    特性 Modelica.mo 文件 Simulink.mdl/.slx 文件
    文件格式 .mo(纯文本文件) .mdl(文本结构)或 .slx(二进制压缩文件)
    文件内容 Modelica 代码定义的方程、类、参数等 与图形元素一一对应的文本信息 存储模型的图形信息、块定义、信号连接等
    建模方式 基于方程和物理建模,模型通过代码定义 基于图形化建模,模型通过拖拽块和连接信号定义
    扩展性 高度模块化,支持继承和重用 通过自定义块和工具箱拓展,依赖 Simulink 环境
    文件大小 较小(纯文本) .mdl 文件较大,.slx 更小(压缩格式)
    图形化支持 图形化建模,并与模型文本完全映射 提供图形化建模环境

需要注意的是,虽然 Sysblock 框图模型与 Modelica 物理模型文件格式相同,但在创建时要进行区分,详情请参阅创建简单模型

Simulink 模型导入工具支持将.slx模型转换为 Sysblock 模型,并在 Sysplorer 可视化建模环境中打开;同时支持导入 Simulink 模型数据以及框图组件信息,并生成报告。其中,数据导入支持工作区数据、数据字典和 SignalBuilder 数据,框图组件导入支持基础组件、子系统、状态机、仿真设置、库模块引用以及模型引用。用户可以轻松将现有的 Simulink 模型导入到 Sysblock 中继续开发,不必从零开始建模。

Simulink 模型导入的推荐工作流如下:

  • 配置 Simulink 导入:选择 Simulink 模型文件,选择 Simulink 工作区数据,配置生成的 Sysblock 模型目录。

  • 自动转换为 Sysblock 模型:解析 Simulink 模型文件,生成 Sysblock 模型,生成模型转换日志文件。

  • 完善并调试 Sysblock 模型:手动替代不支持的组件,在 MWORKS 软件环境调试,对比转换前后模型仿真结果。

提示

具体细节请参阅 Simulink 模型导入工具

# 基础模块库

Sysblock 模块库已覆盖 Simulink 基础模块库的绝大部分功能,分类如下:

Sysblock 模块库分类 对标 Simulink 分类 功能说明
Continuous Continuous 连续系统模块,如 Integrator、Transfer Fcn,用于建模连续时间动态系统。
Discrete Discrete 离散系统模块,如 Discrete Transfer Fcn、Unit Delay、Zero-Order Hold 等。
Discontinuities Discontinuities 不连续函数或逻辑,如 Saturation、Dead Zone、Relay、Switch 等。
LogicAndBitOperation Logic And Bit Operations 逻辑门模块(AND、OR)、位运算模块,与控制系统或执行条件相关。
LookupTable Lookup Tables 一维/二维/多维查表功能,常用于系统非线性特性建模或简化控制逻辑实现。
MathOperation Math Operations 基本数学函数模块,如加减乘除、乘方、开方、绝对值、三角函数等。
Port Ports & SubSystems 输入输出端口模块。
SubSystems Ports & SubSystems 子系统模块,用于构建模型层级,以及实现使能、触发、函数调用等条件执行。
SignalAttributes Signal Attributes 修改信号属性,如宽度、数据类型、维度、采样率等,便于信号统一管理。
SignalRouting Signal Routing 信号连接与控制,如 Bus Crator、Mux、Switch、Merge 等,增强信号通路灵活性。
Sources Sources 提供信号源,如 Constant、Step、Sine Wave、Random 等。
Utilities Sinks, User-Defined Functions 工具类模块,包括 To Workspace、C Caller 等实用功能。
FlipFlops Extras/Flip Flops 触发器类模块,如 SR、D、JK 触发器,常用于时序逻辑建模。
StateMachine Stateflow 状态机建模模块,表示有限状态机和控制流程逻辑。

以上仅针对 Simulink 基础模块库对比,暂不涉及扩展工具箱模块;关于 Sysblock 模块库的详细信息,请参阅 Sysblock 模块库

# 科学计算语言

Simulink 基于 MATLAB 科学计算环境,Sysblock 基于 MWORKS 平台内的 Syslab 科学计算环境,采用 Julia 为核心语言,同时支持 Python 语言,并支持二者的互相调用。

特性/维度 MATLAB(Simulink 主语言) Julia(MWORKS 主语言) Python(MWORKS 辅语言)
性能 中等,适合中小规模计算,支持并行和 GPU 加速 高,接近 C 语言性能,支持并行和 GPU 加速 中等,借助 NumPy、Cython 等可优化性能
易用性 非常易用,适合快速开发 易学,简洁的语法,适合数学计算 非常易学,简洁的语法,灵活的开发模式
库支持 强大,丰富的商业工具箱 快速增长,专注于科学计算和高性能计算 非常强大,数值计算、机器学习等领域的顶尖库
社区支持 强大,尤其在工程领域 增长中,活跃的高性能计算社区 极其庞大,数据科学和 AI 领域的领先语言
扩展性与灵活性 适度,主要与 C、C++ 等外部语言接口 高度灵活,开源,支持与其他语言集成 极高,广泛支持多种库和扩展,适合多领域
适用场景 工程、控制、信号处理、数学建模等 高性能计算、优化、模拟、科学研究 数据科学、机器学习、物理建模、AI 等

不同于 MATLAB 与 Simulink,Syslab 与 Sysplorer 是两个独立的软件,因此要实现科学计算环境与框图建模环境的双向融合,必须从 Syslab 打开 Sysplorer。用户可以使用从 Syslab 工作区定义的模型参数,请参阅 Sysblock 框图建模系列教程(1)

Sysblock 提供 Julia 函数模块,允许用户从 Sysblock 模型调用在 Syslab 中编写的 Julia 代码,请参阅使用 Syslab 函数块建模

# 框图建模

  • 仿真设置

    Sysblock 提供 14 种变步长和 8 种定步长求解器,所有求解器均支持连续系统、离散系统仿真求解,可以在工具栏上选择,或者打开仿真设置窗口进行详细设置。

    关于 Sysblock 求解器的详细信息,请参阅求解器

    若不需要在仿真过程中实时查看变量数据及曲线,想以更快速度完成仿真,在仿真完成后查看结果,建议选择快速模式。与 Simulink 加速模式不同,Sysblock 的快速仿真模式不会大幅增加模型的编译时间。

  • 查看仿真结果

    Sysblock 在仿真过程中或仿真结束后,除了使用 Scope 和 Display 等模块,还可使用结果查看器查看仿真数据,类似于 Simulink 数据检查器。

    Sysblock 结果查看器默认记录所有模块的输出数据,也可只记录手动标记的信号。请参阅 Sysblock基础(3):记录仿真信号

  • 标量、向量和矩阵

    在 Sysblock 和 Simulink 中,通常将一维数组称为向量,二维或多维数组称为矩阵,仅包含一个元素的数组称为标量行向量是指包含一行的二维数组。列向量是指包含一列的二维数组。与 Simulink 不同,Sysblock 使用{ }来定义向量和矩阵。Sysblock 严格区分标量、向量和矩阵,下图展示了三者的区别:

    关于 Sysblock 信号维度的详细说明,请参阅确定信号维度

    关于 Sysblock 如何在信号线上叠加显示信号维度,请参阅端口维度

  • 使用模型引用

    将模型作为模块嵌入到其他模型中,这一功能被称为模型引用,常用于管理模型架构。Simulink 通过 Model Reference 模块来实现模型引用,Sysblock 需要同时加载主模型与被引用模型,从用户模型浏览器中将被引用模型拖拽到主模型绘图中进行引用。

    要了解模型引用的具体使用场景,请参阅模型引用

  • 与物理模型混合仿真

    Sysblock 框图模型也可以直接拖拽到 Modelica 物理模型中进行混合建模与仿真,操作方式与模型引用类似。请参阅混合建模仿真

  • 快捷操作

    Sysblock 框图建模的快捷键位与 Simulink 有所差异。请参阅快捷操作

  • 命令行

    用户可以通过命令行对 Sysblock 模型进行操作。不同于必须使用 MATLAB 命令行操作 Simulink 模型,除了使用 Syslab 命令行,也可以在 Sysplorer 命令窗口中操作 Sysblock 模型。

    要了解基础的 Sysblock 命令,请参阅命令行

# 状态机建模

  • 使用状态机组件

    Sysblock 状态机组件全部位于 Sysblock 状态机模型库,可通过拖拽的方式,向 Sysblock 绘图添加一个状态机 Chart 模块,然后双击打开状态机,将组件从模型库添加到状态机内。

    需要注意的是,除了状态机 Chart 模块以外,其他模块不可在外部的 Sysblock 绘图中使用。请参阅状态机建模环境

  • 状态机建模语法

    Sysblock 状态机中的语句编写需使用 Modelica 语法,赋值语句与 MATLAB 语言或 C 语言存在区别:

    a := b + 1; // 表示 a 等于 b 加 1
    

    由于很多用户习惯使用=而非:=进行赋值,Sysblock 有时可以识别用户的输入并自动更正。要了解其他状态机建模语法,请参阅 状态机基本语法

# 代码生成机制

  • Sysplorer 代码生成

    Sysplorer 代码生成可将 Modelica 物理模型转换为可在桌面或实时环境中运行的高效 C 代码,包括以下 3 种方式:

    • 输出功能实体模型单元(FMU), 生成硬件在环的实时仿真代码;
    • 输出源代码(包含求解库), 生成硬件在环的联合仿真代码;
    • 输出支持实时仿真平台(Real-Time Platform),生成可迁移至指定实时平台的仿真代码。

​ 由于 Modelica 本身标准化程度较高,Sysplorer 能够确保生成的 C 代码与模型仿真一致,代码生成的过程中不需要执行重复性验证。关于 Sysplorer 代码生成,请参阅 Sysplorer 代码生成概述

  • Sysblock代码生成

​ 与 Sysplorer 代码生成类似,Sysblock 同样基于统一的 Modelica 规范生成 C 代码,不同之处在于代码可以针对嵌入式目标平台进行特定的优化和调整。上述机制确保 Sysblock 在生成的 C 代码与模型仿真的一致性方面优于 Simulink。关于 Sysblock 代码生成,请参阅嵌入式代码生成