matlab之Stateflow入门基础

一、状态

1.状态的层次结构

分为父状态和子状态

  1. 每一个状态都有父状态,最外围的状态其父状态是它本身
  2. 外部的state叫父状态,内部的状态叫子状态

2.状态的横向结构

状态图的顶层或某一父状态下,通常并存多个状态,他们之间的关系分为互斥和并行

  1. 互斥状态
    互斥状态的矩形框边缘显示为实线,同一级的互斥状态,至多允许激活一个状态。
  2. 并行状态
    并行状态的举行框边缘显示为虚线,同一级的并行状态可在同一时刻被激活

3.状态标签

1)状态名

同级的各个子状态不允许重名,不同级的状态不受限制。

2)状态动作

(1)entry(或缩写成en)动作(进入时执行动作)
如果用户在状态名后加入斜线,并直接跟随具体动作,则该动作默认为进入动作。如下

A/y=3
y++

进入A状态时,立刻执行y=3,之后又执行y++,最终结果为y=4。
(2)during或du动作(保持动作)

A
en : y = 3;
du : y++;

在进入状态A时,执行动作y=3,之后不断执行y++。若求解器的定点步长取0.2,仿真时长取2,则最终的结果y=13。
(3)exit或ex动作(退出时执行动作)

A
en : y = 3;
du : y++;
ex : y = y - 1;

在五个仿真步长之后,退出状态A,进入状态B时,最终结果应为7。即退出时要执行减一这个动作。
(4)广播时间动作on event_name
event_name代表某一广播事件名,事件名应该是唯一的。

A
en : y = 1;
du : y++;
on stop : c();

系统处于A状态,当检测到事件stop,立即执行c()。
(5)bind动作

A
en : y = 1;
du : y++;
bind : y; start;

B
en : y = 1;start

变量y和start被绑定在状态A,这表示仅有A状态及其子状态有权限修改变量y并广播时间start,其他状态B仅能够读取变量y,监听到事件start,无权修改变量y和广播时间start。
bind动作在整个Stateflow状态图范围内都是有效的。
若运行这个代码,会报错。

A
en : y = 1;
du : y++;
bind : y; start;

B
bind : y;

两个状态同时约束变量y,这是不被允许的。

4.迁移

(1)迁移
Stateflow状态图使用一条单向箭头曲线表示迁移,它将两个图形对象连接起来,多数情况下,迁移是指系统从原状态向目标状态的转移。
在迁移曲线上加标签,可以指定系统在何种条件下从源状态向目标状态转移。
(2)默认迁移
是一种特殊的迁移方式,它没有源对象。用于指定同一级有多个互斥状态并存,首先激活的状态
(3)迁移标签
迁移标签的完整格式
Event[Condition]{Condition_Action}/Transition_Action
1)event:引发迁移的时间
2)[condition]:条件动作与迁移的发生条件
3){condition_action}:当条件为真时,执行的动作
4)/transition_action发生迁移,进入目标状态前所执行的动作
condition_action和transition_action的区别是当condition为真时condition_action立刻执行,而transition_action是当condition为真,并且迁移状态(下个激活状态)有效时,执行transition_action这个动作。

二、数据与事件

  1. 数据是非图形的对象
    用户在使用数据时必须明确定义作用域。
  2. 事件也是非图形的对象
  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值