粉状图的设计注意事项
粉粒机是一种有限状态机,其转换发生在时钟边缘。在米利图中,输出是输入和状态的函数。在每个时间步骤中,Mealy图都会被唤醒,计算其输入,然后转换到活动状态的新配置,也称为其状态下一个状态.图表在转换到下一个状态时计算输出。在独立的statflow中不支持Mealy语义金宝app®MATLAB图表®.
粉状的语义
为了确保输出是输入和状态的函数,Mealy状态机强制执行以下语义:
输出不依赖于下一个状态。
该图表仅计算转换输出,而不计算状态输出。
图表根据系统时钟周期性地唤醒。
请注意
图表为输入和时钟提供了一个时间基础(参见使用一个时间基计算输出和状态).
粉状图设计指南
要符合状态机的Mealy定义,请确保每次输入端口发生更改时,图表都会计算输出。
仅在条件操作中计算输出
只能在外部和内部转换的条件操作中计算输出。Mealy机器的一种常见建模风格是在条件下测试输入,并在相关操作中计算输出。
不使用状态动作或转换动作
不能在米利图中使用状态操作或转换操作。这个限制通过以下方式强制执行Mealy语义:
防止图表在不考虑输入端口变化的情况下计算输出。
确保输出取决于当前状态,而不是下一个状态。
限制数据范围
在Mealy图中,这些数据限制适用:
限制机器父数据。机器父数据是为statflow机器定义的数据。状态流机器是状态流层次结构的最高级别。当您在这个级别定义数据时,机器中的每个图表都可以读取和修改数据。为了确保Mealy图不会访问可以在图外不可预测地修改的数据,不要使用机器父数据。
不要定义数据存储内存。不能在Mealy图中定义数据存储内存(DSM),因为图表外部的对象可以修改DSM。状态流图使用数据存储内存与Simulink共享数据金宝app®模型。数据存储内存充当全局数据。在包含图表的S金宝appimulink层次结构中,其他块和模型可以修改DSM。粉状图不能访问可能不可预测地变化的数据。
限制事件的使用
限制在Mealy图表中使用事件:
有效的用途:
使用输入事件来触发图表。
使用基于事件的时间逻辑来保护转换。
时间逻辑条件值的变化就像米利图内部调度的事件。在每个时间步骤中,时态事件执行前的滴答数仅取决于图表的状态。有关更多信息,请参见时间逻辑运算符.
请注意
在米利图中,时间逻辑运算符的基本事件必须是预定义的事件,例如
蜱虫
(见基于数据和状态的隐式事件).
无效的用途:
不能广播任何类型的事件。
您不能使用本地事件来保护转换。局部事件违反了Mealy语义,因为它们不是确定的,并且可以在图表计算输出时发生。
您不能使用隐式事件,例如
chg (data_name)
,en (state_name)
,或例(state_name)
.
使用一个时间基计算输出和状态
您可以使用一个时间基准作为时钟和输入,由Simulink求解器确定。金宝appSimu金宝applink求解器将时钟速率设置为足够快以捕获输入变化。因此,Mealy图通常在同一时间步长中计算输出和更改状态。有关更多信息,请参见解决比较(金宝app模型).