Stateflow的基础用法

定义概念

Stateflow 是一个用于建模和仿真状态机和流程图的强大工具,它提供了一系列的关键字和语法结构来定义状态机的行为。
在simulink建模时,可以直接搜索“char”即可出来。


image.png

基本的语法结构

1. 状态和转移关键字
  • state: 定义一个状态。
  • transition: 定义状态之间的转移。
  • event: 定义一个事件,用于触发状态转移。
  • on: 用于定义特定事件发生时的动作。
2. 状态动作关键字
  • entry: 定义进入状态时执行的动作。
  • during: 定义状态活动期间执行的动作。
  • exit: 定义退出状态时执行的动作。
3. 流程控制关键字
  • if: 条件语句,用于流程控制。
  • else: 配合if使用,定义条件不成立时的执行路径。
  • elseif: 条件语句的扩展,用于多个条件判断。
  • switch: 多条件分支选择。
  • case: 配合switch使用,定义特定的情况。
  • for: 循环结构,用于重复执行一段代码。
  • while: 循环结构,当条件满足时重复执行代码。
  • break: 跳出最内层的循环。
  • continue: 跳过当前循环的剩余部分,直接进入下一次循环条件判断。
4. 数据和变量关键字
  • var: 定义局部变量。
  • const: 定义常量。
  • param: 定义参数,可以与外部数据交互。
  • input: 定义输入数据。
  • output: 定义输出数据。
5. 图形函数关键字
  • chart: 定义一个流程图。
  • function: 定义一个函数,可以被多次调用。
6. 真值表和决策关键字
  • decision: 定义一个真值表或决策表。
  • truth_table: 定义真值表的数据。
7. 其他关键字
  • default: 定义默认转移。
  • junction: 定义一个决策点,用于流程图中的分支和合并。
  • fork: 定义并行路径的开始。
  • join: 定义并行路径的结束。
8. 动作和表达式关键字
  • {}: 包围条件动作。
  • (): 用于执行顺序的分组。

常用的缩写格式形式

状态动作缩写

  • en:entry: - 进入状态时执行的动作。
  • du:during: - 状态活动期间执行的动作。
  • ex:exit: - 退出状态时执行的动作。

转移标签缩写

  • tr:transition: - 定义状态之间的转移。
  • ev:event: - 定义一个事件,用于触发状态转移。
  • cond:condition: - 定义转移条件。
  • act:action: - 定义在转移发生时执行的动作。

流程控制缩写

  • if: - 条件语句的缩写。
  • else: - else语句的缩写。
  • elseif:else if: - elseif语句的缩写。
  • sw:switch: - 开始一个switch语句。
  • cs:case: - 定义switch语句中的一个情况。
  • for: - 开始一个for循环。
  • while: - 开始一个while循环。

其他缩写

  • chart: - 定义一个流程图。
  • func:function: - 定义一个函数。

使用实例:
目的:创建Stateflow框图使一个LED灯500ms闪烁;
注意:下述的图形照着搭,请注意配置数据字典或者定义里面用到的变量;


小灯闪烁Stateflow

解释:

LED_ON 状态:
当进入 LED_ON 状态时(en:),执行的动作是将 LED_Output 设置为 LOW。
LED_OFF 状态:
当进入 LED_OFF 状态时(en:),执行的动作是将 LED_Output 设置为 HIGH。
转移条件
从 LED_ON 状态到 LED_OFF 状态的转移条件是 after(500, msec),这意味着在 LED_ON 状态持续500毫秒后,状态机会自动转移到 LED_OFF 状态。
同样,从 LED_OFF 状态到 LED_ON 状态的转移条件也是 after(500, msec),表示在 LED_OFF 状态持续500毫秒后,状态机会自动转移到 LED_ON 状态。
模型行为
这个状态机模型模拟了一个LED灯的简单闪烁行为,LED灯在 LED_ON 和 LED_OFF 状态之间交替,每个状态持续500毫秒。

欢迎关注本人WXG众H:那个混子
记录自己学习的过程,分享乐趣、技术、想法、感悟、情感!
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容

  • Linux基础教程 一、常用命令使用 1.1 常用命令使用 1.1.1 登录和退出Linux系统 1. 启动和登陆...
    Garfield猫阅读 580评论 0 3
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,375评论 0 4
  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 2,838评论 3 10
  • JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以...
    yangkg阅读 662评论 0 1
  • SQLite 什么是SQLite SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在...
    小乌龟爸阅读 1,073评论 0 1