Stateflow快速入门系列(五): 通过广播事件同步并行状态

news2024/11/13 12:18:42

局部事件允许一个状态触发同一个 Stateflow图中另一个状态的转移或动作,从而使您能够协调并行状态。要将事件从一个状态广播到另一个状态,请使用 send 运算符以及事件的名称和激活状态的名称:

send(eventName,stateName)

当您广播事件时,该事件将在接收状态以及该状态层次结构中的任何子状态中生效。

家庭安全系统建模

此示例使用局部事件作为家庭安全系统设计的一部分。

该安全系统由一个警报器和三个防入侵传感器(门传感器、窗传感器和运动检测器)组成。在系统检测到入侵后,您可以在较短的一段时间内禁用警报。否则,系统会向警方报告。

该图通过使用以下并行状态之一对每个传感器进行建模:

  • 并行状态 Door 对门传感器进行建模。输入信号 D_mode 在此传感器的 Active  Disabled 模式之间进行选择。当传感器被激活时,输入信号 Door_sens 指示可能存在入侵。
  • 并行状态 Win 对窗传感器进行建模。输入信号 W_mode 在此传感器的 Active  Disabled 模式之间进行选择。当传感器被激活时,输入信号 Win_sens 指示可能存在入侵。
  • 并行状态 Motion 对运动检测器进行建模。输入信号 M_mode 在此传感器的 Active  Disabled 模式之间进行选择。当传感器被激活时,输入信号 Mot_sens 指示可能存在入侵。

为减轻偶发误报的影响,运动检测器采用了一种去抖设计,因此只有持续的正触发信号才会产生警报。相反,门传感器和窗传感器将单个正触发信号解释为入侵并立即发出警报。

称为 Alarm 的第四种并行状态对警报系统的工作模式进行建模。输入信号 Alarm_active 在警报的 On  Off 模式之间进行选择。如果一个传感器在警报子系统开启时检测到入侵,该传感器会将局部事件 Alert 广播到 Alarm 状态。在状态 Alarm  On 子状态中,该事件触发从 Idle 子状态到 Pending 子状态的转移。当 Pending 被激活时,会发出警报声,提醒住户可能发生入侵。如果发生误报,则住户可以在较短的一段时间内关闭安全系统。如果在这段时间内没有禁用,系统会向警方报警求助,然后返回 Idle 模式。

与其他 Simulink 模块协调

Stateflow 图也可以使用事件与 Simulink® 模型中的其他模块进行通信。

输出事件

输出事件是在 Stateflow 图中发生但在 Stateflow 图之外的 Simulink 模块中可见的事件。这种类型的事件支持 Stateflow 图将该图中发生的事件通知给其他模块。例如,在此示例中,输出事件 Sound  call_police 负责驱动用来处理警报声和向警方报警的外部模块。当局部事件 Alert 触发到状态 Alarm  Pending 子状态的转移时,图会广播这些事件。特别是,在 Pending 子状态中,entry 动作会广播 Sound 事件。同样,发生从 Pending  Idle 的转移时执行的条件动作会广播 call_police 事件。在每种情况下,广播输出事件的动作都使用 send 运算符和事件名称:

send(eventName)

每个输出事件映射到图上的一个输出端口。根据配置,对应的信号可以控制触发子系统或函数调用子系统。要配置输出事件,请执行以下操作:

  1. 建模选项卡的设计数据下,选择符号窗格属性检查器
  2. 符号窗格中,选择该输出事件。
  3. 属性检查器中,将触发器设置为以下选项之一:
  • Either edge - 输出事件广播导致传出信号在 0 和 1 之间切换。
  • Function call - 输出事件广播导致 Simulink 函数调用事件。

在此示例中,输出事件使用边沿触发器来激活 Simulink 模型中的一对锁存子系统。当每个锁存子系统检测到其输入信号中的值发生变化时,它会短暂输出值 1,然后再返回到 0 输出。

输入事件

输入事件是在 Simulink 模块中发生但在 Stateflow 图中可见的事件。这种类型的事件支持其他 Simulink 模块(包括其他 Stateflow 图)将在特定 Stateflow 图之外发生的事件通知该图。例如,在此示例中,输入事件 sl_call 控制运动检测器去抖器的时序以及向警方报警之前的短时延迟。在每个实例中,对时序运算符 after 的调用内会对该事件计数,并在图接收事件达一定次数后触发转移。

外部 Simulink 模块通过连接到 Stateflow 图上的触发端口的信号发送输入事件。根据具体配置,输入事件是由信号值的变化或通过 Simulink 模块中的函数调用产生的。要配置输入事件,请执行以下操作:

  1. 建模选项卡的设计数据下,选择符号窗格属性检查器
  2. 符号窗格中,选择该输入事件。
  3. 属性检查器中,将触发器设置为以下选项之一:
  • Rising - 当输入信号从零或负值变为正值时,图被激活。
  • Falling - 当输入信号从正值变为零或负值时,图被激活。
  • Either - 当输入信号在任一方向变化且过零时,图被激活。
  • Function 调用 - 图通过从 Simulink 模块的函数调用激活。

在此示例中,一个 Simulink Function-Call Generator 模块通过周期函数调用触发输入事件 sl_call 来控制安全系统的时序。

探索示例

在此示例中,Stateflow 图从几个 Manual Switch 模块接收输入,并输出到一对连接到 Display 模块的锁存子系统。在仿真过程中,您可以:

  • 通过点击 Switch 模块启用警报和传感器子系统并触发入侵检测。
  • 观看图动画,其中突出显示了图中的各种激活状态。
  • 查看 Scope 模块和仿真数据检查器中的输出信号。

例如,假设您打开警报和传感器子系统,关闭传感器触发器,并开始仿真。在仿真过程中,您执行以下动作:

  1.  t=250 秒的时刻,您触发门传感器。警报开始响起 (Sound = 1),因此您立即禁用警报系统。您关闭门传感器触发器,然后重新打开警报。
  2.  t=520 秒的时刻,您触发窗传感器并且警报开始响起 (Sound = 0)。这次,您不禁用警报。在大约 t=600 秒的时刻,安全系统向警方报警 (call_police = 1)。Sound  call_police 信号继续每隔 80 秒在 0 和 1 之间切换一次。
  3.  t=1400 秒的时刻,您禁用警报。Sound  call_police 信号停止切换。

仿真数据检查器显示 Sound  call_police 信号对您的动作的响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1872666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年【建筑电工(建筑特殊工种)】模拟试题及建筑电工(建筑特殊工种)作业考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2024年建筑电工(建筑特殊工种)模拟试题为正在备考建筑电工(建筑特殊工种)操作证的学员准备的理论考试专题,每个月更新的建筑电工(建筑特殊工种)作业考试题库祝您顺利通过建筑电工(建筑特殊工种)考试。 1、…

FastGPT 手动部署错误:MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo

在运行 FastGPT 时,mongodb 报如下错误: MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo 这是因为 mongo 没有解析出来,在 hosts 文件中添加如下信息: 127.0.0.1 mongo 重新运行 FastGPT 即可。 参考链接&#xff…

庆祝东兴市金顺心贸易有限公司代理越南三原竹系列产品五周年

🎉庆祝金顺心贸易代理越南三原竹系列产品五周年!这五年,我们共同成长,每一份产品都承载着越南的美味与匠心。感恩有你们,未来的路,我们继续携手前行,品味更多美好!🥢&…

“骑友应小心“杀猪盘”,骑行圈也是小社会”

在数字时代,自媒体平台上的信息传播迅速而广泛,人们的社交活动也愈加多元化。骑行圈,作为一个集体育、休闲与社交于一体的圈子,其独特的魅力吸引着无数热爱生活、享受自然的人们。然而,在享受共同的爱好与乐趣之时&…

Dom4j的基本使用 , XML解析方式和解析器 ,Dom4J结合XPath解析XML

第二章 Dom4j 1 XML解析 1.1 解析概述 ​ 当将数据存储在XML后,我们就希望通过程序获取XML的内容。我们使用Java基础所学的IO知识是可以完成的,不过需要非常繁琐的操作才可以完成,且开发中会遇到不同问题(只读、读写&#xff0…

社交App广告优化新篇章:Xinstall引领用户体验升级,助力买量效果提升

随着移动互联网的快速发展,社交App已经成为人们生活中不可或缺的一部分。然而,在竞争激烈的市场环境下,如何有效地进行广告投放,吸引并留住用户,成为了每个社交App运营者面临的重大挑战。今天,我们就来谈谈…

乐观锁和悲观锁(MySQL和Java)

乐观锁和悲观锁(MySQL和Java) 在并发编程中,为了确保数据的一致性和完整性,我们通常需要使用锁机制来控制对共享资源的访问。锁主要分为两种:乐观锁和悲观锁。本文将详细介绍这两种锁的概念、工作原理以及它们的优缺点。 悲观锁 悲观锁(Pe…

字节码编程ASM之插桩方法执行耗时

写在前面 源码 。 本文看下如何对已有类进行插装。以最经典的方法执行耗时作为例子。 1:编码 假定有如下的代码: public class MyMethod {public String queryUserInfo(String uid) {System.out.println("xxxx");System.out.println("…

visual studio2022配置和使用protobuf

上图证明,我真的测了好多遍,测了好多版本的protobuf,花了很多时间。不过好在最后在vs2022上测通了。 下载protobuf 这里是protobuf下载的地址。 Releases protocolbuffers/protobuf GitHub 个人使用的3.21.9这个版本才跑通的。 1、首先…

【递归、搜索与回溯】floodfill算法二

floodfill算法二 1.被围绕的区域2.太平洋大西洋水流问题3.扫雷游戏4.衣橱整理 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.被围绕的区域…

【OpenSSH】关于操作系统中的自带的SSH你知道怎么用吗

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 关注 收藏 支持一下博主吧~ 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、如何开启SSH服务2.1 什么是OpenSSH2.2 对于Windows 10, Windows 11系统2.2.1 如…

bug记录-XFTP传输中文文件夹乱码

bug记录-XFTP传输中文文件夹乱码 今日想往服务器中同步一些脚本,脚本文件夹是中文命名的,用XFTP导入后发现文件夹名称是乱码的 但是在XFTP上显示是正常的 这是因为window默认是GBK编码 linux是UTF-8编码 所以我们只需要把XFTP会话的编码改为UTF-8就可以了 首先点击文件-当前…

【Android面试八股文】Framework面试:Handler怎么进行线程通信的?原理是什么?

文章目录 Handler整体思想Handler工作流程Handler工作流程图总结Handler整体思想 在多线程的应用场景中,将工作线程中需更新 UI 的操作信息 传递到 UI 主线程,从而实现 工作线程对 UI 的更新处理,最终实现异步消息的处理。 Handler工作流程 Handler 机制的工作流程主要包括…

VUE中,table border属性的不同使用方式

在vue中&#xff0c;使用table&#xff0c;在给table设置边框属性时&#xff0c;按照以往的习惯&#xff1a; <table border"1px solid"><table> 这种写法&#xff0c;产生的效果如下&#xff1a;下边、右边的边框明显和上边、左边不同。border属性设置…

【多维动态规划】Leetcode 97. 交错字符串【中等】

交错字符串 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串 子字符串 是字符串中连续的 非空 字符序列。 s s1 s2 … snt…

2024年5月90篇代码大模型论文最全整理

引言&#xff1a; 本文整理 2024 年 5 月发布的 90 篇代码大模型相关论文&#xff0c;其中包括 17 篇发表在今年 ICLR 的论文。根据论文内容&#xff0c;我们将这些论文整理为了基座模型、代码微调、测试基准、代码 Agent、低资源语言处理、AI 代码安全与分析、人机交互、软件…

Lean4Game 开发教程 | 数学形式化

引言 Lean 是一门用于形式化证明的编程语言&#xff0c;它允许严格证明数学定理和验证软件代码的正确性。 本篇介绍 Lean 游戏的编写和发布方式。这类游戏不仅利于对 Lean 本身的学习&#xff0c;对学科知识的理解&#xff0c;还能推动数学圈内人对 Lean 的接触学习。 Lean4…

你不知道的物联网产品有那么多

目录 1. 智能农业设备 ​编辑1.1 土壤感应器 1.2 自动喷灌系统 2. 智能医疗设备 ​编辑2.1 可穿戴健康监测设备 2.2 智能药盒 3. 智能城市基础设施 ​编辑3.1 智能垃圾桶 3.2 智能路灯 4. 智能物流与供应链 ​编辑4.1 货物跟踪设备 4.2 智能仓储系统 5. 智能网关 …

linux server下人脸检测与识别服务程序的系统架构设计

一、绪论 1.1 定义 1.2 研究背景及意义 1.3 相关技术综述 二、人脸检测与识别技术概述 2.1 人脸检测原理与算法 2.2 人脸识别技术及方法 2.3 人脸识别过程简介 三、人脸检测与识别服务程序的系统架构 3.1 系统架构设计 3.2 技术实现流程 四、后续设计及经验瞎谈 4.…

【Mac】Listen 1 for Mac(最强的音乐搜索工具)软件介绍

软件介绍 Listen 1 for Mac 是一款非常方便的音乐播放软件&#xff0c;主要功能是集成多个音乐平台&#xff0c;让用户可以方便地搜索、播放和管理音乐。它是一个用 Python 语言开发的免费开源综合音乐搜索工具项目&#xff0c;最大的亮点在于可以搜索和播放来自网易云音乐&am…