主要内容

在执行期间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_bags1,亚态变得不活跃。然后,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_bedroomSecond_bedroom。当Family_suite变得活跃,平行状态醒来根据他们的执行顺序,所表示的数量在每个州的右上角。同时亚态保持活跃。有关更多信息,请参见执行顺序为平行状态输入一个图表或状态

函数调用从一个国家行动

而亚态Checked_in活跃时,触发事件吗room_service。这个动作对应要求客房服务。你的酒店账单取决于你的房间类型和客房服务请求的数量。

当图表上升沿或者下降沿检测到一个输入事件room_service,Checked_In国家执行该事件的操作。国家增加本地数据对象服务并调用MATLAB®函数费用。这个函数需要房间服务请求的总数作为输入,并返回当前酒店比尔作为输出。有关更多信息,请参见控制图使用事件动作执行的一个超级大国

执行的状态与历史连接

而亚态Checked_in活跃时,触发事件吗fire_alarm,这对应于设置火灾报警。你离开大楼等在指定的等候区。然后触发输入事件all_clear对应于发送一个警报信号,让你回到你以前的位置在酒店。

当图表接收到一个事件广播fire_alarm,从Check_inWaiting_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模型)|(金宝app模型)|(金宝app模型)|(金宝app模型)

相关的话题