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添加状态
并可使用鼠标连线,添加迁移,创建完成状态如下:
二、状态的设置
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]进行设置
Restart
模型
仿真
Start为false时,一直处于State1
修改Start为true,下一个周期跳转到State2
进入State2后,A每一个周期自增1,若A>101则进入State3,若在State2时Reset变为true(Restart),则A重新计数
A一直自增1
直到A>101,进入State3
若A在计数时,Reset为true,则下一个周期开始A重新从1计数(Restart)
Resume
模型
仿真
四、状态机中变量的隐式赋值
1、变量的隐式赋值
**目的:**简化模型设计
**Last:**只要没有显示赋值,便取上一周期的数值
**Default:**只要没有显示赋值,便取默认设置的数值(优先级更高)
设置方法
2、定义变量的Last值
3、定义变量Default值
4、同时定义Last和Default
5、同时不定义Last和Default
均没有定义时,若变量没有显示赋值,便取上一周期的值
五、Signal信号量
在所定义的整个操作符中均可见
Signal用于在状态机之间传输信号
SCADE Sutie 状态机之Transaction History相关推荐
- SCADE Suite 状态机之变量隐式赋值
SCADE Suite 状态机之变量隐式赋值 1.变量的隐式赋值 **目的:**简化模型设计 **Last:**只要没有显示赋值,便取上一周期的数值 **Default:**只要没有显示赋值,便取默认 ...
- 软件测试 atp,基于SCADE模型的车载ATP软件测试方法
摘要: 列车自动防护(Automatic Train Protection,ATP)是列控系统的核心,负责监控列车速度,防止列车超速,是典型的安全苛求系统.作为安全苛求系统,对车载ATP进行严格的测试 ...
- 浅析分布式系统之体系结构 - 事务与隔离级别(多对象、多操作)上篇
事务的本质 数千年前两河流域的楔形文字书写关于贸易.法律.账户等内容的大量文献中就已经提到事务.为了保证整个交易过程中的信息处理(例如:某笔交易)的完整.正确以及可追述,人们需要将各种信息完整正确的记 ...
- Fedora 15 安装与配置一览
Fedora 15 将于2011.5.24日发布,今日离正式版发布还有4天.笨兔兔这里提前给大家支招用好Fedora 15.下面是笨兔兔在安装.配置Fedora 15 过程中的小结,希望给大家配置自己 ...
- 计算机科学精彩帖子收集
linux源码 LXR 源自"the Linux Cross Referencer",中间的"X"形象地代表了"Cross".与 Sourc ...
- FACEBOOK’S CALIBRA
APPS FACEBOOK'S CALIBRA IS A SECRET WEAPON FOR MONETIZING ITS NEW CRYPTOCURRENCY The newly formed su ...
- 【English】Grab-Verify Your Email Address
Grab抓住[ɡræb] secure安全可靠的[sɪˈkjʊr] confirmation确认书[ˌkɑːnfərˈmeɪʃn] subsequently随后[ˈsʌbsɪkwəntli] To ...
- linux下面升级 Python版本并修改yum属性信息
最近需要在linux下使用python,故需要升级一下python版本,上网查询了一下相关资料,更新了一下linux下面的python环境,记录如下: linux下面升级 Python版本并修改yum ...
- Oracle里PO自动售货如何做,Oracle R12采办接收流程(PR-PO-RCV-AP-Payment)
Oracle R12采购接收流程(PR-PO-RCV-AP-Payment) 1.Requisitions 路径:Purchasing > Requisitions > Requisiti ...
最新文章
- JVM调优实战:G1中的to-space exhausted问题
- 自学python爬虫要多久-入门Python爬虫要学习多久?
- JMeter:报错(Content type 'text/plain;charset=UTF-8' not supported)
- QT的QDesignerTaskMenuExtension类的使用
- Transformation available that removes all elements from form message type
- 用python做采集时相对路径转换成绝对路径
- php中global与$_GLOBALS[]的区别
- 使用docker+tomcat部署jenkins
- 【后台任务】在线程池线程上运行代码(6)
- esp8266 蓝牙耳机_基于Qualcomm QCC3001/TWS迷你型入耳式蓝牙耳机方案
- 人人之间“不简单”,关系图谱“有一套”
- 会员消费积分管理系统c语言,三步教你玩转会员系统——会员等级、折扣、积分...
- Objective-C 程序设计(第4版)
- linux下双网卡绑定,Linux下双网卡绑定bond0
- 软件开发随笔系列一——分布式架构实现
- JSON字符串与protobuf互转
- Concise,一款为hexo设计的简约而漂亮的主题
- Chromedriver 安装
- c#解决将json中的\u6b66\u6c49等字符转换成中文
- 华硕x580nv拆机_华硕x550v怎么拆机 华硕x550v拆机教程【图文步骤】