Stateflow中三种状态转移方式的区别(默认转移、外部转移、内部转移)
文章目录
- 前言
- 一、让人头秃的自增循环
- 二、默认转移和内部转移的区别
- 三、抛弃during追求entry
- 总结
前言
Stateflow中有三种典型的状态转移方式:默认转移、外部转移、内部转移。
其中外部转移比较好理解,但是默认转移和内部转移之间的一些区别,在应用过程中稍不注意就会埋下“雷”。本文以在项目中踩到的雷为例,为大家区分Stateflow中的三种状态转移方式。
提示:以下是本篇文章正文内容,下面案例可供参考
一、让人头秃的自增循环
下面是我搭建的一个简单的demo,功能如下:
1、a为Local量,运行后,a进行自增。当a<10:此时b输出0。
2、当a自增至>=10时,b输出1。
以下为控制模型:
当我们对模型进行功能测试时,发现模型并不能实现预期功能,以下为模型输出:
我们发现模型中a并没有自增,b也没有实现状态跳转。
So,What heppened!
二、默认转移和内部转移的区别
其实简单理解,默认转移相当于en(entry),内部转移相当于du(during)。所以,上述模型等价于:
而Stateflow跳转的优先级:默认转移(entry)> 外部转移 > 内部转移(during)。
那么来梳理一下模型功能实现的逻辑:
1、a = 0;分支进行外部转移线1。
2、a = 0;分支进行外部转移线1。
。
。
。
n、a = 0;分支进行外部转移线1。
而实现a++的逻辑是要进入during才能触发的,所以这里陷入了ErrUp外部跳转线1的无限循环逻辑。
那我们如果想要实现a++的逻辑,就应该在ErrUp的外部转移之前对a进行自增。根据Stateflow跳转的优先级,此处应该用默认转移(entry)。
三、抛弃during追求entry
对模型进行修改如下:
运行结果:
我们看到a实现了自增,b最终输出为1。
由于entry和默认循环等价,我们也可以这样搭:
输出也是木有问题滴。
总结
在应用Stateflow的不同跳转方式时,一定要注意不同转移方式的差异点:
1、跳转优先级:默认转移(entry)> 外部转移 > 内部转移(during)
2、默认转移相当于entry
3、内部转移相当于during
Stateflow中三种状态转移方式的区别(默认转移、外部转移、内部转移)相关推荐
- 了解mysql的三种不同安装方式的区别
学习目的:了解mysql的三种不同安装方式的区别 学习内容: mysql 的安装有三种:分别是源码安装.二进制安装.rpm安装. 源码安装的优势:linux操作系统开放源代码,因此在其上面安装的软件大 ...
- 虚拟机linux和主机网络连接,linux虚拟机中和主机三种网络连接方式的区别
linux虚拟机中和主机三种网络连接方式的区别 在介绍网络模式之前,关于网络的几个简单命令的使用 ifup eth0 //启动网卡eth0 ifdown eth0 //关闭网卡eth0 /etc/ne ...
- 函数传参string_C/C++的三种函数传值方式及其区别
C/C++函数传参方式我想很多朋友应该都知道,但是不同传参方式的背后他们的区别是什么我想很多人并不那么清楚.本文就给大家揭露一下各传参方式的区别. 传参方式有这三种:值传递.引用传递.指针传递 大家可 ...
- C#中三种截屏方式总结
昨天写自动化测试的CASE的时候,碰到一个疑难杂症,调用截图的函数去截取一个Popup窗口,但是总是把背景程序给截下来,Popup窗口就跟看不到一样.本来以为是同步的问题,也就是以为先截图再点击弹出P ...
- c# 非顶层截屏_C#中三种截屏方式总结
昨天写自动化测试的CASE的时候,碰到一个疑难杂症,调用截图的函数去截取一个Popup窗口,但是总是把背景程序给截下来,Popup窗口就跟看不到一样.本来以为是同步的问题,也就是以为先截图再点击弹出P ...
- JS中三种字符串连接方式及其性能比较
工作中经常会碰到要把2个或多个字符串连接成一个字符串的问题,在JS中处理这类问题一般有三种方法,这里将它们一一列出顺便也对它们的性能做个具体的比较. 第一种方法 用连接符"+"把 ...
- java中三种基本循环方式详解
#博学谷IT学习技术支持# Java循环for,while和do-while 简述:如果对于同一种操作需要执行多次的话,就要使用到循环结构.它可以大大简化代码的书写量,让我们的开发更便捷. 例如:打印 ...
- 广域网中三种链路连接方式
广域网的通信方式有三种:点到点连接.电路交换和分组交换. 1.点到点连接 点到点(PPP)连接也称为线路租用,它是电信运营商为两个用户点提供专用的连接通信通道,是一种永久式的专用物理通道,比如DDN( ...
- golang 切片的三种简单使用方式及区别
概念 切片(slice)是建立在数组之上的更方便,更灵活,更强大的数据结构.切片并不存储任何元素而只是对现有数组的引用. 三种方式及细节案例 ①定义一个切片,然后让切片去引用一个已经创建好的数组 pa ...
最新文章
- mysql数据库主从不同步的解决方法
- TP框架中内置查询IP函数
- [攻防世界 pwn]——get_shell
- 从MySQL随机选取数据
- 798·锣鼓巷·牛街
- 利用C++模板编写的序列化框架
- 1000道Python题库系列分享八(29道)
- Python 字典(Dictionary) 基本操作
- 强大好看的dz论坛社区源码手机端
- rpg存档修改网站_Switch上国宝级欧美版RPG游戏推荐
- F200——搭载基于模型设计的国产开源飞控系统无人机
- 统计模型评价准则 AIC
- 【时空序列】使用3D卷积网络学习时空特征
- Photoshop中曲线调整如何恢复
- 普通笔记本/台式机安装MacOS教程
- mysql secure file_mysql load data secure-file-priv问题
- Aruba无线AP入坑心得
- firefoxos中打开app
- shell脚本之国际象棋棋盘
- 终极解码2013春节版在windows7上使用