[simulink] --- simulink中stateflow的使用
迪丽瓦拉
2025-05-31 02:59:51
0次

1 simulink基本语法

1.1 状态层次结构

要管理多级状态复杂性,可以在 Stateflow 图中使用层次结构。借助层次结构,可以表示系统中多个层级的子组件。

状态层次结构示例
在下例中,图中显示了三个层级。在一个状态的边界内绘制另一个状态表示内部状态是外部状态(或父状态)的子状态(或子级)。外部状态是内部状态的父级。
在这里插入图片描述
在本例中,图是状态 Car_done 的父级。状态 Car_done 是 Car_made 和 Car_shipped 状态的父状态。状态 Car_made 也是 Parts_assembled 和 Painted 状态的父状态。
也可以说状态 Parts_assembled 和 Painted 是 Car_made 状态的子级。
要以文本形式表示 Stateflow 层次结构,可以使用斜杠字符 (/) 表示图,使用句点 (.) 分隔状态层次结构中的每一级。下表提供了上例中对象层次结构的文本表示形式:

/Car_done
/Car_done.Car_made
/Car_done.Car_shipped
/Car_done.Car_made.Parts_assembled
/Car_done.Car_made.Painted

1.2 状态分解

每个状态(或图)都有分解,表示该状态(或图)可以包含哪些类型的子状态。父状态的所有子状态必须与父状态分解是同一类型。状态分解可以是互斥 (OR) 形式或并行 (AND) 形式。
互斥 (OR) 状态分解
带有实线边框的子状态表示互斥 (OR) 状态分解。此分解可用于描述互斥工作模式。当状态拥有互斥 (OR) 分解时,一次只能有一个子状态激活。
在下例中,状态 A 或状态 B 中的一个可以是已激活。如果状态 A 已激活,则状态 A1 或状态 A2 可以在给定时间激活。
在这里插入图片描述
并行 (AND) 状态分解
带有虚线边框的子状态表示并行 (AND) 状态分解。使用此分解可以描述并行工作模式。当状态拥有并行 (AND) 分解时,所有子状态同时激活。
在下例中,当状态 A 激活时,A1 和 A2 两者可以同时激活。
在这里插入图片描述

1.3 状态标签

状态标签显示在状态的长方形框的左上角,一般为以下格式:

name/
entry:entry actions
during:during actions
exit:exit actions
on event_name:on event_name actions
on message_name:on message_name actions
bind:events

下例显示了状态标签的构成。
在这里插入图片描述

1.4 状态名称

状态标签开头为状态名称,其后可接 / 字符。在前面的示例中,状态名称是 On 和 Off。有效的状态名称由字母数字字符组成,可以包含下划线字符 (_)。有关详细信息,请参阅Rules for Naming Stateflow Objects。
下例展示了状态的唯一命名机制。
在这里插入图片描述
以下每个状态因其在图中的位置而拥有一个唯一名称。状态在 FAN1 和 FAN2 中的完整名称为:

PowerOn.FAN1.On
PowerOn.FAN1.Off
PowerOn.FAN2.On
PowerOn.FAN2.Off

1.5 转移

转移是一条将多个图形对象连接在一起的带箭头的直线。在大多数情况下,转移表示系统在不同模式(状态)间转移的通道。转移通常连接来源和目标对象。源对象是转移开始的位置,目标对象是转移结束的位置。

1.5.1 转移层次结构

转移不能像状态那样包含其他对象。但是转移包含在状态中。转移的层次结构通过其父级、源状态和目标状态几个方面来描述。父级是最低层级,包含转移的源对象和目标对象。考虑下例中转移的父级:
在这里插入图片描述
下表分析了上例中每个转移的父级关系。/ 字符表示图。状态层次结构的每一级使用句点字符 (.) 分隔。

转移标签转移父级转移源转移目标
switch_off//Power_on.Low.Heat/Power_off
switch_high/Power_on/Power_on.Low.Heat/Power_on.High
switch_cold/Power_on.Low/Power_on.Low.Heat/Power_on.Low.Cold

1.5.2 转移标签表示法

转移标签可以包含事件或消息、条件、条件动作和转移动作。标签的每部分均为可选。? 字符是默认的转移标签。转移标签的完整格式如下:

event_or_message[condition]{condition_action}/transition_action

注意:
组成转移标签的四个部分不一定完整地出现,但是不论出现哪几个部分,标签的内容必须按照上面指定的顺序书写。

触发事件或消息
指定在条件为 true 时导致转移发生的事件或消息。使用 OR 逻辑运算符 (|) 可指定多个事件。指定事件或消息是可选项。未指定事件或消息表示在发生任意事件时都会产生该转移。有关详细信息,请参阅通过广播事件同步模型组件和通过发送消息与 Stateflow 图通信。

在前面的示例中,只要条件 [off_count0] 为 true,事件 E 的广播就会触发从 On 到 Off 的转移。
条件
指定一个布尔表达式,当其计算结果为 true 时,会对指定的触发事件或消息所关联转移的有效性进行验证。条件需括在方括号 ([]) 内。如果未指定任何条件,则隐含的条件会计算为 true。有关详细信息,请参阅条件。
在前面的示例中,发生事件 E 时,条件 [off_count
0] 的计算结果必须为 true,从 On 到 Off 的转移才能生效。
条件动作
发生在转移条件的计算结果为 true 之后,到目标的转移被确定为有效之前。将条件动作括在花括号 ({}) 中并放在条件后。有关详细信息,请参阅条件动作行为。
在前面的示例中,如果事件 E 发生且条件 [off_count==0] 为 true,则立即执行条件动作 {off_count = off_count + 1}。

转移动作
在到目标的转移被确定为有效之后执行。如果转移包含多个段,则在到达最终目标的整个转移路径被确定为有效时,才会执行转移动作。转移动作发生在源状态的 exit 动作之后、目标状态的 entry 动作之前。转移动作前面要接 /。有关详细信息,请参阅条件和转移动作行为。

1.5.3 转移连接

互斥 (OR) 状态的出向/入向转移
此示例说明互斥 (OR) 状态的简单出向/入向转移。
在这里插入图片描述

以下转移…在以下情况下有效…
从 B 到 A状态 B 处于激活状态,且事件 E1 发生。
从 A1 到 A2状态 A1 处于激活状态,且事件 E2 发生

2 stateflow的使用

2.1 在Simulink中添加Stateflow模块

在Simulink Library Browser中,可将Stateflow中常用的Chart模块拖拽到Simulink中在这里插入图片描述
在这里插入图片描述

2.2 Chart模块的编辑

双击Chart模块,可进入Chart模块编辑界面。
在这里插入图片描述
在Chart模块编辑界面左栏中,可拖入表示状态的框。
在这里插入图片描述
指向状态的箭头表示进入Chart后第一个进入的状态,框中“?”部分可输入表示状态的标识名称,输入名称按Enter换行即可输入状态中执行的动作。需要注意的是,进入Chart的箭头并不一定指向某个状态,也可指向某个分支点,用于处理不同情况的输入。
在这里插入图片描述
在表示动作的行中,首先键入上述三种类型的关键字entry、during和exit及“:”,然后在“:”后输入动作内容。也可在表示动作的行中直接输入动作内容,Simulink会自动默认补全关键字entry。
在这里插入图片描述
而在两个不同状态之间添加连线,表示状态的转移。
在这里插入图片描述
在编辑Chart内部状态的过程中,部分状态涉及到Chart作为一个整体在Simulink中的输入与输出,因此,在编辑Chart内部模型时,可通过Chart → Add Inputs & Outputs菜单添加Chart的输入与输出。
在这里插入图片描述
在Name一栏中输入由Simulink输入Chart的变量名称即可。可在Scope一栏选择Output从而设置由Chart输出Simulink的变量名称。而在Port一栏中可以设置输入或输出在Chart块上显示的位置。

在Model Explorer中,可以通过左侧的树状结构查看Simulink模型中的各部分内容,当然也可以对Chart模块进行编辑,如删除某Chart输入或输出等。
在这里插入图片描述

相关内容

热门资讯

AI做攻略、“双向奔赴”……国... 本文转自:人民网人民网记者 许维娜今年国庆假期,AI(人工智能)成了不少年轻人的“旅行搭子”。行前做...
合肥的这个“梗”, 翻篇了 社交平台的评论区,曾长期流传一句专属于合肥的黑色幽默。有人问合肥哪里好玩,本地网友半开玩笑地回复:合...
7万+旅游中高层都在的群,今天... 做旅游这行,资源卡位、渠道互通、项目落地——往往就差一个“对的机会”。我们的行业社群已聚集70,00...
一场帐篷音乐节,如何让井研从“... 帐篷音乐节现场封面新闻记者 周洪攀10月的研溪湿地,晚风里裹着柑橘的清甜与民谣的回响。夜幕降临,10...
白鹤翩翩落星愿,上海迪士尼度假... 10月9日,世界候鸟日前夕,上海迪士尼度假区星愿公园的湖风里多了一分白鹤的灵动。三座白鹤雕塑正式揭幕...
成都锦江边赏初秋枫叶飘飘 目前,成都锦江边国华街枫叶树红了。近年来,国华街附近的几条街都栽种了红枫树,是城区较集中看枫叶的点位...
GBTA:商务旅行正在复苏,但... 亚太正在成为全球商务旅行增长的重要引擎。在经历疫情后的快速反弹之后,全球商务旅行正在进入一个新的增长...
从景区焕新到节赛引流 邹城双节... 齐鲁网·闪电新闻10月9日讯 中秋、国庆“双节”假期,邹城市文化和旅游局提前谋划、周密部署,立足自身...
江山如此多娇 且看石楼今朝 金秋十月,黄河岸畔秋意盎然,丰收盛会喜迎国庆。本次石楼国庆文旅活动以“江山如此多娇,且看石楼今朝”为...
海南国庆假期接待游客475.4... 2026年国庆假期,海南接待游客475.40万人次,较2025年增长13.1%,较2024年增长15...