主要内容

jc_0531:默认转移

规范来源

控制算法建模规范 - 使用 MATLAB®、Simulink® 和 Stateflow®

子 ID 建议

  • NA-MAAB - a、b、c、d、e、f、g

  • JMAAB - a、b、c、d、e、f、g

MATLAB 版本

全部

规则

子 ID a

当 Stateflow Chart (Stateflow)分解Exclusive (OR) 时,默认转移应连接到 Chart 模块的顶部。

当状态的分解Exclusive (OR) 时,默认转移应连接到状态的正下方。

自定义参数

不适用

示例 - 正确

默认转移线连接到顶部。

示例 - 不正确

默认转移线未连接。

子 ID b

分解设置为“并行(AND)”时,不应连接默认转移线。

自定义参数

不适用

示例 - 正确

状态 AA 和 AB 的父对象的分解 设置为 Parallel (AND),这使得状态 AA 和 AB 成为并行状态。这些并行状态没有连接默认转移线。

示例 - 不正确

为并行状态 AA 连接了一条默认转移线。

子 ID c

一个层级不应有多个默认转移。

自定义参数

不适用

示例 - 正确

同一层级中不存在多个默认转移

示例 - 不正确

在状态 A 的同一层级中存在多个默认转移。

子 ID d

默认转移应直接连接并垂直定位于状态或连接结点的上部。

自定义参数

不适用

示例 - 正确

默认转移垂直连接到状态的上部。

示例 - 不正确

状态 A 的默认转移未垂直连接到状态的上部。

子 ID e

默认转移的目标状态或目标连接结点应位于同一层级的左上角。

自定义参数

不适用

示例 - 正确

默认转移位于同一层级的左上角。

示例 - 不正确

状态 AB 的默认转移不在同一层级的左上角。

子 ID f

默认转移不应超出状态边界。

自定义参数

不适用

示例 - 正确

默认转移没有超出状态边界。

示例 - 不正确

默认转移超出了状态边界。

子 ID g

配置参数不存在无条件默认转移应设置为 Error,以确保在默认转移的转移路径中,优先级最低的路径是无条件转移。

自定义参数

不适用

示例 - 正确

默认转移的转移路径中优先级最低的路径是无条件转移。

示例 - 不正确

默认转移的转移路径中优先级最低的路径不是无条件转移。

理由

子 ID a:

  • 当状态图不包含默认转移线时,可能会出现仿真错误。

  • 当流程图中包含默认转移时,无法确定是有意为之还是由于插入其他转移失败所致。

子 ID b:

  • 当没有不必要的默认转移时,可读性会提高。

子 ID c:

  • 当同一层级包含多个默认转移时,状态可能无法按预期运行,并会产生警告。

子 ID d:

  • 当默认转移的角度或位置存在曲线或变化时,可读性会降低。

子 ID e:

  • 当默认转移的转移目标状态或转移目标连接结点的位置发生变化时,可读性会降低。

子 ID f

  • 当默认转移超出状态边界并与状态边界和表达式相交时,可读性会降低。

子 ID g:

  • 当默认转移的转移路径中没有无条件转移时,若转移路径的所有条件均不满足,转移目标将消失。这可能导致意外行为。

验证

模型顾问检查:检查 Stateflow 图中的默认转移放置 (Simulink Check)

上次更改

R2020a

版本历史记录

在 R2020a 中推出