主要内容

为摩尔图表设计注意事项

摩尔机器有限状态机的输出在时钟边沿被修改。在摩尔图表输出仅是当前状态的函数。在每一个时间步,摩尔图醒来,计算其输出,然后计算其输入为下一个时间步重新配置本身。例如,评估其输入后,图表可以过渡到一个新的配置的活跃状态。图表计算其输出之前评估其输入和更新它的状态。摩尔在独立Stateflow不支持语义金宝app®在MATLAB图表®

摩尔的语义

确保输出是一个函数只有摩尔的当前状态,状态机执行这些语义:

  • 输出不依赖于输入。

  • 输出不依赖于之前的输出。

  • 输出不依赖于时序逻辑。

为摩尔图表设计规则

符合摩尔的定义一个状态机,确保每次摩尔图醒来,从当前的活跃状态集计算输出与输入无关。

国家限制的行为

确保输出只依赖于当前状态,您可以计算输出国家行动,受到这些限制:

  • 结合操作。在摩尔图表,您可以包括每个国家只有一个行动。行动可以包含多个命令语句。Stateflow评估州摩尔图表从顶层下来。活跃在摩尔图表执行状态行动之前评估转换。因此,在每个时间步长计算输出外部过渡是否有效。

  • 没有标签状态操作。不与任何关键字标签在摩尔国家行动图表,如条目,,或退出。默认情况下,摩尔图表执行操作前的活跃状态评估的输入和更新状态。

限制过渡动作

转换在摩尔图表可以包含条件和过渡动作如果这些行动不引入一个输出值和输入值之间的依赖。例如,在这个图中,每个过渡测试输入u在一个条件和修改输出y在一个条件的行动。因为输出值取决于输入的值,这种构造违反摩尔语义和触发一个错误。

不要使用输入来计算输出

在摩尔图表输出不能依赖输入。使用一个输入为直接或间接的计算输出触发一个错误。

限制数据范围

在摩尔图表,这些数据限制:

  • 限制Machine-Parented数据。Machine-parented数据数据定义Stateflow机器。Stateflow Stateflow机是最高水平的层次结构。当你在这一级别上定义数据,每一个表的机器可以阅读和修改数据。以确保摩尔图表不访问数据,可以修改不可预知的图表外,不使用machine-parented数据。

  • 不定义数据存储内存。你不能定义数据存储内存(DSM)摩尔图表,因为对象外部的图表可以修改DSM对象。Stateflow图使用数据存储内存共享数据模型金宝app®模型。数据存储内存作为全局数据。包含图表,模型金宝app层次结构中的其他模块和模型可以修改DSM。摩尔图表不能访问数据,可以改变不可预知的。

不要使用coder.extrinsic调用外部函数

你不能调用外部函数coder.extrinsic在摩尔图表,因为它是不可能执行,非本征函数的输出只依赖于当前状态。调用一个外部函数coder.extrinsic在摩尔图引发一个错误。

不调用自定义代码函数

你不能在摩尔图表调用自定义代码函数,因为它是不可能执行自定义代码的输出函数只取决于当前状态。调用自定义代码函数在摩尔图引发一个错误。

不要使用金宝app功能

你不能使用仿真软件功能摩尔图表金宝app。这个限制可以防止违反摩尔语义图执行期间。

没有导出功能

你不能在摩尔图导出功能。

不要禁用内联

摩尔图表语义需要内联。

语义不启用超级一步

你不能使用超级一步语义摩尔图。

不要使用信息

你不能使用消息摩尔图表。

限制使用的事件

限制使用的事件在摩尔的图表:

  • 有效的用途:

    • 只使用一个输入事件触发的图表。

    • 使用基于事件的时序逻辑转换。

      时序逻辑条件的变化值像摩尔图安排内部的事件。在每个时间步,蜱虫的数量时间事件执行前只取决于的状态图。有关更多信息,请参见时序逻辑操作符

      请注意

      在摩尔图表、基础事件时序逻辑操作符必须是一个预定义的事件等蜱虫(见基于隐式事件数据和状态)。

  • 无效的用途:

    • 你不能播放任何类型的事件。

    • 你不能使用本地事件来保护转换。当地活动违反摩尔语义,因为他们不确定性和可能发生在图表计算其输出。

    • 你不能使用隐式等事件chg (data_name),en (state_name),或例(state_name)

不要使用摩尔图表连续时间系统的建模

在摩尔的图表中,你不能设置更新方法连续。Stateflow建模与连续时间系统,用经典或粉状的图表。

相关的话题