SCADE Sutie 状态机之Transaction History

SCADE Suite安全状态机

一、安全状态机

1、状态机组成

SSM(Safe State Machine)

控制流方面建模

原理:状态A在满足某个条件时会发生迁移,从当前状态A跳转到状态B,这个系统就是状态机

组成:状态(State)迁移(Transition)

关系:操作符[1:n]状态机(嵌套/并行)[1:n]状态(迁移)

每个状态机内有且仅有一个初始状态,边框加粗表示

2、创建状态机

创建一个SCADE工程,创建操作符,双击操作符,打开建模框,使用下面左边的[New State Machine]创建一个SSM,使用右边[New State]为SSM添加状态

image-20210727132858545

并可使用鼠标连线,添加迁移,创建完成状态如下:

image-20210727133137515

二、状态的设置

1、初始状态和终止状态

初始状态:加粗线框

终止状态:双线框

init和final状态切换

  • 选中状态,右键

image-20210727133424105

  • 工具栏选中

    image-20210727133612775

  • 属性[Declaration]勾选

    image-20210727133536415

2、状态的编辑

状态创建、状态属性设置

状态内行为设置

  • 无行为逻辑

    没有添加行为逻辑(default)

  • 嵌套基于模型设计的方式

    适用于状态布局范围完全可以容纳行为元素的情况

  • 隐藏基于模型设计的方式

    适用于状态布局范围无法容纳行为元素的情况

  • 嵌套SCADE文本设计的方式

    适用于控制行为便于用SCADE语言表达的情况

image-20210727140111113

三、迁移的设置

1、迁移

迁移用于实现从源状态到目的状态的跳转功能,其属性有 条件(Condition) 和 **行为(Actions)**组成

image-20210727140413966

两属性通过[/]分割,左边为condition(布尔表达式),右边为行为(赋值语句)

  • 条件

    布尔表达式,判断是否满足迁移条件,用于时序方面的控制,times,last关键字

  • 行为

    赋值语句,必须以分号结尾,定义状态迁移的那个周期要完成的操作

    image-20210727140936203

    注意区别迁移线上的赋值语句和状态内的赋值语句的区别

    ​ 位于状态内的赋值语句,只要该状态处于激活状态,每个周期都要运行

    ​ 处于迁移线上的赋值语句,只在迁移触发的那个周期运行

    image-20210727142239732

2、迁移的触发

触发条件:触发条件为真(true) 源状态在前一个周期处于激活状态

3、迁移和初始状态

  • 第一周期初始状态的迁出迁移条件都不满足,则初始状态就是激活态
  • 在之后的运行周期,初始状态和其他状态没有分别

4、迁移的编辑

  • 创建一个迁移

  • 迁移的属性

    选中迁移,在属性[Activation]中设置condition和Actions

    image-20210727142930321

  • 迁移的优先级

    当某状态多个迁移到其他状态的条件同时满足时,优先级最高的迁移触发

    迁移线上的数字即为优先级,数字越小优先级越高

    image-20210727143222871

    也可在属性中修改优先级

    image-20210727143305503

  • 迁移的类型

    可通过工具条中三个符号进行设置

    image-20210727143434924

    • 强迁移

      迁移条件满足时,当前周期的源状态不再是激活态,而目标状态变为激活态

    • 弱迁移

      迁移条件满足时,当前周期的源状态依然是激活态,而目标状态变为非激活态

    • 同步迁移

      配合状态的终止符Final属性联合设计,达到同步功能

  • 迁移的分叉

    将不同迁移标识的相同部分合并起来

    image-20210727150107028

  • 迁移线形状

    曲线、直线

    image-20210727150129362

  • 迁移的历史属性

    当再次回到某状态时,该状态的行为是重新开始(Restart)还是接着上一次离开之前的情况继续(Resume

    可通过属性中[Declaration]进行设置

    image-20210727150854661

    Restart

    模型

    image-20210728134628949

    仿真

    • Start为false时,一直处于State1

      image-20210728134844451

    • 修改Start为true,下一个周期跳转到State2

      image-20210728134955319

      image-20210728135011019

    • 进入State2后,A每一个周期自增1,若A>101则进入State3,若在State2时Reset变为true(Restart),则A重新计数

      A一直自增1

      image-20210728135239505

      直到A>101,进入State3

      image-20210728135414548

      若A在计数时,Reset为true,则下一个周期开始A重新从1计数(Restart)

      image-20210728135552199

      image-20210728135641005

      image-20210728135713268

Resume

​ 模型

​ 仿真

四、状态机中变量的隐式赋值

1、变量的隐式赋值

**目的:**简化模型设计

**Last:**只要没有显示赋值,便取上一周期的数值

**Default:**只要没有显示赋值,便取默认设置的数值(优先级更高)

设置方法

image-20210727152235023

2、定义变量的Last值

image-20210727152401142

image-20210727152756610

3、定义变量Default值

image-20210727152813339

image-20210727152845584

4、同时定义Last和Default

image-20210727152919839

image-20210727152937810

image-20210727153056701

5、同时不定义Last和Default

均没有定义时,若变量没有显示赋值,便取上一周期的值

五、Signal信号量

在所定义的整个操作符中均可见

Signal用于在状态机之间传输信号

image-20210727153846062

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值