Moore图的设计考虑

Moore语义

在Moore图中,输出仅是当前状态的函数。在每个时间步,Moore图都会被唤醒,计算其输出,然后评估其输入,为下一个时间步重新配置自己。例如,在评估其输入后,摩尔图可能会转换到活动状态的新配置,也称为下一状态。然而,Moore图在改变状态之前必须始终计算其输出。
为了确保输出仅是状态的函数,Moore状态机强制执行以下语义:
输出仅取决于当前状态,而不取决于输入或时序逻辑。
输出不依赖于以前的输出。
图表必须只计算状态中的输出,而不是转换中的输出。
图表必须在更新状态之前计算输出。

Moore图设计规则

为了符合状态机的摩尔定义,必须确保每次Moore图唤醒时,它都会计算当前活动状态集的输出,而不考虑输入。因此,必须遵循Moore图的一套设计规则。

计算状态动作中的输出,而不是转换中的输出

为了确保输出仅取决于当前状态,必须在状态操作中计算输出。你无法在转换上定义操作,因为转换通常依赖于输入或时序逻辑。例如,如果你在转换的条件操作中计算输出,则图表会在输入发生变化时更新输出,这违反了Moore语义。

组合动作。

对于经典图表,n可以在状态中定义不同类型的操作。在Moore图中,每个状态只能包含一个动作。一个状态的操作可以由多个命令语句组成。Stateflow从上到下评估Moore图中的状态。Moore图中的活动状态在评估转换之前执行状态操作。因此,无论外部转换是否有效,都会在每个时间步计算输出。

不要标记状态操作。

不要在Moore图中用任何关键字标记状态操作,如en、du或ex。
如果使用,编译会报错。
在这里插入图片描述

在这里插入图片描述

限制数据范围

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

限制机器父数据。

计算机父数据是你为Stateflow计算机定义的数据。Stateflow机器是Stateflow层次结构的最高级别。当你在此级别定义数据时,机器中的每个图表都可以读取和修改数据。为确保摩尔图不会访问图表外可能被不可预测地修改的数据,请不要使用机器父数据。

不要定义数据存储内存。

你无法在Moore图表中定义数据存储内存(DSM),因为图表外部的对象会修改DSM对象。状态流程图使用数据存储内存与Simulink®模型共享数据。数据存储内存充当全局数据。包含图表的Simulink层次结构中的其他块和模型可以修改DSM。Moore图不得访问可能发生不可预测变化的数据。

不要使用输入来计算输出

在Moore图中,输出不能依赖于输入。因此,使用输入直接或间接地对输出的计算会触发错误。

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

当使用coder.extrinsic调用外部函数时,不可能强制输出仅取决于当前状态。因此,在Moore图中用coder.extrinsic调用外部函数会触发错误。

在转换中不要使用动作

你无法在Moore图中定义条件操作或转换操作。
这些转换在Moore图中无效。
在这里插入图片描述
这里,每个转换都在条件中测试输入u,但根据输入的值在条件动作中修改输出y。此构造违反了Moore语义并引发错误。同样,不能在Moore图中使用转换动作。

不要使用纯流图

因为Moore图不能有条件或转换动作,所以使用状态来产生动作。

不要使用Simulink函数

你不能在摩尔图中使用Simulink函数。此限制可防止在图表执行过程中违反Moore语义。

不导出函数

你无法导出Moore图中的函数。

不要禁用内衬

Moore图语义需要内联。不要强行禁用内联。

不启用超级步骤语义

你不能在Moore图中使用超步语义。

不使用消息

你不能在Moore图中使用消息。

限制事件的使用

限制在摩尔图中使用事件:

有效用法:

仅使用一个输入事件来触发图表。
使用基于事件的时态逻辑来保护转换。
时序逻辑条件值的变化表现得像摩尔图内部调度的事件。在每个时间步,时间事件执行前的ticks仅取决于图表的状态。
在Moore图中,时序逻辑运算符的基本事件必须是预定义的事件,如滴答或唤醒。

无效用法:

你无法广播任何类型的事件。
你不能使用本地事件来保护转换。
你不能在摩尔图中使用本地事件,因为它们不是确定性的。这些事件可能在图表计算输出时发生,因此违反了Moore语义。
你不能使用隐式事件,如chg(data_name)、en(state_name)或ex(statename)。

不要使用Moore图对连续时间系统进行建模

在Moore图中,不能将更新方法设置为“Continuous”。对于Stateflow中具有连续时间的建模系统,请使用经典或Mealy图表。

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值