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 的使用场景,避免在无需复用、高频调用等场景下滥用,使模型结构更清晰,便于开发人员理解函数用途与调用逻辑。
  • 优化模型性能:避免 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规范进行解读,部分图形会有引用,而非另起炉灶撰写。


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

相关推荐
简简单单做算法17 小时前
基于Logistic-Map混沌序列的数字信息加解密算法matlab仿真
matlab·混沌序列·logistic-map·数字信息加解密
简简单单做算法19 小时前
基于混沌加密的遥感图像加密算法matlab仿真
图像处理·计算机视觉·matlab·混沌加密·遥感图像加密
fengfuyao9852 天前
基于MATLAB的HHT变换完整实现(含EMD分解与三维时频谱生成)
开发语言·算法·matlab
Deep-w2 天前
【MATLAB】基于 MATLAB 的直流电动机双闭环调速系统建模与仿真
开发语言·算法·matlab
T.i.s3 天前
论文复现8
matlab·fmcw
海神之光3 天前
【语音识别】基于matlab语音MFCC特征提取CNN深度学习语音识别【含Matlab源码 14470期】
matlab
Evand J3 天前
【自适应滤波】基于新息协方差匹配的自适应CKF目标跟踪 MATLAB 实战——在目标跟踪、雷达定位、组合导航和传感器融合等问题
人工智能·matlab·目标跟踪
三行数学4 天前
Matlab之父克利夫·莫勒尔逝世
开发语言·matlab
AI Dog4 天前
MathHub数学建模交流社区
数学建模·matlab
机器学习之心4 天前
基于投影寻踪动态聚类的多指标综合评价方法(PPDC),实验文档+MATLAB代码
matlab·数据挖掘·聚类