专利汇可以提供PLC程序到NuSMV输入模型的自动化构建方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及工业自动化控制技术领域,特别是涉及一种PLC程序到NuSMV输入模型的自动化构建方法,包括对PLC的ST语言进行分析,构建ST语言的语法;根据给出的ST语法对ST程序进行处理,将ST程序解析为抽象语法树AST;对抽象语法树AST进行处理,分析ST语言语句的控制流特征,确定各语句生成 控制流图 CFG的 算法 ;根据控制流图CFG对ST程序进行数据流分析,构建状态转换邻接表和变量取值变化邻接表;根据构建的状态转换邻接表和变量取值变化邻接表生成NuSMV输入模型。本发明大大提高NuSMV工具对PLC程序进行模型检测的效率和准确度,实现对工业控制系统PLC代码的安全性验证。,下面是PLC程序到NuSMV输入模型的自动化构建方法专利的具体信息内容。
1.一种PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,包括以下步骤:
步骤1,对PLC的ST语言进行分析,构建ST语言的语法;
步骤2,根据步骤1给出的ST语法对ST程序进行处理,将ST程序解析为抽象语法树AST;
步骤3,对抽象语法树AST进行处理,分析ST语言语句的控制流特征,确定各语句生成控制流图CFG的算法;所述控制流图CFG的结构为:用二元结构CFG=(N,E)表示控制流图CFG,其中,N代表控制流图节点的集合,E代表控制流图弧的集合;
控制流图CFG采用基于十字链表的存储方式进行存储,节点表示的数据结构如下表:
Nnum Firstin Firstout
其中,Nnum表示节点的编号,Firstin指向以该节点为弧头的第一个弧节点,Firstout指向以该节点为弧尾的第一个弧节点;弧表示的数据结构如下表:
tailnum headnum Etype guard assignment Hlink Tlink
其中,tailnum表示弧尾的节点编号,headnum表示弧头的节点编号,Etype表示弧的类型,Etype={1,0},当Etype=1时,表示弧为分支弧,guard指向对应的条件谓词取值表达式,assignment为空,当Etype=0时,表示弧为顺序弧,guard为空,assignment指向对应的赋值语句链表,Hlink指向弧头相同的下一条弧,Tlink指向弧尾相同的下一条弧;
步骤4,根据控制流图CFG对ST程序进行数据流分析,构建状态转换邻接表和变量取值变化邻接表;
步骤5,根据步骤4构建的状态转换邻接表和变量取值变化邻接表生成NuSMV输入模型。
2.根据权利要求1所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤1中,对PLC的ST语言进行分析的具体内容是:分析ST语言的架构、关键字、表达式、赋值、注释、操作符优先级、条件语句、循环语句以及跳转语句。
3.根据权利要求1所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤2的具体实现过程如下:
步骤201,创建若干个Eclipse项目,通过Eclipse向导:File->New->Project...->Xtext->Xtext project;
步骤202,选择项目名称、语言名称以及文件扩展名;
步骤203,输入ST语言的语法,执行代码生成器生成各种语言组建,在项目中选中文件GenerateDomainmodel.mwe2,点击右键Run As->MWE2 Workow,将会触发Xtext语言生成器,生成解析器和序列化器。
4.根据权利要求1所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤3中,确定各语句生成控制流图CFG的算法具体为:根据控制流图CFG的结构生成赋值语句、IF语句、CASE语句、FOR语句、WHILE语句以及REPEAT语句的控制流图;对于赋值语句直接添加到数据列表assignment中;对于IF语句,首先获得条件语句,并根据条件语句的真假创建两条分支弧,在遇到关键字END_IF时,这两条分支指向汇合节点;对于ST语言的CASE语句,表示多分支结构,首先根据CASE变量的N个不同的取值生成N条由CASE顶点到N个不同值节点的弧,然后在遇到关键字END_CASE时,这N条分支指向汇合节点;FOR语句、WHILE语句以及REPEAT语句,均是根据条件语句的真假分别生成两条分支弧,循环体对应生成一条弧,且该弧与条件为真的那条弧的两个节点相同,方向反向;
最后将生成的弧存储到数组列表ArrayList中。
5.根据权利要求4所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述步骤4中,根据控制流图CFG对ST程序进行数据流分析,定义如下的数据结构来表示控制流图的状态迁移关系:
Guard State Next
其中,Guard表示状态迁移所需要满足的条件,State表示状态迁移的目标状态,Next指向下一个状态迁移,定义如下数据结构用于表示系统内变量的取值变化:
State′ Expr Next′
其中,State′表示变量被赋值前的状态,Expr表示系统内变量赋值语句右侧的数值或表达式,Next′表示该变量下一个取值变化;
遍历步骤3生成的弧的数组列表ArrayList,参照上述两个数据结构,分别生成状态转换邻接表State_List以及变量取值变化邻接表Var_List。
6.根据权利要求1或者5所述的PLC程序到NuSMV输入模型的自动化构建方法,其特征在于,所述NuSMV输入模型包括状态集合部分、变量声明部分、状态转换部分和变量数据值变化部分;遍历状态转换邻接表生成状态集合部分和状态转换部分,遍历变量取值变化邻接表获得变量声明部分和变量数据值变化部分。
标题 | 发布/更新时间 | 阅读量 |
---|---|---|
一种可验证的安卓恶意软件检测系统及方法 | 2020-05-11 | 119 |
一种基于受限集的程序语义缺陷自动修复方法 | 2020-05-13 | 249 |
一种基于硬件特性的代码复用攻击检测系统及方法 | 2020-05-13 | 231 |
用于在GPU上生成动态踪迹数据的装置和方法 | 2020-05-14 | 2 |
一种基于相似度分析的源代码版本演化注释复用方法 | 2020-05-08 | 797 |
一种基于独立路径的测试数据自动生成方法 | 2020-05-15 | 740 |
一种基于函数层编码的App克隆检测方法及系统 | 2020-05-13 | 449 |
一种面向数据流的测试用例生成方法 | 2020-05-15 | 438 |
一种代码漏洞检测方法、装置、介质及设备 | 2020-05-16 | 493 |
软件更改影响域分析辅助方法 | 2020-05-08 | 112 |
高效检索全球专利专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。
我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。
专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。