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添加状态
并可使用鼠标连线,添加迁移,创建完成状态如下:
二、状态的设置
1、初始状态和终止状态
初始状态:加粗线框
终止状态:双线框
init和final状态切换
- 选中状态,右键
-
工具栏选中
-
属性[Declaration]勾选
2、状态的编辑
状态创建、状态属性设置
状态内行为设置
-
无行为逻辑
没有添加行为逻辑(default)
-
嵌套基于模型设计的方式
适用于状态布局范围完全可以容纳行为元素的情况
-
隐藏基于模型设计的方式
适用于状态布局范围无法容纳行为元素的情况
-
嵌套SCADE文本设计的方式
适用于控制行为便于用SCADE语言表达的情况
三、迁移的设置
1、迁移
迁移用于实现从源状态到目的状态的跳转功能,其属性有 条件(Condition) 和 **行为(Actions)**组成
两属性通过[/]分割,左边为condition(布尔表达式),右边为行为(赋值语句)
-
条件
布尔表达式,判断是否满足迁移条件,用于时序方面的控制,times,last关键字
-
行为
赋值语句,必须以分号结尾,定义状态迁移的那个周期要完成的操作
注意区别迁移线上的赋值语句和状态内的赋值语句的区别
位于状态内的赋值语句,只要该状态处于激活状态,每个周期都要运行
处于迁移线上的赋值语句,只在迁移触发的那个周期运行
2、迁移的触发
触发条件:触发条件为真(true) 源状态在前一个周期处于激活状态
3、迁移和初始状态
- 第一周期初始状态的迁出迁移条件都不满足,则初始状态就是激活态
- 在之后的运行周期,初始状态和其他状态没有分别
4、迁移的编辑
-
创建一个迁移
-
迁移的属性
选中迁移,在属性[Activation]中设置condition和Actions
-
迁移的优先级
当某状态多个迁移到其他状态的条件同时满足时,优先级最高的迁移触发
迁移线上的数字即为优先级,数字越小优先级越高
也可在属性中修改优先级
-
迁移的类型
可通过工具条中三个符号进行设置
-
强迁移
迁移条件满足时,当前周期的源状态不再是激活态,而目标状态变为激活态
-
弱迁移
迁移条件满足时,当前周期的源状态依然是激活态,而目标状态变为非激活态
-
同步迁移
配合状态的终止符Final属性联合设计,达到同步功能
-
-
迁移的分叉
将不同迁移标识的相同部分合并起来
-
迁移线形状
曲线、直线
-
迁移的历史属性
当再次回到某状态时,该状态的行为是重新开始(Restart)还是接着上一次离开之前的情况继续(Resume)
可通过属性中[Declaration]进行设置
四、状态机中变量的隐式赋值
1、变量的隐式赋值
**目的:**简化模型设计
**Last:**只要没有显示赋值,便取上一周期的数值
**Default:**只要没有显示赋值,便取默认设置的数值(优先级更高)
设置方法
2、定义变量的Last值
3、定义变量Default值
4、同时定义Last和Default
5、同时不定义Last和Default
均没有定义时,若变量没有显示赋值,便取上一周期的值
五、Signal信号量
在所定义的整个操作符中均可见
Signal用于在状态机之间传输信号