一种化工生产控制系统的制作方法

文档序号:14675957发布日期:2018-06-12 21:29阅读:185来源:国知局

本发明属于化工生产系统领域,尤其涉及一种化工生产控制系统。



背景技术:

目前,随着化工企业生产规模和可实现功能的逐步扩大,化工生产所配置的生产装置规模和复杂度也得到了大幅度的提升,这种环境下,仅仅依靠人工进行生产控制已经无法满足化工企业的生产要求,而信息技术的发站及其在多领域的应用使得化工生产自动化越来越普及,推动力化工企业的产品生产控制逐步向自动化、智能化、规模化以及复杂化方向发站。而以多种网络技术、通信技术以及控制技术和显示技术等多种综合性技术而发站起来的分布式控制系统,在化工生产控制中得到了广泛的应用。该控制系统可以对化工生产中的多种设备进行自动化生产管理和控制,可以有效提高企业的生产效率,降低管理成本,节约能耗,还能够为企业的持续发站提供不竭动力,是现代化化工生产控制的核心手段。目前,现有的控制系统需要较大的内存,响应速度较慢。

随着科技的快速发展和工业需求的不断提高,各种软硬件设计的的复杂度也日益增加,对于可靠性和安全性的要求也不断提高。系统的可靠性,安全性和正确性已经受到了科学界和工业界的广泛关注。形式化验证和测试是解决该问题的主要方法。形式化验证方法始于20世纪60年代末的Floyd、Hoare和Manna等在程序规范和验证方面的研究。形式化验证方法分为两大类:基于定理证明和基于模型。20世纪80年代初提出的模型检测(Model Checking)属于基于模型的形式化验证方法,思想相对简单和自动化程度高,可以广泛用于硬件电路系统和网络协议系统的验证。模型检测就是先把系统建模为有限状态转移系统,并用时态逻辑描述特验证的规范,在有限状态转移系统上进行穷尽搜索,确定规范是否被满足,若没有满足,给出反例指出为什么没有满足。模型检测面临状态爆炸问题,所谓状态爆炸问题即系统状态数随着状态规模的增加呈指数级增加。所以该领域的研究人员使用各种方法缩减搜索的状态空间,基于反例引导的抽象模型检测是常用的技术。基于反例路径的抽象细化(Counterexample-Guided Abstraction Refinement,CEGAR)技术的过程如下:给定一个模型和性质,首先通过抽象的方法生成一个抽象模型。抽象模型包含的行为可能会多于原始模型,但是,抽象模型的结构和描述都比原始模型简单,所以可以缓解状态空间爆炸问题。然后调用模型检测器,检测公式是否在抽象模型中有效。如果有效,则程序终止;否则,会给出反例路径,然后进行重构(reconstruction)过程,即在原始模型中,如果成功找到一条路径对应于反例路径,则程序结束;否则,反例路径为虚假反例路径,下一个迭代过程开始,重新生成抽象模型,进行验证。重复此过程,直到返回有效或者无效,或者状态空间爆炸造成程序停止。动态符号执行技术是一种符号执行与具体执行相结合的测试手段。符号执行是指在不执行程序的前提下,用符号值表示程序变量的值,然后模拟程序执行来进行相关分析。首先,对待分析代码构建控制流图(Control Flow Graph,CFG),它是编译器内部用有向图表示一个程序过程的抽象数据结构。在CFG上从入口节点开始模拟执行,在遇到分支节点时,使用约束求解器判定哪条分支可行,并根据预先设计的路径调度策略实现对该过程所有路径的遍历分析,最后输出每条可执行路径的分析结果。动态符号执行是以具体数值作为输入,同时启动代码模拟执行器,并从当前路径的分支语句的谓词中搜集所有符号约束。然后根据策略反转约束中的一个分支,构造一条新的可行的路径约束,并用约束求解器求解出一个可行的新的具体输入,接着符号执行引擎对新输入值进行新一轮的分析。通过使用这种输入迭代产生新输入的方法,理论上所有可行的路径都可以被计算并分析一遍。动态符号执行技术的主要瓶颈是路径爆炸问题,即随着程序中分支数的增多,路径呈指数级增加。插值是缓解路径爆炸问题的有效方法,主要是一种搜索剪枝的思想,通过利用不可行路径给行节点标记插值,插值是指一定不会到达被标记为错误行的条件约束。对于分支节点,若该节点的每个分支都被探索过,那么在该节点标记的插值为全插值,否则为半插值。在动态符号执行中,若从开始节点到当前节点的路径约束满足当前节点的全插值,则该路径可被归并,即不被探索,从而有效缓解了路径爆炸问题。对于大规模系统,抽象模型在进行验证时细化次数过多,且模型检测的瓶颈是状态爆炸问题,因此提出一种行之有效并加快抽象模型验证的方法刻不容缓。

综上所述,现有技术存在的问题是:需要内存较大,相应速度慢,并且集中化程度高,某个部分出现问题后易造成整个系统瘫痪,无法满足生产者的需要。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种化工生产控制系统。

本发明是这样实现的,一种化工生产控制系统设置有:

控制模块、可编程控制器、监控模块和采集/控制模块以及生产/控制对象模块,所述控制模块通过可编程控制器与监控模块相连。

所述控制模块包括数据服务器、历史数据站、工程师站、操作员站、巡检员站和调度员站,所述数据服务器、工程师站、操作员站、巡检员站和调度员站与一对互为冗余以太网相连。

所述监控模块包括现场监控模块、远程监控模块以及集中监控模块,所述采集/控制模块与生产/控制对象模块相连。

所述可编程控制器的控制方法包括:

1),根据待验证的程序,生成控制流图CFG,给CFG中的结点添加3个属性:R插值,S插值和E插值,R插值是结点可达的约束条件,判断一个状态的可达性;S插值和E插值对路径进行规约,加快程序的验证;给CFG的边添加属性W;一条边的W值表示以该边指向的结点为根结点的子图中,还没有被遍历的分支的个数;

2),根据生成的CFG,生成抽象可达图ARG,如果沿着一条路径生成一个新状态s,如果s对应的R插值被满足,说明状态s可达,继续沿着状态s遍历该路径;否则,状态s不可达,则该路径终止,遍历其他路径;对于一个可达的状态s,如果状态s对应的E插值被该路径对应的路径公式蕴含,说明沿着该状态存在一条到达目标状态的路径,程序不安全;如果状态s对应的S插值被蕴含,说明以状态为起点的所有路径都是安全的,不需要沿着状态s探索程序;如果状态s是可达的,且E插值和S插值都不被蕴含,则继续沿着状态s遍历该路径;

3),在生成ARG的过程中,发现一条反例路径,到达目标状态,则需要进一步判断反例路径是否虚假;不是虚假反例,则说明程序是不安全的;否则,根据虚假反例,细化模型,分别计算并更新对应状态的R插值,S插值和E插值,执行重新生成ARG,直到找到一条真反例路径或不存在反例路径。

4)R插值,S插值和E插值均采用四阶四次B样条插值曲线的构造方法给CFG中的结点添加属性;具体包括:

给定区间[a,b]的一个扩充分划:

t-6≤t-4≤t-2≤a=t0<t1<…<t2i<t2i+1<…<t2m-1<t2m=b≤t2(m+1)≤t2(m+2)≤t2(m+3);

及de Boor控制顶点序列:

d-1,d0,d1,d2,…,dm,dm+1;

区间[a,b]上以:

{t-6,t-4,t-2,t0,t2,…,t2i,…,t2(m-1),t2m,t2(m+1),t2(m+2),t2(m+3)};

为样条结点的四阶四次B样条曲线记为:

其中B样条基函数Ωj(t)的支集上的样条结点为:

t2(j-2),t2(j-1),t2j,t2(j+1),t2(j+2),j=-1,0,1,…,m+1;

在r(t)的基础上,构造一条四阶四次B样条插值曲线rI(t),使得它通过诸型值点列{dk},即满足插值条件:

rI(t2k)=dk,k=0,1,2,…,m;

连接曲线段r(t)两端点r(t2i)和r(t2i+2)的直线段记为:

连接两相邻de Boor点di和di+1的直线段记为:

调配函数ψi(t)的表达式为:

其中ei0是自由参数,

进一步,所述R插值,S插值和E插值均采用的四阶四次B样条插值曲线的构造方法还保包括:

选取调配函数,作连结各样条小区间的两个端点的直线以及连结以及对应的两相邻de Boor控制顶点的直线,作各样条小区间上的样条曲线上的点与连结各样条小区间的两个端点的直线上的点的差得到增量向量;

将增量向量通过伸缩后平移到连结两相邻de Boor控制顶点的直线上就得到了各样条小区间插值于de Boor控制顶点的插值曲线;

对于四阶四次B样条曲线用增量伸缩平移方法,生成相应的插值曲线,其调配函数中含有一个自由参数,是一个四阶四次B样条多项式。

进一步,构造插值曲线的方法包括:

给定型值点列d0,d1,d2,…,dm,补充辅助点d-2,d-1…和dm+1,dm+2…,样条结点序列为:

…≤t-1≤a=t0<t1<t2<…<tm-1<tm=b≤tm+1≤…;

将{dj}作为de Boor控制顶点序列,得n阶B样条曲线,记为:

其中Nj,n(t)是n阶B样条基函数,其支集设为区间为实数取整;

构造曲线dI(t),满足插值条件:

dI(tk)=dk,k=0,1,2,…,m;

在每个区间样条子区间[ti,ti+1](i=0,1,2,…,m-1)上,连接B样条曲线段d(t)的两个端点d(ti)和d(ti+1)的直线段记为li(t),方程为:

li(t)=(1-Φi(t))d(ti)+Φi(t)d(ti+1),ti≤t≤ti+1;

而连接两相邻de Boor点di和di+1的直线段记为Li(t),方程为:

li(t)=(1-Φi(t))d(ti)+Φi(t)d(ti+1),ti≤t≤ti+1;

Li(t)=(1-Φi(t))di+Φi(t)di+1,ti≤t≤ti+1;

作曲线段d(t)与直线段li(t)在区间[ti,ti+1]上的差向量:

δi(t)=d(t)-li(t),ti≤t≤ti+1;

差向量伸缩,即得αδi(t),α>0,将其平移,使其起点落在直线段上的对应点处,即得:

dI(t)=Li(t)+αδi(t),ti≤t≤ti+1,i=0,1,2,…,m-1;

或写为:

dI(t)=[(1-Φi(t))di+Φi(t)di+1]+α[d(t)-(1-Φi(t))d(ti)-Φi(t)d(ti+1)];

ti≤t≤ti+1,i=0,1,2,…,m-1;

函数Φi(t)满足如下的条件:

Φi(t)在区间[ti,ti+1]上具有直到n-2阶的连续导数;

得:

Φi(t)在区间[ti,ti+1]为单调增函数,以避免直线段li(t)和Li(t)出现重结点。

进一步,所述生成待验证程序的CFG,并且初始化结点和边的属性,包括以下步骤:

(1)找到CFG中的目标结点,从目标结点开始反向遍历CFG,遍历的结点和边都保留,没有遍历到的结点和边都删除;

(2)得到裁剪后的CFG,初始化属性的值,对各个结点的三种插值进行初始化,初次遍历CFG,生成ARG的过程中,每一个结点的R插值的初始值都为{true};对于S插值,定义了为一个二元组:(F,Is),其中,F的值域为{full,half},Is的值是一个由谓词组成的合取式;对于一个结点l,如果l没有后继结点或者l的所有后继结点的S插值都是full,记为f,表示l的所有后继结点都被遍历过,则l的S插值也是full,否则,l的S插值为half,记为h,具体的形式如下:

l是终结点,S插值的初始值为(full,true),表示如果到达终结点,路径一定是安全的;l是目标结点,S插值的初始值为(full,false),表示如果到达目标结点,路径一定是反例路径;对于其他结点,S插值的初始值为(half,true),具体的形式如下:

l是目标结点,E插值的初始值为true,表示路径一定是真反例;l是终结点,E插值的初始值为false,表示路径一定不可能到达目标结点;对于其他结点,E插值的初始值为false,初始认为都不能到达目标结点;对于每一条迁移的W属性,初始值为⊥,表示还没开始遍历,其中,W的值域为{N+,⊥},N+是正整数集合。

进一步,所述步骤2)中,利用W属性决定分支边的遍历顺序,同时,利用S插值和E插值,加快验证的效率,具体的步骤包括:

(1)得到一个可达状态s',根据CFG的迁移关系,产生后继状态;如果存在多个可能的后继,根据边的W值,决定遍历顺序;边的W值的优先级为:(>0)>⊥>0;如果边的W值相同,则随机选择;对于一个后继状态s,根据R插值,如果状态s不可达,则当前路径终止,遍历其他路径;如果当前状态s可达,首先判断s的E插值是否为false;如果是false,说明s[0]的后继结点还没被遍历过,跳转到(2);如果不是false,首先采用SSA原则,每一个变量至多被赋值一次,得到从初始状态s0到达s的路径公式,记为Pf(s0,…,s);用求解器判断Pf(s0,…,s)是否蕴含s的E插值;如果蕴含,则说明程序存在一条真反例,程序不安全,验证结束;否则跳转到(2);

(2)判断s的S插值是否为full插值;如果不是full插值,则跳转到(3);如果是full插值,得到从初始状态s0到达s的路径公式,记为Pf(s0,…,s),然后用求解器判断Pf(s0,…,s)是否蕴含s的S插值;如果蕴含,则说明以状态s为起点的所有路径都是安全的,不需要探索,当前路径终止,遍历其他路径;

(3)判断s是否目标状态,如果是目标状态,则发现一条反例路径,执行步骤3);如果不是,进一步判断s是否被其他状态覆盖;如果s被覆盖,则不需要探索当前路径,遍历其他路径;如果s不被覆盖,则继续探索当前路径;

(4)如果存在没有被遍历的可达状态,则跳转到(1);否则,验证结束,程序安全。

进一步,所述采集/控制模块用于直接对生产对象、控制对象等进行数据采集和功能控制,并将生产/控制对象模块的数据信息采集后集中传递给监控模块,进行分析,同时下载和接收监控模块传递的控制指令及操作命令对具体对象进行工业控制。

进一步,所述控制模块可以向整个系统提供软硬件支持以协助完成生产管理和试产经营等功能,并对整个生产过程中的每一个环节进行监控,对生产控制数据进行汇总、分析以及存档,增强化工企业的自动化办公水平。

进一步,所述方现场监控就是员工在控制系统之前,通过自己的经验监督设备的运行状况。

进一步,所述集中监控的优势是,便于控制系统的集中管理和维护,而且相对来说集中管理的电气自动化控制系统的设计方案简单易懂,防护站的防护要求不高。

进一步,所述远程监控可以降低安装费用,节省材料、电缆等设备的投入。

本发明通过电机带动履带转动和对正传开关和反转开关的操纵,可使练习者随心所欲的进行压腿练习,并可自由掌握压腿的力度,提高了练习的积极性,增进了身体的健康。

本发明的优点及积极效果为:本发明更加充分地利用了模型检测中虚假反例路径提供的信息,通过计算S插值和E插值,提高了检测的效率,使得模型检测算法可以更好地应用于大规模的程序;S插值可以判断出一个状态后续所有可能的路径序列是否都是安全的,从而避免不必要的探索,大大地减少ARG的状态数;E插值可以运用于快速地判断程序中是否存在真反例路径,加快了程序的验证,提高了效率。

本发明裁剪了CFG中无用的结点和边,进一步缩小了遍历的状态空间,在CFG的边上添加W属性,使得程序验证的效率得到进一步的提升。通过缩减抽象模型验证时的路径搜索空间从而缓解状态爆炸问题,加快验证效率。同时提供了两种优化操作,使得验证过程更加高效;主要应用于工业,科研等领域设计的软硬件系统正确性的形式化验证,以及各类通信协议安全性,可靠性的形式化验证。

本发明提供的基于B样条的插值曲线构造方法,利用增量伸缩平移和张量积的方法,构造了矩形域上的插值于控制顶点网格的双四阶四次B样条插值曲面,插值曲线/曲面的构造方法简洁,几何意义明显,与BURBS方法相容,对几何造型是有意义的。本发明提出了一个新的几何造型方法,这个方法解决了插值控制顶点的问题,对于化工生产控制工程具有重要意义。

附图说明

图1是本发明实施例提供的化工生产控制系统结构示意图;

图中:1、控制模块;2、可编程控制器;3、监控模块;4、采集控制模块;5、生产/控制对象模块;6、现场监控模块;7、远程监控模块;8、集中监控模块。

具体实施方式

为能进一步了解本发明的发明内容、特点及功效,兹例举以下实施例,并配合附图详细说明如下。

下面结合附图对本发明的结构作详细的描述。

如图1所示,本发明实施例提供的化工生产控制系统包括:控制模块1、可编程控制器2、监控模块3和采集/控制模块4以及生产/控制对象模块5,所述控制模块1通过可编程控制器2与监控模块3相连。

所述控制模块1包括数据服务器、历史数据站、工程师站、操作员站、巡检员站和调度员站,所述数据服务器、工程师站、操作员站、巡检员站和调度员站与一对互为冗余以太网相连。

所述监控模块3包括现场监控模块6、远程监控模块7以及集中监控模块8,所述采集/控制模块4与生产/控制对象模块5相连。

所述采集/控制模块4用于直接对生产对象、控制对象等进行数据采集和功能控制,并将生产/控制对象模块的数据信息采集后集中传递给监控模块,进行分析,同时下载和接收监控模块传递的控制指令及操作命令对具体对象进行工业控制。

所述控制模块1可以向整个系统提供软硬件支持以协助完成生产管理和试产经营等功能,并对整个生产过程中的每一个环节进行监控,对生产控制数据进行汇总、分析以及存档,增强化工企业的自动化办公水平。

所述现场监控模块6就是员工在控制系统之前,通过自己的经验监督设备的运行状况。

所述集中监控模块8的优势是,便于控制系统的集中管理和维护,而且相对来说集中管理的电气自动化控制系统的设计方案简单易懂,防护站的防护要求不高。

所述远程监控模块7可以降低安装费用,节省材料、电缆等设备的投入。

本发明具有控制精度高,可靠性、灵活性、开放性高的优点,通过现场监控、远程监控以及集中监控等电气自动化控制,集中性分散,最大限度的保证系统的正常运行,降低系统瘫痪的风险。

所述可编程控制器的控制方法包括:

1),根据待验证的程序,生成控制流图CFG,给CFG中的结点添加3个属性:R插值,S插值和E插值,R插值是结点可达的约束条件,判断一个状态的可达性;S插值和E插值对路径进行规约,加快程序的验证;给CFG的边添加属性W;一条边的W值表示以该边指向的结点为根结点的子图中,还没有被遍历的分支的个数;

2),根据生成的CFG,生成抽象可达图ARG,如果沿着一条路径生成一个新状态s,如果s对应的R插值被满足,说明状态s可达,继续沿着状态s遍历该路径;否则,状态s不可达,则该路径终止,遍历其他路径;对于一个可达的状态s,如果状态s对应的E插值被该路径对应的路径公式蕴含,说明沿着该状态存在一条到达目标状态的路径,程序不安全;如果状态s对应的S插值被蕴含,说明以状态为起点的所有路径都是安全的,不需要沿着状态s探索程序;如果状态s是可达的,且E插值和S插值都不被蕴含,则继续沿着状态s遍历该路径;

3),在生成ARG的过程中,发现一条反例路径,到达目标状态,则需要进一步判断反例路径是否虚假;不是虚假反例,则说明程序是不安全的;否则,根据虚假反例,细化模型,分别计算并更新对应状态的R插值,S插值和E插值,执行重新生成ARG,直到找到一条真反例路径或不存在反例路径。

4)R插值,S插值和E插值均采用四阶四次B样条插值曲线的构造方法给CFG中的结点添加属性;具体包括:

给定区间[a,b]的一个扩充分划:

t-6≤t-4≤t-2≤a=t0<t1<…<t2i<t2i+1<…<t2m-1<t2m=b≤t2(m+1)≤t2(m+2)≤t2(m+3);

及de Boor控制顶点序列:

d-1,d0,d1,d2,…,dm,dm+1;

区间[a,b]上以:

{t-6,t-4,t-2,t0,t2,…,t2i,…,t2(m-1),t2m,t2(m+1),t2(m+2),t2(m+3)};

为样条结点的四阶四次B样条曲线记为:

其中B样条基函数Ωj(t)的支集上的样条结点为:

t2(j-2),t2(j-1),t2j,t2(j+1),t2(j+2),j=-1,0,1,…,m+1;

在r(t)的基础上,构造一条四阶四次B样条插值曲线rI(t),使得它通过诸型值点列{dk},即满足插值条件:

rI(t2k)=dk,k=0,1,2,…,m;

连接曲线段r(t)两端点r(t2i)和r(t2i+2)的直线段记为:

连接两相邻de Boor点di和di+1的直线段记为:

调配函数ψi(t)的表达式为:

其中ei0是自由参数,

进一步,所述R插值,S插值和E插值均采用的四阶四次B样条插值曲线的构造方法还保包括:

选取调配函数,作连结各样条小区间的两个端点的直线以及连结以及对应的两相邻de Boor控制顶点的直线,作各样条小区间上的样条曲线上的点与连结各样条小区间的两个端点的直线上的点的差得到增量向量;

将增量向量通过伸缩后平移到连结两相邻de Boor控制顶点的直线上就得到了各样条小区间插值于de Boor控制顶点的插值曲线;

对于四阶四次B样条曲线用增量伸缩平移方法,生成相应的插值曲线,其调配函数中含有一个自由参数,是一个四阶四次B样条多项式。

进一步,构造插值曲线的方法包括:

给定型值点列d0,d1,d2,…,dm,补充辅助点d-2,d-1…和dm+1,dm+2...,样条结点序列为:

…≤t-1≤a=t0<t1<t2<…<tm-1<tm=b≤tm+1≤…;

将{dj}作为de Boor控制顶点序列,得n阶B样条曲线,记为:

其中Nj,n(t)是n阶B样条基函数,其支集设为区间为实数取整;

构造曲线dI(t),满足插值条件:

dI(tk)=dk,k=0,1,2,…,m;

在每个区间样条子区间[ti,ti+1](i=0,1,2,…,m-1)上,连接B样条曲线段d(t)的两个端点d(ti)和d(ti+1)的直线段记为li(t),方程为:

li(t)=(1-Φi(t))d(ti)+Φi(t)d(ti+1),ti≤t≤ti+1;

而连接两相邻de Boor点di和di+1的直线段记为Li(t),方程为:

li(t)=(1-Φi(t))d(ti)+Φi(t)d(ti+1),ti≤t≤ti+1;

Li(t)=(1-Φi(t))di+Φi(t)di+1,ti≤t≤ti+1;

作曲线段d(t)与直线段li(t)在区间[ti,ti+1]上的差向量:

δi(t)=d(t)-li(t),ti≤t≤ti+1;

差向量伸缩,即得αδi(t),α>0,将其平移,使其起点落在直线段上的对应点处,即得:

dI(t)=Li(t)+αδi(t),ti≤t≤ti+1,i=0,1,2,…,m-1;

或写为:

dI(t)=[(1-Φi(t))di+Φi(t)di+1]+α[d(t)-(1-Φi(t))d(ti)-Φi(t)d(ti+1)];

ti≤t≤ti+1,i=0,1,2,…,m-1;

函数Φi(t)满足如下的条件:

Φi(t)在区间[ti,ti+1]上具有直到n-2阶的连续导数;

得:

Φi(t)在区间[ti,ti+1]为单调增函数,以避免直线段li(t)和Li(t)出现重结点。

进一步,所述生成待验证程序的CFG,并且初始化结点和边的属性,包括以下步骤:

(1)找到CFG中的目标结点,从目标结点开始反向遍历CFG,遍历的结点和边都保留,没有遍历到的结点和边都删除;

(2)得到裁剪后的CFG,初始化属性的值,对各个结点的三种插值进行初始化,初次遍历CFG,生成ARG的过程中,每一个结点的R插值的初始值都为{true};对于S插值,定义了为一个二元组:(F,Is),其中,F的值域为{full,half},Is的值是一个由谓词组成的合取式;对于一个结点l,如果l没有后继结点或者l的所有后继结点的S插值都是full,记为f,表示l的所有后继结点都被遍历过,则l的S插值也是full,否则,l的S插值为half,记为h,具体的形式如下:

l是终结点,S插值的初始值为(full,true),表示如果到达终结点,路径一定是安全的;l是目标结点,S插值的初始值为(full,false),表示如果到达目标结点,路径一定是反例路径;对于其他结点,S插值的初始值为(half,true),具体的形式如下:

l是目标结点,E插值的初始值为true,表示路径一定是真反例;l是终结点,E插值的初始值为false,表示路径一定不可能到达目标结点;对于其他结点,E插值的初始值为false,初始认为都不能到达目标结点;对于每一条迁移的W属性,初始值为⊥,表示还没开始遍历,其中,W的值域为{N+,⊥},N+是正整数集合。

进一步,所述步骤2)中,利用W属性决定分支边的遍历顺序,同时,利用S插值和E插值,加快验证的效率,具体的步骤包括:

(1)得到一个可达状态s',根据CFG的迁移关系,产生后继状态;如果存在多个可能的后继,根据边的W值,决定遍历顺序;边的W值的优先级为:(>0)>⊥>0;如果边的W值相同,则随机选择;对于一个后继状态s,根据R插值,如果状态s不可达,则当前路径终止,遍历其他路径;如果当前状态s可达,首先判断s的E插值是否为false;如果是false,说明s[0]的后继结点还没被遍历过,跳转到(2);如果不是false,首先采用SSA原则,每一个变量至多被赋值一次,得到从初始状态s0到达s的路径公式,记为Pf(s0,…,s);用求解器判断Pf(s0,…,s)是否蕴含s的E插值;如果蕴含,则说明程序存在一条真反例,程序不安全,验证结束;否则跳转到(2);

(2)判断s的S插值是否为full插值;如果不是full插值,则跳转到(3);如果是full插值,得到从初始状态s0到达s的路径公式,记为Pf(s0,…,s),然后用求解器判断Pf(s0,…,s)是否蕴含s的S插值;如果蕴含,则说明以状态s为起点的所有路径都是安全的,不需要探索,当前路径终止,遍历其他路径;

(3)判断s是否目标状态,如果是目标状态,则发现一条反例路径,执行步骤3);如果不是,进一步判断s是否被其他状态覆盖;如果s被覆盖,则不需要探索当前路径,遍历其他路径;如果s不被覆盖,则继续探索当前路径;

(4)如果存在没有被遍历的可达状态,则跳转到(1);否则,验证结束,程序安全。

以上所述仅是对本发明的较佳实施例而已,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所做的任何简单修改,等同变化与修饰,均属于本发明技术方案的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1