MATLAB MAB 5.0建模规范-Stateflow规范 第5部分(详细)

MAB(Mathworks Advisory Board,Mathworks咨询委员会)针对MATLAB、Simulink、Stateflow规定了建模重要基本规则,这些建模指南的总体目的是让模型的建模者和使用者能够形成简单、统一的理解,本文章主要针对2020年3月发布的5.0版本进行逐条解读。

众所周知,编码规范可以在命名、缩进、注释、格式上统一代码风格,别人一看就懂,降低了沟通成本,并且规范的代码结构也使得代码的可读性、可维护性极大提升,同样,建模规范也有异曲同工之妙,遵守建模规范是实现以下目标的重要前提主要目标是:

  • 提高图形的可理解性
  • 提高功能分析的可读性
  • 防止连接错误
  • 注释等
  • 提高代码生成效率
  • 确保生成代码的健壮性

目录

  • Stateflow建模规范(共54条)
  • 详细解读
    • [jc_0511: 图形函数返回值规范](#jc_0511: 图形函数返回值规范)
    • [jc_0804: 图形函数禁止递归调用规范](#jc_0804: 图形函数禁止递归调用规范)
    • [na_0042: Simulink 函数使用规范](#na_0042: Simulink 函数使用规范)
    • [na_0039: Chart 块中 Simulink 函数使用限制规范](#na_0039: Chart 块中 Simulink 函数使用限制规范)
  • 其他Stateflow规范
    • [Stateflow模块 / 数据 / 事件](#Stateflow模块 / 数据 / 事件)
    • Stateflow图
    • [条件转移 / 动作](#条件转移 / 动作)
    • 标签描述
  • 声明

MAB 5.0共151条规范,分为命名规范、Simulink建模规范、Stateflow建模规范、MATLAB规范四类。

Stateflow规范共54条,分以下5部分进行解读

  • 第1部分:Stateflow模块 / 数据 / 事件
  • 第2部分:Stateflow图
  • 第3部分:条件转移 / 动作
  • 第4部分:标签描述
  • 第5部分:其他

本文章解读第5部分 其他

MAB 5.0最全规范见 MATLAB MAB 5.0建模规范解读(最全)

Stateflow建模规范(共54条)

其他(4条)

序号 规范 ID 规范名称 核心要求简述
1 jc_0511 Return values from a graphical function 图形函数返回值规范 图形函数的返回值仅在一个位置设置
2 jc_0804 Prohibited use of recursive calls with graphical functions 图形函数禁止递归调用规范 图形函数不允许递归调用或相互调用
3 na_0042 Usage of Simulink functions Simulink 函数使用规范 Chart 中 Simulink 函数仅使用本地数据 / 输入数据;或被多处调用;或不按每个时间步调用
4 na_0039 Limitation on Simulink functions in Chart blocks Chart 块中 Simulink 函数使用限制规范 Simulink 函数中不使用 Stateflow 块

详细解读

jc_0511: 图形函数返回值规范

规范描述

  1. 图形函数的返回值只应在一个位置设置。

核心目的

  • 避免返回值混乱:分散设置返回值可能导致不同执行路径返回不一致的结果,或因分支遗漏导致返回值未定义,规范可杜绝此类风险。
  • 保障逻辑确定性:统一返回值设置位置,使函数的输出逻辑透明化,确保仿真与代码生成时的结果一致性,符合嵌入式控制器对函数输出稳定性的要求。
  • 提升模型可读性与可维护性:集中管理返回值,让开发人员快速定位函数的输出逻辑,避免因多路径返回导致的理解偏差,降低跨团队协作的维护成本。

示例说明

正确示例
图形函数的返回值只在一个位置设置。
错误示例
图形函数的返回值在多个位置设置。

jc_0804: 图形函数禁止递归调用规范

规范描述

  1. 禁止图形函数的自调用以及图形函数之间的相互调用。

核心目的

  • 避免运行时异常:递归调用可能导致栈溢出、无限循环等问题,尤其嵌入式系统的内存与运行资源有限,此类异常会直接导致系统崩溃,规范可从源头规避该风险。
  • 保障逻辑确定性:禁止递归可确保图形函数的执行流程清晰可控,无不确定的调用深度与循环,符合嵌入式控制器对逻辑稳定性的要求。
  • 提升模型可读性与可维护性:非递归的调用关系更直观,开发人员可快速追溯函数执行路径,降低跨团队协作时的理解成本,减少调试难度。

示例说明

正确示例
处理在图形函数内执行。
错误示例
图形函数正在调用其自身。
图形函数正在互相调用。

规范描述

  1. 仅当满足以下任意一项或多项条件时,才可在 Stateflow [Chart] 中使用 [Simulink Function]:
    • 输入 / 输出变量仅使用 [Chart] 的局部数据;
    • 输入 / 输出变量仅使用 [Chart] 的局部数据和输入数据;
    • Simulink Function\] 需在 \[Chart\] 内的多个位置被调用;

核心目的

  • 提升模型可读性:限定 [Simulink Function] 的使用场景,避免在无需复用、高频调用等场景下滥用,使模型结构更清晰,便于开发人员理解函数用途与调用逻辑。
  • 优化模型性能:避免 [Simulink Function] 被每个时间步强制调用导致的冗余计算,降低模型仿真与代码生成的资源消耗,提升运行效率。
  • 保障逻辑合理性:明确输入 / 输出变量的使用范围(局部数据、输入数据),避免变量跨范围滥用导致的逻辑混乱,确保函数与 [Chart] 的数据交互可控。

示例说明

正确示例
Simulink Function 模块lookup1D 没有在每个时间步中都被调用,因此可以使用。
错误示例
Simulink Function 模块lookup1D 在每个时间步中都被调用,因此无法使用(out 是 Stateflow 的输出数据)。

规范描述

  1. 不应在 Stateflow Chart (Stateflow) 所包含的 Simulink Function模块中使用 Stateflow 模块。

核心目的

  • 避免逻辑层级混淆:Stateflow 块(如 [Chart])与 [Simulink Function] 分属不同建模逻辑载体,嵌套使用会导致层级关系混乱,规范可明确两者的使用边界,杜绝理解偏差。
  • 降低设计错误风险:Stateflow 块的状态流转、事件触发逻辑与 [Simulink Function] 的运算逻辑嵌套后,易引发执行顺序冲突、数据交互异常等问题,禁止混用可从源头规避此类风险。
  • 提升模型可读性与可维护性:明确 [Simulink Function] 的内部实现范围,让开发人员快速识别函数的逻辑边界,避免因嵌套 Stateflow 块导致的调试与修改困难,降低跨团队协作成本。

示例说明

错误示例

其他Stateflow规范

Stateflow模块 / 数据 / 事件

Stateflow模块 / 数据 / 事件规范详细解读见 MATLAB MAB 5.0建模规范-Stateflow规范 第1部分(详细)

Stateflow图

Stateflow图规范详细解读见 MATLAB MAB 5.0建模规范-Stateflow规范 第2部分(详细)

条件转移 / 动作

条件转移 / 动作规范详细解读见 MATLAB MAB 5.0建模规范-Stateflow规范 第3部分(详细)

标签描述

标签描述规范详细解读见 MATLAB MAB 5.0建模规范-Stateflow规范 第4部分(详细)

声明

此文章基于Mathworks官方MAB 5.0规范进行解读,部分图形会有引用,而非另起炉灶撰写。


感谢阅读,如有错误恳请指正,如对您有帮助,动手点个赞吧^ - ^

相关推荐
机器学习之心2 小时前
BiLSTM锂电池剩余寿命预测,NASA数据集(5号电池训练6号电池测试),MATLAB代码
matlab·nasa数据集·bilstm锂电池剩余寿命预测
可编程芯片开发2 小时前
基于自适应MUSIC算法的波束形成matlab仿真
算法·matlab·波束形成·自适应music
机器学习之心2 小时前
BiGRU锂电池剩余寿命预测,NASA数据集(5号电池训练6号电池测试),MATLAB代码
matlab·bigru锂电池剩余寿命预测
阿杰嵌入式13 小时前
MATLAB MAB 5.0建模规范-Stateflow规范 第1部分(详细)
matlab
t1987512813 小时前
TOA定位算法MATLAB实现(二维三维场景)
开发语言·算法·matlab
jllllyuz13 小时前
粒子群算法解决资源分配问题的MATLAB实现
开发语言·算法·matlab
aini_lovee15 小时前
MATLAB圆锥滚子轴承滚子参数分析程序
人工智能·算法·matlab
guygg8816 小时前
基于ADMM的MRI-PET高质量图像重建算法MATLAB实现
开发语言·算法·matlab
feifeigo12316 小时前
基于MATLAB的V-BLAST结构BER仿真
开发语言·matlab