摩尔机器是有限状态机,其中输出在时钟边缘处修改。在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图表中的自定义代码函数触发错误。
您不能在Moore图表中使用S金宝appimulink函数。此限制可防止在图表执行期间违反摩尔语义。
您无法在MOORE图表中导出函数。
Moore图表语义需要内联。
您不能在MOORE图表中使用超级步语。
您无法在MOORE图表中使用邮件。
限制摩尔图表中的事件的使用:
有效的用途:
仅使用一个输入事件来触发图表。
使用基于事件的时间逻辑来保护转换。
时间逻辑条件的值的变化表现得像摩尔图表中内部的事件。在每次步骤中,时间事件执行之前的刻度数仅取决于图表的状态。有关更多信息,请参阅时间逻辑运算符。
笔记
在MOORE图表中,时间逻辑运算符的基本事件必须是预定义的事件,例如打钩
(看基于数据和状态的隐式事件)。
无效的用途:
您无法广播任何类型的事件。
您不能使用本地事件来保护转换。本地事件违反了Moore语义,因为它们不是确定性,并且在图表计算其输出时可能会发生。
您不能使用隐式事件,例如chg(data_name)
那en(ende_name)
, 或者ex(endy_name)
。
在Moore图表中,您无法将更新方法设置为连续
。对于在型界中具有连续时间的建模系统,使用经典或MEALY图表。