这个例子比较信息的行为、事件和数据在Stateflow®。
这个模型有三个发送方图表:DataSender
,EventSender
,MessageSender
。每个发送方图有一个状态。入口动作的状态,图表数据赋值,发送一个函数调用的事件,或传达一个信息。
对于每个发送者的图表,都有一个对应的接收机图表。每个接收机图表有一个状态图与状态A0
,A1
,A2
,A3
。隐式的事件后(3秒)
触发器的过渡A0
来A1
。数据、事件或消息从相应的发送方图表警卫之间的转换A1
,A2
,A3
。
每个接收机图活动状态启用并连接到一个输出范围。范围显示状态是活跃在每个时间步。这个输出强调了输出数据之间的行为差异,事件和消息。
的DataSender
表分配一个值为1的输出数据米
作为一个输入连接DataReceiver
图表。
的DataReceiver
在每一个时间步表执行一次。在模拟、状态A0
是活跃的。在时间t = 3
,从A0
来A1
发生。在时间t = 4
是否,图表测试米
等于1。这种情况是真实的,所以图转换A1
来A2
。在时间t = 5
,米
仍然等于1
,所以图表转换A2
来A3
。范围,你看到DataReceiver
改变国家的三倍。
数据赋值后,它认为它的价值在整个模拟。因此,每一次DataReceiver
评估条件(M = = 1)
,它转换到一个新的状态。
的EventSender
图表使用的命令发送(M)
发送函数调用输出事件醒来EventReceiver
图表。
的EventReceiver
图表执行只有当输入事件米
醒来的图表。在模拟、状态A0
是活跃的。的过渡A0
来A1
是基于绝对时间时序逻辑,是无效的时间吗t = 0
。A0
保持活力和图表回到睡眠。因为EventSender
发送事件米
只有一次,EventReceiver
不会再醒来。范围,你看到EventReceiver
没有转换的A0
。
事件不保持有效跨越时间的步骤,所以接收表只有一个机会来响应事件。当EventSender
发送事件,EventReceiver
还没有准备好应对。的机会EventReceiver
过渡来响应事件。
的MessageSender
图表使用语法发送(M)
通过输出消息的端口发送消息。进入输入消息队列的消息的MessageReceiver
图表。消息在队列中等待,直到MessageReceiver
评估它。
的MessageReceiver
在每一个时间步表执行一次。在模拟、状态A0
是活跃的。在时间t = 3
,从A0
来A1
发生。在时间t = 4
,图确定米
出现在队列中,所以需要转换吗A2
。最后的时间步,表删除米
从队列中。在时间t = 5
出现在队列中,没有消息,所以图表不过渡A3
。A2
保持活跃的状态。范围,你看到MessageReceiver
状态发生变化时,只有两次。
与事件,消息队列。收到图可以选择随时回复后发送。与数据,消息不会无限期地有效。消息被摧毁的最后一步。