在模拟检测常见的建模错误
为了避免常见的设计错误,您可以运行诊断测试Stateflow的完整性检查®在编译和仿真图。Stateflow诊断检测状态不一致,数据范围,侵犯和循环行为Stateflow图表在仿真软件金宝app®模型。
模拟一个模型时,Stateflow解析器对图形和nongraphical对象和数据在每个Stateflow机所支持的语言语法图表符号和行动。金宝app您还可以检查你的语法图表选择更新图在建模Stateflow将来发布的标签。
如果存在语法错误在你的图表,图表自动出现导致第一个错误高亮显示的对象。您可以选择的错误诊断窗口使其来源图表前面强调的源对象。任何未解决的数据或事件在图表中标记符号向导。
提示
当你编辑你的图表,Stateflow编辑器显示潜在的原因错误通过突出对象在红色或橙色。有关更多信息,请参见在编辑时检测建模错误。
检测状态不一致
Stateflow图,状态不一致,如果他们违反这些规则之一:
专属的活动状态(或)分解和至少一个亚态有一个活跃的亚态。
活动状态的所有亚态平行(和)分解是活跃的。
非活动状态的所有亚态是不活跃的国家无论分解。
例如,这个图表有一个状态不一致,因为没有默认转换首先表明亚态变得活跃。
添加一个无条件的缺省转换到一个国家解决了状态不一致。
在编译时,Stateflow图表检测状态不一致造成的漏报无条件缺省转换。控制水平的诊断操作,打开配置参数对话框,,诊断>Stateflow窗格中,设置没有无条件的默认转换参数错误
,警告
,或没有一个
。默认设置是错误
。有关更多信息,请参见没有无条件的默认转换(金宝app模型)。
检测数据范围违反
在模拟、数据范围违反时:
一个整数或定点操作溢出其结果类型的数字能力。看到为图表数据处理整数溢出和在Stateflow定点操作图表。
例如,这张表包含本地数据一个
有一个最低值为0,最大值为2。的条目
动作的状态一个
初始化一个
为1。的在
行动增量的价值一个
1。两个时间步后的价值一个
超过指定范围,导致数据范围违反。
在运行时,Stateflow图表检测数据范围违反。控制水平的诊断操作,打开配置参数对话框,,诊断>数据的有效性窗格中,设置这些参数错误
,警告
,或没有一个
:
模拟范围检查检测违反基于最小值和最大值范围检查。默认设置是
没有一个
。包装上溢出和浸透在溢出检测时出现的违反整数或定点操作超过其结果类型的数字能力。默认设置是
警告
。
检测循环行为
循环行为发生在一个步骤或无限期的步骤重复序列图仿真。
例如,这个图表的行动产生无限的循环递归事件广播。
的
在
动作的状态C
广播事件E1
。事件
E1
触发器的过渡状态A.A1
州A.A2
。这种转变广播事件的操作条件E2
。事件
E2
触发器的过渡状态B.B1
州B.B2
。这种转变广播事件的操作条件E1
。
事件广播状态一个
和B
发生在条件的行为,所以转换不发生,直到图过程产生的事件。的亚态A.A1
和B.B1
保持活跃,所以新的事件广播继续触发转换和过程重复下去。
在模拟图,Stateflow图表使用周期检测算法来检测类事件造成的无限递归广播。要启用循环检测,打开Stateflow图表。在调试选项卡上,选择诊断>检测周期性行为。循环行为检查默认被选中。
Stateflow图表还检测无向当地事件广播。控制水平的诊断操作,打开配置参数对话框,,诊断>Stateflow窗格中,设置无向事件广播参数错误
,警告
,或没有一个
。默认设置是警告
。有关更多信息,请参见无向事件广播(金宝app模型)。
解决循环行为流程图
运行时检测周期性行为是有限的情况下,由于事件广播和递归不扩展到其他类型的循环行为。例如,周期检测不检测这个流程图的无限循环。在这个例子中,初始化本地数据的缺省转换我
为0。下一个过渡段的增量我
。过渡回到第一个结时是有效的我
是正的。因为这种情况总是真的,无限循环的结果。
在许多情况下,流程图是由连接引起的周期性行为,没有一个无条件的逃生路径从一个周期。强调这些路口红色Stateflow编辑器。举个例子,在这个流程图,循环中的两大路口没有无条件的路径终端连接。
为了解决这个问题,结合条件的否定c1
进入过渡包含c2
,所以由此产生的图有一个无条件的路径的循环。
同样,顶部结在这个流程图没有无条件路径终端连接。
为了解决这个问题,创建一个无条件的过渡从顶部结终端连接。
相关的话题
- 在编辑时检测建模错误
- 避免不必要的递归图
- 模型配置参数:Stateflow诊断(金宝app模型)