一种控制计算策略生成方法以及系统
技术领域
本发明涉及核电仿真技术领域,尤其涉及一种控制计算策略生成方法。
背景技术
在核电站生产运行过程中,需要控制系统对生产过程进行控制。控制的执行方法一般是由运算处理装置输出控制指令并输入到各种不同的执行机构来作用于被控对象的可操作部分和可调节部分。控制指令可用于对被控对象进行连续调节或用于改变被控对象的状态或工况。
控制系统其实从20世纪40年代就开始使用了,早期的现场基地式仪表和后期的继电器构成了控制系统的前身。以PLC和DCS为代表,从70年开始应用以来,在核电工业过程控制中获得迅猛的发展。在控制系统中需要构建相应的控制方案。控制方案的具体实现由运行于控制器的软件完成。当前,国内外主流的控制系统厂商,在他们推出的控制系统中纷纷采纳了IEC61131-3标准中规定的语言进行控制方案描述。其中用的比较多的就是功能块图FBD(Function Block Diagram)。FBD是一种图形化的控制编程语言,它通过调用函数、功能块来实现程序功能。块与块之间采用连线建立逻辑连接。采用仿真支撑平台进行FBD算法的仿真时,需要识别控制算法的结构和执行顺序。控制算法的计算结果与执行顺序存在很大的关联关系。仿真平台需要动态识别FBD算法的执行顺序。
对DCS控制逻辑或PLC等控制逻辑进行仿真时,需要对其控制算法进行解析。整个控制系统一般包含了一个或多个控制站,每个控制站中包含了一个或多个FBD控制流程图。每张流程图中包含了一个或多个控制功能块与连接线。一般控制逻辑的计算采用从上到下、按信号流方向来实现计算顺序的确定。但也有特殊的情况需要处理:控制站之间是并行计算的,但是仿真计算是顺序执行的;控制系统允许自定义控制算法的计算顺序;控制系统中存在环路的情况,即信息流从功能A开始,经过多个功能块传递后,最后又传到了功能块A。在对控制系统的控制逻辑进行仿真时,如何确定控制逻辑计算顺序的问题,同时需要解决自定义控制顺序确定,以及控制系统中的环路的处理,成为急需解决的技术问题。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种控制计算策略生成方法以及系统。
本发明解决其技术问题所采用的技术方案是:构造一种控制计算策略生成方法,包括:
识别步骤,对各个功能块的配置信息进行识别;
合并步骤,根据识别结果,将所有的功能块整合到一个集合中,并确定集合中各个功能块的邻接信息;
定序步骤,从集合中依次取出各个未确定执行顺序的功能块,针对每次取出的功能块执行如下操作:将取出的功能块以及所有与其直接或间接连接的功能块整合在临时集合中,如果临时集合中的功能块配置了自定义顺序,则根据功能块的自定义顺序确定功能块的执行顺序,否则从临时集合中依次取出第一个功能块X直至临时集合为空,针对每次取出的功能块X,如果功能块X上游相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的上游相邻的功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
在本发明所述的控制计算策略生成方法中,识别步骤具体包括:将功能块按控制站顺序、页面顺序和页面内部排列顺序进行识别,识别功能块的属性,包含功能块的流水号、功能块的类型、自定义执行顺序以及连接类型的功能块的起始功能块和结束功能块信息。
在本发明所述的控制计算策略生成方法中,合并步骤具体包括:根据识别结果,将所有的功能块整合到数组V中,并针对每个节点类型的功能块,将与其相邻的功能块记录到表格A,将通过连接线输出变量至其的功能块记录到表格F中。
在本发明所述的控制计算策略生成方法中,定序步骤具体包括:
循环执行如下步骤a)-步骤g)直至数组V为空;
a)、从数组V中取第一个功能块Nijk,并将其从数组V中删除;
b)、如果功能块Nijk为节点类型的功能块且执行顺序未确定,则将功能块Nijk放入数组PATH_ARRAY中,否则返回步骤a);
c)将功能块Nijk的表格A中记录的所有功能块添加到数组PATH_ARRAY中;
d)遍历数组PATH_ARRAY,将数组PATH_ARRAY中的所有功能块的表格A中的所有功能块添加到数组PATH_ARRAY中,直到数组PATH_ARRAY中的功能块个数不再增加为止;
e)如果数组PATH_ARRAY中存在配置了自定义顺序的功能块,则执行步骤f),否则执行步骤g);
f)针对数组PATH_ARRAY中的每个功能块,将其自定义顺序加上数值NUMBER后作为其执行顺序,再将NUMBER的数值加上数组PATH_ARRAY中功能块的个数,并将数组PATH_ARRAY中的功能块按执行顺序的大小顺序放入数组ORDER_ARRAY中,最后清空数组PATH_ARRAY,继续执行步骤a);
g)从数组PATH_ARRAY中依次取出第一个功能块X直至数组PATH_ARRAY为空,针对每次取出的功能块X,如果功能块X上游的与其直接相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的表格F中功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
在本发明所述的控制计算策略生成方法中,步骤g)具体包括:
g1)、取数组PATH_ARRAY第一个功能块X,如果功能块X的表格F中所有的功能块都已经确定执行顺序,则执行步骤g2),如果功能块X的表格F中存在功能块尚未确定执行顺序,则执行步骤g3);
g2)、设定功能块X的执行顺序为NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除,执行步骤g4);
g3)、判断数组PATH_ARRAY中是否存在其他功能块的表格F存在功能块已经确定执行顺序的情况,如果是,则判断数组PATH_ARRAY中不存在环路,将功能块X放到数组PATH_ARRAY的最末位,否则判断数组PATH_ARRAY中存在环路,将功能块X的执行顺序确定为NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除;
g4)、如果数组PATH_ARRAY不为空,返回g1)。
本发明还公开了一种控制计算策略生成系统,包括处理器以及存储指令的存储器,该指令可被处理器加载并执行以下步骤:
识别步骤,对各个功能块的配置信息进行识别;
合并步骤,根据识别结果,将所有的功能块整合到一个集合中,并确定集合中各个功能块的邻接信息;
定序步骤,从集合中依次取出各个未确定执行顺序的功能块,针对每次取出的功能块执行如下操作:将取出的功能块以及所有与其直接或间接连接的功能块整合在临时集合中,如果临时集合中的功能块配置了自定义顺序,则根据功能块的自定义顺序确定功能块的执行顺序,否则从临时集合中依次取出第一个功能块X直至临时集合为空,针对每次取出的功能块X,如果功能块X上游相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的上游相邻的功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
在本发明所述的控制计算策略生成系统中,识别步骤具体包括:将功能块按控制站顺序、页面顺序和页面内部排列顺序进行识别,识别功能块的属性,包含功能块的流水号、功能块的类型、自定义执行顺序以及连接类型的功能块的起始功能块和结束功能块信息。
在本发明所述的控制计算策略生成系统中,合并步骤具体包括:根据识别结果,将所有的功能块按照流水号顺序整合到数组V中,并针对每个节点类型的功能块,将与其相邻的功能块记录到表格A,将通过连接线输出变量至其的功能块记录到表格F中。
在本发明所述的控制计算策略生成系统中,定序步骤具体包括:
循环执行如下步骤a)-步骤g)直至数组V为空;
a)、从数组V中取第一个功能块Nijk,并将其从数组V中删除;
b)、如果功能块Nijk为节点类型的功能块且执行顺序未确定,则将功能块Nijk放入数组PATH_ARRAY中,否则返回步骤a);
c)将功能块Nijk的表格A中记录的所有功能块添加到数组PATH_ARRAY中;
d)遍历数组PATH_ARRAY,将数组PATH_ARRAY中的所有功能块的表格A中的所有功能块添加到数组PATH_ARRAY中,直到数组PATH_ARRAY中的功能块个数不再增加为止;
e)如果数组PATH_ARRAY中存在配置了自定义顺序的功能块,则执行步骤f),否则执行步骤g);
f)针对数组PATH_ARRAY中的每个功能块,将其自定义顺序加上数值NUMBER后作为其执行顺序,再将NUMBER的数值加上数组PATH_ARRAY中功能块的个数,并将数组PATH_ARRAY中的功能块按执行顺序的大小顺序放入数组ORDER_ARRAY中,最后清空数组PATH_ARRAY,继续执行步骤a);
g)从数组PATH_ARRAY中依次取出第一个功能块X直至数组PATH_ARRAY为空,针对每次取出的功能块X,如果功能块X上游的与其直接相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的表格F中功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
在本发明所述的控制计算策略生成系统中,步骤g)具体包括:
g1)、取数组PATH_ARRAY第一个功能块X,如果功能块X的表格F中所有的功能块都已经确定执行顺序,则执行步骤g2),如果功能块X的表格F中存在功能块尚未确定执行顺序,则执行步骤g3);
g2)、设定功能块X的执行顺序为NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除,执行步骤g4);
g3)、判断数组PATH_ARRAY中是否存在其他功能块的表格F存在功能块已经确定执行顺序的情况,如果是,则判断数组PATH_ARRAY中不存在环路,将功能块X放到数组PATH_ARRAY的最末位,否则判断数组PATH_ARRAY中存在环路,将功能块X的执行顺序确定为NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除;
g4)、如果数组PATH_ARRAY不为空,返回g1)。
实施本发明的控制计算策略生成方法以及系统,具有以下有益效果:本发明可适应自定义计算顺序和自动确定顺序两种情况,此外本发明处理了环路的情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图:
图1是本发明较佳实施例提供的控制计算策略生成方法的流程图。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的典型实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
为了更好的理解本发明的技术方案,下面将结合说明书附图以及具体的实施方式对本发明的技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
在介绍较佳实施例之前,首先对本发明定义的基本概念进行阐述。
一套控制方案中包含n个控制站,一般分别命名为S1到Sn。其中1到n为控制站编号。
每个控制站包含多个控制页面,一般分别命名为Pij,其中i是控制站编号,j是页面编号。
每个页面中包含多个功能块,一般命名为Nijk,其中i是控制站编号,j是页面编号,k是功能块编号。
每个功能块包含相应的配置信息Cijk,其中i是控制站编号,j是页面编号,k是功能块编号。配置信息具体包括:
1)Cijk(N),表示功能块的流水号;
2)功能块包含两种类型,用Cijk(T)表示。Cijk(T)为真表示是结点类型,代表一个算法块;Cijk(T)为假则代表是连接类型,代表一条连接线。
3)连接类型的功能块包含额外的连接属性,用Cijk(B)和Cijk(E)表示。其中Cijk(B)表示连接的起始功能块,Cijk(E)表示结束功能块。Cijk(B)和Cijk(E)必须指向结点类型的功能块。
4)功能块自定义执行顺序,如果Cijk(R)不为0,则代表其定义了自定义执行顺序。其中Cijk(R)从1开始计数,代表功能块在页面中的计算顺序。
5)每个结点类型的功能块包含三个表格,分别为表格A、F、T,三个表格初始为空。
6)每个功能块包含执行顺序属性Cijk(C),默认值为0。
本发明的控制计算策略生成方法主要分为识别步骤、合并步骤、定序步骤。下面对这三个步骤进行详细说明。
识别步骤,对各个功能块的配置信息进行识别,具体包括:将功能块按控制站顺序、页面顺序和页面内部排列顺序进行识别,识别功能块的属性,包含功能块的流水号、功能块的类型、自定义执行顺序以及连接类型的功能块的起始功能块和结束功能块信息。
合并步骤,根据识别结果,将所有的功能块整合到一个集合中,并确定集合中各个功能块的邻接信息。具体包括:根据识别结果,按照功能块的Cijk(N)属性定义的顺序,将所有的功能块整合到数组V中,并针对每个节点类型的功能块,将与其相邻的功能块记录到其所对应的表格A,将通过连接线输出变量至其的功能块记录到其所对应的表格F中,将通过连接线接收其所输出的变量的功能块记录到其所对应的表格T中。
定序步骤,从集合中依次取出各个未确定执行顺序的功能块,针对每次取出的功能块执行如下操作:将取出的功能块以及所有与其直接或间接连接的功能块整合在临时集合中,如果临时集合中的功能块配置了自定义顺序,则根据功能块的自定义顺序确定功能块的执行顺序,否则从临时集合中依次取出第一个功能块X直至临时集合为空,针对每次取出的功能块X,如果功能块X上游相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的上游相邻的功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
下面结合图1,对定序步骤进行详细说明。
较佳实施例的定序步骤,具体包括:建立数组ORDER_ARRAY,用于保存所有功能块执行顺序,确定全局计算顺序计数器NUMBER,NUMBER起始为0,建立数组PATH_ARRAY,作为临时存储空间,然后循环执行如下步骤a)-步骤g)直至数组V为空;
a)、从数组V中取第一个功能块Nijk,并将其从数组V中删除;
b)、如果功能块Nijk为节点类型的功能块且执行顺序未确定,即如果Cijk(T)为真并且Cijk(C)为0,则将功能块Nijk放入数组PATH_ARRAY中,否则返回步骤a);
c)将功能块Nijk的表格A中记录的所有功能块添加到数组PATH_ARRAY中;
d)遍历数组PATH_ARRAY,将数组PATH_ARRAY中的所有功能块的表格A中的所有功能块添加到数组PATH_ARRAY中,直到数组PATH_ARRAY中的功能块个数不再增加为止;
e)如果数组PATH_ARRAY中存在配置了自定义顺序的功能块,即存在功能块的Cijk(R)属性不为0,则证明该数组PATH_ARRAY中所有功能块的Cijk(R)属性均不为0,执行步骤f),否则(即数组PATH_ARRAY中所有功能块的Cijk(R)属性为0),执行步骤g);
f)针对数组PATH_ARRAY中的每个功能块,将其自定义顺序加上数值NUMBER后作为其执行顺序,即Cijk(C)=Cijk(R)+NUMBER,再将NUMBER的数值加上数组PATH_ARRAY中功能块的个数,并将数组PATH_ARRAY中的功能块按执行顺序的大小顺序放入数组ORDER_ARRAY中,最后清空数组PATH_ARRAY,继续执行步骤a);
g)从数组PATH_ARRAY中依次取出第一个功能块X直至数组PATH_ARRAY为空,针对每次取出的功能块X,如果功能块X上游的与其直接相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的表格F中功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
其中,步骤g)具体包括:
g1)、取数组PATH_ARRAY第一个功能块X,如果功能块X的表格F中所有的功能块都已经确定执行顺序,则执行步骤g2),如果功能块X的表格F中存在功能块尚未确定执行顺序,则执行步骤g3);
g2)、设定功能块X的执行顺序为NUMBER,即Cijk(C)=NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除,执行步骤g4);
g3)、判断数组PATH_ARRAY中是否存在其他功能块的表格F存在功能块已经确定执行顺序的情况,如果是,则判断数组PATH_ARRAY中不存在环路,将功能块X放到数组PATH_ARRAY的最末位,否则判断数组PATH_ARRAY中存在环路,将功能块X的执行顺序确定为NUMBER,即Cijk(C)=NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除;
g4)、如果数组PATH_ARRAY不为空,返回g1)。
定序步骤完成后,系统即可按照数组ORDER_ARRAY中的顺序,周期性调用功能块计算功能。
基于同一发明构思,本发明还公开了一种控制计算策略生成系统,系统包括处理器以及存储指令的存储器,该指令可被处理器加载并执行以下步骤:
识别步骤,对各个功能块的配置信息进行识别;
合并步骤,根据识别结果,将所有的功能块整合到一个集合中,并确定集合中各个功能块的邻接信息;
定序步骤,从集合中依次取出各个未确定执行顺序的功能块,针对每次取出的功能块执行如下操作:将取出的功能块以及所有与其直接或间接连接的功能块整合在临时集合中,如果临时集合中的功能块配置了自定义顺序,则根据功能块的自定义顺序确定功能块的执行顺序,否则从临时集合中依次取出第一个功能块X直至临时集合为空,针对每次取出的功能块X,如果功能块X上游相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的上游相邻的功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
其中,识别步骤具体包括:将功能块按控制站顺序、页面顺序和页面内部排列顺序进行识别,识别功能块的属性,包含功能块的流水号、功能块的类型、自定义执行顺序以及连接类型的功能块的起始功能块和结束功能块信息。
其中,合并步骤具体包括:根据识别结果,将所有的功能块按照流水号顺序整合到数组V中,并针对每个节点类型的功能块,将与其相邻的功能块记录到表格A,将通过连接线输出变量至其的功能块记录到表格F中。
其中,定序步骤具体包括:
循环执行如下步骤a)-步骤g)直至数组V为空;
a)、从数组V中取第一个功能块Nijk,并将其从数组V中删除;
b)、如果功能块Nijk为节点类型的功能块且执行顺序未确定,则将功能块Nijk放入数组PATH_ARRAY中,否则返回步骤a);
c)将功能块Nijk的表格A中记录的所有功能块添加到数组PATH_ARRAY中;
d)遍历数组PATH_ARRAY,将数组PATH_ARRAY中的所有功能块的表格A中的所有功能块添加到数组PATH_ARRAY中,直到数组PATH_ARRAY中的功能块个数不再增加为止;
e)如果数组PATH_ARRAY中存在配置了自定义顺序的功能块,则执行步骤f),否则执行步骤g);
f)针对数组PATH_ARRAY中的每个功能块,将其自定义顺序加上数值NUMBER后作为其执行顺序,再将NUMBER的数值加上数组PATH_ARRAY中功能块的个数,并将数组PATH_ARRAY中的功能块按执行顺序的大小顺序放入数组ORDER_ARRAY中,最后清空数组PATH_ARRAY,继续执行步骤a);
g)从数组PATH_ARRAY中依次取出第一个功能块X直至数组PATH_ARRAY为空,针对每次取出的功能块X,如果功能块X上游的与其直接相邻的功能块都已经确定执行顺序,则直接设定功能块X的执行顺序,否则根据功能块X的表格F中功能块的执行顺序确定情况判断是否存在环路,针对有无环路的情形分别确定执行顺序。
其中,步骤g)具体包括:
g1)、取数组PATH_ARRAY第一个功能块X,如果功能块X的表格F中所有的功能块都已经确定执行顺序,则执行步骤g2),如果功能块X的表格F中存在功能块尚未确定执行顺序,则执行步骤g3);
g2)、设定功能块X的执行顺序为NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除,执行步骤g4);
g3)、判断数组PATH_ARRAY中是否存在其他功能块的表格F存在功能块已经确定执行顺序的情况,如果是,则判断数组PATH_ARRAY中不存在环路,将功能块X放到数组PATH_ARRAY的最末位,否则判断数组PATH_ARRAY中存在环路,将功能块X的执行顺序确定为NUMBER,并将NUMBER加1,将功能块X移入数组ORDER_ARRAY中,并在数组PATH_ARRAY中将功能块X删除;
g4)、如果数组PATH_ARRAY不为空,返回g1)。
综上所述,实施本发明的控制计算策略生成方法以及系统,具有以下有益效果:本发明可适应自定义计算顺序和自动确定顺序两种情况,此外本发明处理了环路的情况。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。