面向多运算周期的实时值加载方法和系统、设备及存储介质与流程

文档序号:28688264发布日期:2022-01-29 11:01阅读:59来源:国知局
面向多运算周期的实时值加载方法和系统、设备及存储介质与流程

1.本发明属于dcs传输数据的处理技术领域,具体涉及一种面向多运算周期的实时值加载方法和系统、设备及存储介质。


背景技术:

2.分布式控制系统(distributed control system,简称dcs)是一种专门设计的控制系统,用于控制工业过程中复杂,大型的应用。控制器是分布式控制系统的大脑,控制着在地理上分布在控制区域的各个部分,并执行各种设备的控制算法和配置,处理和工程pc之间的网络通信,其通过单工或冗余配置来实现以更好地控制复杂过程的性能。控制器的可靠性、稳定性及高时效性是分布式控制系统的高可靠性、灵活性、协调性和稳定性的保障,因此控制器中任何一种功能的设计和实现必须以可靠性、稳定性和高时效性为前提。
3.在工业过程控制领域,尤其是针对电数字数据处理,分布式控制系统中的下位机中逻辑计算关系复杂且逻辑组态文件之间涉及相互引用。下位机在计算过程中,上位机作为客户端会对组态文件进行置值操作,操作客户端在同一时刻可能不唯一且置值数据包中的实时值所处的运算周期可能不相同。因此下位机需要及时响应此操作过程并能保证处于同一运算周期中的实时值的生效周期以保证运算结果,当面对多运算周期时,实时值加载操作更复杂且对这一操作的要求更高。


技术实现要素:

4.为了解决以上问题,本发明提供了一种面向多运算周期的实时值加载方法和系统、设备及存储介质,该方法避免打断控制器中的运算周期任务,保证了运算周期任务中的逻辑性,使得运算周期的运算结果更符合工程预期。
5.为达到上述目的,本发明采用了以下技术方案:
6.一种面向多运算周期的实时值加载方法,包括以下步骤:
7.在进入每一运算周期对应的运算任务之前,预判断所述运算周期对应的实时值队列是否有新压入的实时值;
8.若有新压入的实时值,则进行获取所述实时值队列的使用权限;
9.针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数;
10.以所述实时值个数作为遍历次数,从所述实时值队列的初始位置开始遍历,针对第一次遍历到的第一个实时值,根据第一个实时值的信息,定位至控制器内存中pou页运算数据区的旧数据值处,然后将第一个实时值的数据值拷贝给所述旧数据值处;返回从所述实时值队列的初始位置开始遍历步骤,进行下一次遍历,直到遍历次数完成或者所述实时值队列中的实时值为空,完成所述运算周期的实时值加载。
11.作为本发明的进一步改进,所述判断所述运算周期对应的实时值队列是否有新压入的实时值时还包括:若无新压入的实时值,无需实时值加载,直接进行pou页运算。
12.作为本发明的进一步改进,所述获取所述实时值队列的使用权限,具体是获取所
述实时值队列的写操作或者读操作权限;
13.同一时刻,所述获取所述实时值队列只有写操作或者读操作权限,若当前没有获取到所述实时值队列的写操作或者读操作权限,后续步骤不可执行,直至获取到所述实时值队列的写操作或者读操作权限。
14.作为本发明的进一步改进,所述针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数,具体包括:
15.若下位机为主控制器、主备控制器冗余环境,且主控制器向备控制器同步数据正常,则主控制器和备控制器在所述运算周期需要加载的实时值个数为主控制器向备控制器成功同步的实时值个数;
16.若下位机为单控制器环境或者主控制器向备控制器同步数据失败,则所述运算周期需要加载的实时值个数为所述实时值队列中的实时值个数。
17.作为本发明的进一步改进,所述实时值的信息包括pou页页号、数据偏移信息、数据类型及数据值。
18.作为本发明的进一步改进,所述定位至控制器内存中pou页运算数据区的旧数据值处,具体是:
19.根据所述实时值队列中实时值的pou页页号和数据偏移信息,定位至控制器内存中pou页运算数据区的旧数据值处。
20.作为本发明的进一步改进,所述将第一个实时值的数据值拷贝给所述旧数据值处,具体包括:
21.获取所述实时值的数据类型,
22.判断数据类型是否为长整型或者双精度浮点数;
23.若是,按64位长度将第一个实时值的数据值拷贝给所述旧数据值处;
24.若是,按32位长度将第一个实时值的数据值拷贝给所述旧数据值处。
25.一种面向多运算周期的实时值加载系统,包括:
26.预判断模块,在进入每一运算周期对应的运算任务之前,预判断所述运算周期对应的实时值队列是否有新压入的实时值:若无,无需实时值加载;若有,则进行获取所述实时值队列的使用权限;
27.权限获取模块,用于若有新压入的实时值,则进行获取所述实时值队列的使用权限;
28.个数确认模块,用于针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数;
29.实时值加载模块,用于以所述实时值个数作为遍历次数,从所述实时值队列的初始位置开始遍历,针对第一次遍历到的第一个实时值,根据第一个实时值的信息,定位至控制器内存中pou页运算数据区的旧数据值处,然后将第一个实时值的数据值拷贝给所述旧数据值处;返回从所述实时值队列的初始位置开始遍历步骤,进行下一次遍历,直到遍历次数完成或者所述实时值队列中的实时值为空,完成所述运算周期的实时值加载。
30.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的面向多运算周期的实时值加载方法的步骤。
31.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述的面向多运算周期的实时值加载方法的步骤。
32.本发明的有益效果体现在:
33.本发明可面向多运算周期,上位机下发的置值数据包中可能包含多个运算周期中的数据值,采用分级时序的队列加载方式保证了同一运算周期和不同运算周期中的数据值的生效时间;确定运算周期对应的实时值队列中的实时值个数并进行实时值加载,当下位机为主备控制器冗余环境时可保证主控制器和备控制器之间的实时值和运算周期运算输出结果同步,从而保证主控制器和备控制器之间的无扰切换过程;同时在pou页运算之前加载实时值对应的数据值,将所述数据值加载至运算周期中的pou页中后,开始进行pou页运算,避免打断算法任务,维护了系统中运算任务的稳定性,保证了算法运算中的逻辑性;由于考虑了运算周期,使得运算结果符合工程预期。
附图说明
34.图1为本发明面向多运算周期的实时值加载方法的流程图;
35.图2为面向多运算周期的实时值加载系统结构示意图;
36.图3为电子设备结构示意图。
具体实施方式
37.下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
38.以下详细说明均是示例性的说明,旨在对本发明提供进一步的详细说明。除非另有指明,本发明所采用的所有技术术语与本技术所属领域的一般技术人员的通常理解的含义相同。本发明所使用的术语仅是为了描述具体实施方式,而并非意图限制根据本发明的示例性实施方式。
39.如图1所示,本发明提供一种面向多运算周期的实时值加载方法,包括以下步骤:
40.在进入每一运算周期对应的运算任务之前,预判断所述运算周期对应的实时值队列是否有新压入的实时值;
41.若有新压入的实时值,则进行获取所述实时值队列的使用权限;
42.针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数;
43.以所述实时值个数作为遍历次数,从所述实时值队列的初始位置开始遍历,针对第一次遍历到的第一个实时值,根据第一个实时值的信息,定位至控制器内存中pou页运算数据区的旧数据值处,然后将第一个实时值的数据值拷贝给所述旧数据值处;返回从所述实时值队列的初始位置开始遍历步骤,进行下一次遍历,直到遍历次数完成或者所述实时值队列中的实时值为空,完成所述运算周期的实时值加载。
44.本发明在进入每一运算周期对应的运算任务之前,首先检测该运算周期对应的实时值队列中是否有新压入的实时值,如果确认有,则将这些实时值加载至控制器内存中该运算周期中的程序组织单元(program organize unit简称pou)页的最终位置处,然后这些实时值可作为运算变量参与pou页运算,维护了系统中运算周期任务的稳定性和可靠性;由于考虑了实时值所处的运算周期,保证了运算周期任务中的逻辑性,使得运算周期的运算
结果更符合工程预期。
45.为使本发明的上述内容、特征和优点能够更加清晰易懂,下面结合附图对本发明的详细实施步骤做具体的说明。
46.实施例
47.本发明提供一种面向多运算周期的实时值加载方法,包括以下步骤:
48.s1,在进入每一运算周期对应的运算任务之前,预判断所述运算周期对应的实时值队列是否有新压入的实时值:
49.若无,若无新压入的实时值,无需实时值加载,直接进行pou页运算。
50.若有,则进行获取所述实时值队列的使用权限;进行后续的实时值加载工作;
51.s2,获取所述实时值队列的使用权限;
52.所述获取所述实时值队列的使用权限,具体是获取所述实时值队列的写操作或者读操作权限;
53.同一时刻,所述获取所述实时值队列只有写操作或者读操作权限,若当前没有获取到所述实时值队列的写操作或者读操作权限,后续步骤不可执行,直至获取到所述实时值队列的写操作或者读操作权限。
54.s3,针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数;
55.优选的,所述针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数,具体包括:
56.若下位机为主控制器、备控制器冗余环境,且主控制器向备控制器同步数据正常,则主控制器和备控制器在所述运算周期需要加载的实时值个数为主控制器向备控制器成功同步的实时值个数;
57.若下位机为单控制器环境或者主控制器向备控制器同步数据失败,则所述运算周期需要加载的实时值个数为所述实时值队列中的实时值个数。
58.例如:若下位机为主控制器、备控制器冗余环境,且主控制器向备控制器同步数据正常;主控制器本运算周期对应的实时值队列中的实时值个数为n1,本运算周期中主控制器向备控制器成功同步的实时值个数为n2,则主控制器和备控制器在所述运算周期需要加载的实时值个数n2,n1大于等于n2;
59.若下位机为单控制器环境或者主控制器向备控制器同步数据失败,主控制器本运算周期对应的实时值队列中的实时值个数为n1,备控制器本运算周期对应的实时值队列中的实时值个数为n2,则主控制器和备控制器在所述运算周期需要加载的实时值个数分别为n1和n2。
60.s4,加载实时值队列中的实时值;
61.所述实时值加载具体包括:
62.以所述实时值个数作为遍历次数,从所述实时值队列的初始位置开始遍历,针对第一次遍历到的第一个实时值,根据第一个实时值的信息,定位至控制器内存中pou页运算数据区的旧数据值处,然后将第一个实时值的数据值拷贝给所述旧数据值处;进行下一次遍历,直到遍历次数完成或者所述实时值队列中的实时值为空,完成所述运算周期的实时值加载。
63.在该运算周期对应的实时值队列中,存储着多个实时值,每一实时值的信息包括
pou页页号、数据偏移信息、数据类型及数据值。
64.具有的,根据所述实时值队列中实时值的pou页页号和数据偏移信息,定位至控制器内存中pou页运算数据区的旧数据值处。
65.所述然后将第一个实时值的数据值拷贝给所述旧数据值处,具体包括:
66.获取所述实时值的数据类型,
67.判断数据类型是否为长整型或者双精度浮点数;
68.若是,按64位长度将第一个实时值的数据值拷贝给所述旧数据值处;
69.若是,按32位长度将第一个实时值的数据值拷贝给所述旧数据值处。
70.完成所述运算周期的实时值加载后即可以进行pou页运算步骤。
71.完成所述运算周期的实时值加载后,所述实时值队列中的实时值未被加载,则作为下一个运算周期的新压入的实时值。
72.如图2所示,本发明的另一目的在于提出一种面向多运算周期的实时值加载系统,包括:
73.预判断模块,在进入每一运算周期对应的运算任务之前,预判断所述运算周期对应的实时值队列是否有新压入的实时值:若无,无需实时值加载;若有,则进行获取所述实时值队列的使用权限;
74.权限获取模块,用于获取所述实时值队列的使用权限;
75.个数确认模块,用于针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数;
76.实时值加载模块,用于以所述实时值个数作为遍历次数,从所述实时值队列的初始位置开始遍历,针对第一次遍历到的第一个实时值,根据第一个实时值的信息,定位至控制器内存中pou页运算数据区的旧数据值处,然后将第一个实时值的数据值拷贝给所述旧数据值处;进行下一次遍历,直到遍历次数完成或者所述实时值队列中的实时值为空,完成所述运算周期的实时值加载。
77.所述预判断模块具体用于,若无新压入的实时值,无需实时值加载,直接进行pou页运算。
78.所述预判断模块具体是获取所述实时值队列的写操作或者读操作权限。
79.所述个数确认模块具体用于:
80.若下位机为主控制器、主备控制器冗余环境,且主控制器向备控制器同步数据正常,则主控制器和备控制器在所述运算周期需要加载的实时值个数为主控制器向备控制器成功同步的实时值个数;
81.若下位机为单控制器环境或者主控制器向备控制器同步数据失败,则所述运算周期需要加载的实时值个数为所述实时值队列中的实时值个数。
82.所述实时值加载模块中,根据所述实时值队列中实时值的pou页页号和数据偏移信息,定位至控制器内存中pou页运算数据区的旧数据值处。
83.所述实时值加载模块中,所述然后将第一个实时值的数据值拷贝给所述旧数据值处,具体包括:
84.获取所述实时值的数据类型,
85.判断数据类型是否为长整型或者双精度浮点数;
86.若是,按64位长度将第一个实时值的数据值拷贝给所述旧数据值处;
87.若是,按32位长度将第一个实时值的数据值拷贝给所述旧数据值处。
88.如图3所示,本发明第三个目的是提供一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述面向多运算周期的实时值加载方法的步骤。
89.图中,通讯接口用于接入外部设备,以获取数据。
90.所述面向多运算周期的实时值加载方法包含以下步骤:
91.在进入每一运算周期对应的运算任务之前,预判断所述运算周期对应的实时值队列是否有新压入的实时值;
92.若有新压入的实时值,则进行获取所述实时值队列的使用权限;
93.针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数;
94.以所述实时值个数作为遍历次数,从所述实时值队列的初始位置开始遍历,针对第一次遍历到的第一个实时值,根据第一个实时值的信息,定位至控制器内存中pou页运算数据区的旧数据值处,然后将第一个实时值的数据值拷贝给所述旧数据值处;返回从所述实时值队列的初始位置开始遍历步骤,进行下一次遍历,直到遍历次数完成或者所述实时值队列中的实时值为空,完成所述运算周期的实时值加载。
95.本发明第四个目的是提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述面向多运算周期的实时值加载方法的步骤。
96.所述面向多运算周期的实时值加载方法包含以下步骤:
97.在进入每一运算周期对应的运算任务之前,预判断所述运算周期对应的实时值队列是否有新压入的实时值;
98.若有新压入的实时值,则进行获取所述实时值队列的使用权限;
99.针对获取所述使用权限的所述实时值队列,确定需要加载的实时值个数;
100.以所述实时值个数作为遍历次数,从所述实时值队列的初始位置开始遍历,针对第一次遍历到的第一个实时值,根据第一个实时值的信息,定位至控制器内存中pou页运算数据区的旧数据值处,然后将第一个实时值的数据值拷贝给所述旧数据值处;返回从所述实时值队列的初始位置开始遍历步骤,进行下一次遍历,直到遍历次数完成或者所述实时值队列中的实时值为空,完成所述运算周期的实时值加载。
101.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
102.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的装置。
103.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品。
104.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程中指定的功能的步骤。
105.最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1