事件帮助并行状态彼此协调,允许一个状态触发另一个状态的动作。要在同一状态流中同步并行状态®图表,直接从一个状态到另一个状态的广播事件。有关并行状态的更多信息,请参阅使用并行性模型同步子系统。
一种当地事件是一个非图形对象,可以触发状态流图的并行状态的转换或动作。将事件播放到状态时,该事件在该状态的层次结构中的接收状态和任何换算中生效。要广播活动,请使用发送
操作员:
发送(event_name.那endy_name.)
event_name.
是要广播的事件的名称。endy_name.
广播期间是一个活动状态。
此示例使用本地事件作为家庭安全系统设计的一部分。
安全系统包括警报和三个防侵入传感器(窗口传感器,门传感器和运动检测器)。系统检测到入侵后,您有少量时间才能禁用警报。否则,系统会调用警察。
该保安系统图表模拟每个子系统,单独的并行状态。启用输入信号选择上
和关闭
警报的模式,或之间的模式活性
和禁用
每个传感器的模式。启用后,每个传感器监视触发输入信号,表示可能的入侵。
子系统 | 州 | 启用信号 | 触发信号 |
---|---|---|---|
门传感器 | 门 |
d_mode. |
门_sens. |
窗口传感器 | 赢得 |
w_mode. |
Win_sens. |
运动探测器 | 运动 |
m_mode. |
mot_sens. |
报警 | 报警 |
armar_active. |
如果传感器在警报子系统接通时检测到入侵,则它将广播警报
具有此命令的事件:
发送(警报,警报)
为了减轻零星误报的影响,运动探测器包含一个脱嘴设计,因此只有持续的正触发信号产生警报。相比之下,门和窗扇传感器将单个正触发信号解释为入侵并发出立即报警。
在警报子系统中,警报
事件导致从中过渡闲
代表到挂
结肠。当此状态变为活动状态时,警告声音警告占用者可能的入侵。如果出现意外警报,则占用者有很短的时间才能禁用安全系统。如果在该时间段内没有禁用,系统会呼叫警方帮助。
StateFlow图表可以使用事件与Simulink中的其他块通信万博1manbetx®模型。例如,在sf_security.
例:
输出事件声音
和call_police.
驱动处理警告声音的外部块和对警方的呼叫。广播这些事件的命令发生在armar.on.
州:
命令声音
作为一个进入行动发生挂
结肠。
命令call_police.
发生在过渡之间的动作发生挂
和闲
变形。
在每种情况下,发出输出事件的命令是事件的名称。
输入事件SL_CALL.
控制动议探测器柜台的时间和对警方呼叫前的短暂延误。在每个实例中,事件发生在对时间运算符的呼叫中后
,这导致在图表接收到事件的转换时几次。
一个输出事件发生在StateFlow图表中,但在图表外的Simulink块中可见。万博1manbetx此类事件使图表能够在图表中发生的事件的模型中通知其他块。
每个输出事件映射到图表右侧的输出端口。根据其配置,相应的信号可以控制触发的子系统或函数呼叫子系统。要在属性检查器中配置输出事件,请设置触发字段到其中一个选项。
触发器类型 | 描述 |
---|---|
无论是边缘 |
输出事件广播会导致输出信号在零和一个之间切换。 |
函数调用 |
输出事件广播会导致Simulink函数调用事件。万博1manbetx |
在里面sf_security.
示例,输出事件声音
和call_police.
使用边缘触发器在Simulink模型中激活一对锁存子系统。万博1manbetx当每个锁存器检测到其输入信号中的值的变化时,它在返回到零的输出之前,它短暂地输出一个值。
一个输入事件发生在Simulink块万博1manbetx中,但在状态流图中可见。这种类型的事件使其他Simulink块(包括其他StateFlow万博1manbetx图表)能够通知外部出现的事件的特定图表。
外部Simulink块通万博1manbetx过连接到状态流图顶部的触发端口的信号发送输入事件。根据其配置,输入事件由信号值的变化或通过来自Simulink块的函数调用来产生输入事件。万博1manbetx要在属性检查器中配置输入事件,请设置触发字段到其中一个选项。
触发器类型 | 描述 |
---|---|
升起 |
当输入信号从零或负值变为正值时,将激活图表。 |
落下 |
当输入信号从正值变为零或负值时,将激活图表。 |
要么 |
当输入信号在任一方向上变化时,当输入信号交叉零时,激活图表。 |
函数调用 |
使用Simulink块的函数调用激活图表。万博1manbetx |
在里面sf_security.
示例,一个模拟链接万博1manbetx功能呼叫生成器通过触发输入事件来控制安全系统的定时SL_CALL.
通过定期函数调用。
安全系统图表具有来自几个的输入手动开关块和输出到连接到的一对锁存子系统显示块。在模拟期间,您可以:
通过单击,启用警报和传感器子系统并触发入侵检测开关块。
观察图表动画突出显示图表中的各种活动状态。
查看输出信号范围块和模拟数据检查器。
要调整模拟的时间,请双击功能呼叫生成器块,并且,在对话框中,修改采样时间领域。例如,假设您将采样时间设置为1并启动模拟,并使用所有子系统打开,所有传感器触发关闭。在模拟中,您执行这些操作:
当时T.= 250.秒,你触发门传感器。警报开始声音(声音
= 1)因此您立即禁用警报系统。您关闭触发器并重新打开警报。
当时T.= 520.秒,触发窗扇传感器,警报开始声音(声音
= 0.)。这次,你没有禁用警报。在时间T.= 600.,安全系统调用警察(call_police.
= 1)。该声音
和call_police.
信号继续在零和每80秒之间切换到零一个。
当时T.= 1400.秒,禁用警报。该声音
和call_police.
信号停止切换。
仿真数据检测器显示了响应声音
和call_police.
向您的行动发出信号。