在执行期间Stateflow对象如何交互
在执行期间,Stateflow®对象相互作用来模拟现实世界的行为。下面的例子使用了酒店的入住过程来解释常见的图形和nongraphical Stateflow图中的对象执行期间进行交互。
酒店的入住过程的模型
这个模型包含一个Stateflow图表酒店
。从四个图表接收输入事件手动开关(金宝app模型)块你切换:
入住酒店
叫房间服务
引发了火灾报警
火灾报警后发送一个警报信号
一个Mux(金宝app模型)块将这些输入事件组合成一个向量的输入连接到触发端口上的图表。
图表还收到一个输入信号room_type
从一个多端口切换(金宝app模型)块。这个信号对应的值的类型你想呆在房间。可能的选项“执行”
行政套房,“家庭”
家庭套房,“单身”
一间单人房。
在仿真过程中,由于总量,包括出现在客房服务收费显示(金宝app模型)块。
的酒店
图表包含图形对象,如连接状态和历史,和nongraphical对象,如数据和事件。看到一个图像标签的对象在这个图表中,看到的Stateflow对象。
当你开始仿真,图表不醒来,直到检测到在一个上升沿或者下降沿的输入事件。
切换手动开关部件时,触发一个醒来的图表的输入事件。虽然图表是醒着的,它读取的值图表输入room_type
多端口转换部件、执行任何有效的状态或过渡动作,输出的新价值费
到显示块。
完成所有可能的执行阶段之后,图表回到睡眠状态,并等待下一个输入事件。
表初始化
开始输入的模拟和触发一个事件。这个动作对应进入酒店前台和停止。
因为图的属性(输入)表初始化执行被禁用,图表仍然睡着,直到检测到在一个上升沿或者下降沿的输入事件。然后醒来并执行其默认的图表转换。默认的过渡状态Check_in
发生,使活跃状态。然后,默认转换到亚态Front_desk
发生,使活跃状态。然后睡觉的图表。有关更多信息,请参见执行初始化的一个图表和输入一个图表或状态。
状态之间的转换
而亚态Front_desk
活跃时,触发事件吗check_in
。这个动作对应检查酒店。你收拾你的行李,从前台到你的房间,放下行李。
在图表中,check_in
从亚态事件卫兵即将离任的过渡Front_desk
到亚态Checked_in
。当你触发事件时,过渡变得有效。出口的作用Front_desk
设置本地数据对象的值move_bags
1,亚态变得不活跃。然后,Checked_in
变得活跃和入口操作集move_bags
为0。有关更多信息,请参见Stateflow图表如何应对事件吗,退出状态,输入一个图表或状态。
评价缺省转换路径
后表执行条目
行动Checked_in
状态,它评估默认路径过渡到亚态之一。变得活跃的亚态对应的房间类型。如果你选择一个行政套房,基本费用是1500美元。如果你选择一个家庭套房,基本费用是1000美元。如果你选择一个房间,基本费用是500美元。
图表测试中的缺省转换路径的分支顺序:
如果图表输入
room_type
=“执行”
,过渡是有效的。条件操作集图输出费
1500年,亚态Executive_suite
变得活跃。如果图表输入
room_type
=“家庭”
,中间过渡是有效的。条件操作集费1000和亚态Family_suite
变得活跃。否则,图表输入
room_type
=“单身”
和底部过渡是有效的。条件操作集费500和亚态Single_room
变得活跃。
有关更多信息,请参见执行顺序的流程图。
执行国家独家亚态
如果你触发输入事件check_in
而图输入的值room_type
是“执行”
,亚态Executive_suite
变得活跃。这亚态对应于在行政套房。这套房有单独的卧室和餐厅区,所以你可以在在任何时候只有一套房的面积。当你到达行政套房,你首先进入卧室。当你叫客房服务,你进入餐厅吃。当你想要离开餐厅的食物,你又叫客房服务,然后回到卧室。
国家Executive_suite
独占(或)分解。国家有两个亚态,卧室
和Dining_area
。当Executive_suite
第一次变得活跃,默认的过渡卧室
发生,使亚态活跃。输入事件的广播room_service
触发器的过渡卧室
来Dining_area
,使卧室
不活跃的,Dining_area
活跃。随后播出的room_service
触发转换回来Dining_area
来卧室
,使卧室
主动和Dining_area
不活跃的。有关更多信息,请参见输入一个图表或状态。
执行与平行亚态状态
如果你触发输入事件check_in
而图输入的值room_type
是“家庭”
,亚态Family_suite
变得活跃。这亚态对应于呆在家庭套房。当你的家人到达套房,家庭成员可以花时间在两个卧室。例如,父母可以在第一个卧室看电影,而孩子们睡在第二个卧室。
国家Family_suite
平行(和)分解。国家有两个亚态,First_bedroom
和Second_bedroom
。当Family_suite
变得活跃,平行状态醒来根据他们的执行顺序,所表示的数量在每个州的右上角。同时亚态保持活跃。有关更多信息,请参见执行顺序为平行状态和输入一个图表或状态。
函数调用从一个国家行动
而亚态Checked_in
活跃时,触发事件吗room_service
。这个动作对应要求客房服务。你的酒店账单取决于你的房间类型和客房服务请求的数量。
当图表上升沿或者下降沿检测到一个输入事件room_service
,Checked_In
国家执行在
该事件的操作。国家增加本地数据对象服务
并调用MATLAB®函数费用
。这个函数需要房间服务请求的总数作为输入,并返回当前酒店比尔作为输出。有关更多信息,请参见控制图使用事件动作执行的一个超级大国。
执行的状态与历史连接
而亚态Checked_in
活跃时,触发事件吗fire_alarm
,这对应于设置火灾报警。你离开大楼等在指定的等候区。然后触发输入事件all_clear
对应于发送一个警报信号,让你回到你以前的位置在酒店。
当图表接收到一个事件广播fire_alarm
,从Check_in
来Waiting_area
发生。的历史路口Check_in
,Checked_in
,Executive_suite
记录最后一个活跃在每一个州亚态。升序的活跃状态变得不活跃的层次结构,从最里面的亚态。后Check_in
变得不活跃,Waiting_area
变得活跃。
当图表接收到一个事件广播all_clear
,从Waiting_area
以前积极亚态Check_in
发生。Waiting_area
亚态之前变得无所作为Check_in
成为活跃在降序排列的层次结构,从Check_in
。
有关更多信息,请参见Stateflow图表如何应对事件吗,退出状态,输入一个图表或状态。
另请参阅
手动开关(金宝app模型)|Mux(金宝app模型)|多端口切换(金宝app模型)|显示(金宝app模型)