主要内容

摩尔图表的设计考虑因素

摩尔机器是有限状态机,其中输出在时钟边缘处修改。在MOORE图表中,输出仅是当前状态的函数。在每次步骤中,摩尔图表唤醒,计算其输出,然后评估其输入以在下次步骤中重新配置自身。例如,在评估其输入之后,图表可以转换为新配置的活动状态。图表在评估其输入和更新状态之前计算其输出。独立状态流不支持Moore语义金宝app®Matlab的图表®

摩尔语刊

确保输出是函数只要在当前状态,摩尔状态机执行这些语义:

  • 输出不依赖于输入。

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

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

摩尔图表的设计规则

要符合状态机的MOORE定义,请确保每次摩尔图表唤醒时,它会从当前的活动状态集中计算输出,而不考虑输入。

对国家行动的限制

为了确保输出完全依赖于当前状态,可以在符合这些限制的情况下计算状态操作中的输出:

  • 结合行动。在Moore图表中,您只能包含每个状态的一个动作。该动作可以由多个命令语句组成。StateFlow从顶部级别下降到摩尔图表中的状态。MOORE图表中的活动状态在评估转换之前执行状态操作。因此,在每个时间步骤计算输出外部转换是否有效。

  • 不要标记状态行动。不要使用任何关键字在MOORE图表中标记状态操作,例如入口期间, 或者出口。默认情况下,Moore图表在评估输入和更新状态之前在活动状态下执行操作。

过渡行动的限制

如果这些操作不会在输出值和输入值之间引入依赖性,则MOORE图表中的转换可以包含条件和转换操作。例如,在此图表中,每个转换测试输入在一个条件下并修改输出y在一个条件行动中。由于输出值取决于输入的值,因此该构造违反了Moore语义并触发错误。

不要使用输入来计算输出

在MOORE图表中,输出不能取决于输入。使用输入直接或间接贡献输出触发错误。

限制数据范围

在Moore图表中,这些数据限制适用:

  • 限制机器级数据。机器级数据是您为StateFlow机器定义的数据。StateFlow机器是StateFlow层次结构的最高级别。在此级别定义数据时,机器中的每个图表都可以读取和修改数据。为了确保Moore图表无法访问可以在图表外部不可预测的数据进行修改的数据,请不要使用机器父为数据。

  • 请勿定义数据存储内存。您无法在Moore图表中定义数据存储内存(DSM),因为图表外部的对象可以修改DSM对象。StateFlow Chart使用数据存储内存来使用Simulink共享数据金宝app®模型。数据存储存储器充当全局数据。在包含图表的S金宝appimulink层次结构中,其他块和模型可以修改DSM。MOORE图表不得访问可能更改不可预测的数据。

不使用编码器.Extrinsic.呼叫外在功能

您无法使用外在功能编码器.Extrinsic.在MOORE图表中,因为无法强制执行外部函数的输出仅取决于当前状态。用外在功能调用编码器.Extrinsic.在摩尔图表中触发错误。

请勿调用自定义代码功能

您无法在Moore图表中调用自定义代码函数,因为无法强制执行自定义代码函数的输出仅取决于当前状态。调用MOORE图表中的自定义代码函数触发错误。

不使用金宝app职能

您不能在Moore图表中使用S金宝appimulink函数。此限制可防止在图表执行期间违反摩尔语义。

不要导出功能

您无法在MOORE图表中导出函数。

不要禁用内联

Moore图表语义需要内联。

不要启用超级步骤语义

您不能在MOORE图表中使用超级步语。

不要使用消息

您无法在MOORE图表中使用邮件。

限制事件的使用

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

  • 有效的用途:

    • 仅使用一个输入事件来触发图表。

    • 使用基于事件的时间逻辑来保护转换。

      时间逻辑条件的值的变化表现得像摩尔图表中内部的事件。在每次步骤中,时间事件执行之前的刻度数仅取决于图表的状态。有关更多信息,请参阅时间逻辑运算符

      笔记

      在MOORE图表中,时间逻辑运算符的基本事件必须是预定义的事件,例如打钩(看基于数据和状态的隐式事件)。

  • 无效的用途:

    • 您无法广播任何类型的事件。

    • 您不能使用本地事件来保护转换。本地事件违反了Moore语义,因为它们不是确定性,并且在图表计算其输出时可能会发生。

    • 您不能使用隐式事件,例如chg(data_name)en(ende_name), 或者ex(endy_name)

请勿使用摩尔图表进行建模连续时间系统

在Moore图表中,您无法将更新方法设置为连续。对于在型界中具有连续时间的建模系统,使用经典或MEALY图表。

相关话题