盾构数据交互方法及装置、计算机可存储介质与流程

文档序号:32795733发布日期:2023-01-03 22:19阅读:40来源:国知局
盾构数据交互方法及装置、计算机可存储介质与流程

1.本公开涉及盾构数据处理领域,特别涉及盾构数据交互方法及装置、计算机可存储介质。


背景技术:

2.盾构数据交互旨在将盾构plc(programmable logic controller,可编程逻辑控制器)控制系统中cpu模块产生的处理数据分享给比如上位机客户端、导向客户端、地面监控客户端等其它终端,进而这些客户端利用收到的数据进行显示或者计算,并将被修改数据返回给plc中的cpu模块,从而实现盾构数据实时交互。
3.相关技术中,利用内置在plc设备的cpu中的服务器实现盾构数据的交互。


技术实现要素:

4.相关技术中,软硬件高度集中,极其不利于服务器调试与配置,数据交互的数据量极限不能依据需求调试,只能更换高性能的cpu,存在服务器性能固化的问题。另外,当服务器宕机后,必须重启cpu,使得盾构数据交互的效率较低。
5.针对上述技术问题,本公开提出了一种解决方案,可以降低配置难度,提高数据容量,提高盾构数据交互的效率。
6.根据本公开的第一方面,提供了一种盾构数据交互方法,由外置于可编程逻辑控制器plc设备的基于opc ua的软件服务器执行,包括:在plc设备下载plc程序或启动的情况下,从所述plc设备,读取所有的符号表,其中,所述符号表描述点位数据的基本信息;根据所读取的符号表,从所述plc设备,读取数据表中的点位数据到所述软件服务器的实时数据缓存区,其中,所述实时数据缓存区的点位数据用于基于opc ua的客户端读取;在接收来自基于opc ua的客户端的待修改点位数据的情况下,将待修改点位数据写入所述plc设备,其中,所述基于opc ua的客户端与所述基于opc ua的软件服务器之间通过opc ua协议栈进行交互。
7.在一些实施例中,所述软件服务器与所述plc设备之间连接有用于从所述plc设备读取数据的第一网线和用于向所述pcl设备写入数据的第二网线,其中,通过所述第一网线,从所述plc设备,读取所有的符号表;通过所述第一网线,根据所读取的符号表,从所述plc设备,读取数据表中的点位数据到所述软件服务器的实时数据缓存区;通过所述第二网线,将待修改点位数据写入所述plc设备。
8.在一些实施例中,盾构数据交互方法,还包括:在不存在将待修改点位数据写入所述plc设备的操作的情况下,基于网络保活机制,控制所述第二网线的网络连接处于保活状态。
9.在一些实施例中,所述软件服务器与所述plc设备之间连接有主网线和从网线,所述从网线为所述主网线的备用网线,其中,在主网线不存在故障的情况下,通过所述主网线,读取所有的符号表、读取数据表中的点位数据到所述软件服务器的实时数据缓存区和
将待修改点位数据写入所述plc设备,其中,读取的操作和写入的操作在所述主网线交替执行;在主网线存在故障的情况下,通过所述从网线,读取所有的符号表、读取数据表中的点位数据到所述软件服务器的实时数据缓存区和将待修改点位数据写入所述plc设备,其中,读取的操作和写入的操作在所述从网线交替执行。
10.在一些实施例中,将待修改点位数据写入所述plc设备包括:将待修改点位数据,存储到所述软件服务器的数据修改缓存区;按照预设时间间隔,从所述数据修改缓存区中,读取小于或等于写入数量阈值的待修改点位数据,并将所读取的待修改点位数据进行协议编码后发送到所述plc设备;响应于接收来自所述plc设备的响应成功消息,从所述数据修改缓存区中删除所述待修改点位数据。
11.在一些实施例中,所述数据表存在多个,每个数据表中包括多个点位数据,所述每个数据表中的多个点位数据的总数量小于或等于读取数量阈值。
12.在一些实施例中,所述软件服务器与所述plc设备和所述基于opc ua的客户端均通过千兆交换机进行交互。
13.在一些实施例中,将待修改点位数据写入所述plc设备包括:采用多线程写入方式,将待修改点位数据写入所述plc设备。
14.在一些实施例中,所述软件服务器同时连接有多个plc设备。
15.在一些实施例中,所述软件服务器具有前端界面,方法还包括:响应于用户在所述前端界面添加一个或多个待添加plc设备,在配置文件中,添加所述待添加plc设备的配置信息;响应于用户在所述前端界面删除一个或多个待删除plc设备,从配置文件中,删除所述待删除plc设备的配置信息。
16.在一些实施例中,所述基于opc ua的客户端包括上位机客户端、地面监控客户端和导向客户端中的至少一种。
17.在一些实施例中,读取所有的符号表包括:获取当前符号表序号,所述当前符号表序号的初始值为1;根据所述当前符号表序号,读取对应的当前符号表;根据所述当前符号表序号进行协议编码,得到相应的协议报文;发送编码得到的协议报文到所述plc设备;接收并解析来自所述plc设备的返回报文,得到符号表的总数目、数据表的总数目、位号的总数目、标志符、当前符号表的序号、以及当前符号表中的位号数量、位号名称、位号id、位号类别、数据类型、数据长度;建立点位符号变量缓存,并设置当前符号表的读取成功标志位;将当前符号表序号累加1,并重复执行获取当前符号表序号、读取对应的当前符号表、协议编码、发送协议报文、接收并解析返回报文、建立点位符号变量缓存、设置当前符号表的读取成功标志位的操作,直到当前符号表序号大于符号表的总数目。
18.在一些实施例中,读取数据表中的点位数据到所述软件服务器的实时数据缓存区包括:根据预设的轮询间隔时间,获取当前数据表序号,所述当前数据表序号的初始值为1;根据当前数据表序号,生成相应的协议报文;发送所生成的协议报文到所述plc设备;接受并解析来自所述plc设备的返回报文,得到标志符、当前数据表的表序号、当前数据表中的点位总数、当前数据表中所有的点位数据;将当前数据表中的点位数据,更新到所述实时数据缓存区;在每次成功读取当前数据表的点位数据的情况下,设置当前数据表序号对应的数据表读取成功标志位;将当前数据表序号累加1,并重复执行获取当前数据表序号、生成协议报文、发送协议报文、接收并解析返回报文、更新点位数据、设置数据表读取成功标志
位的操作,直到当前数据表序号大于数据表的总数目,其中,对每张数据表的读取过程是完整的,不可被中断。
19.根据本公开第二方面,提供了一种盾构数据交互装置,部署有外置于可编程逻辑控制器plc设备的基于opc ua的软件服务器,所述软件服务器包括:第一读取模块,被配置为在plc设备下载plc程序或启动的情况下,从所述plc设备,读取所有的符号表,其中,所述符号表描述点位数据的基本信息;第二读取模块,被配置为根据所读取的符号表,从所述plc设备,读取数据表中的点位数据到所述软件服务器的实时数据缓存区,其中,所述实时数据缓存区的点位数据用于基于opc ua的客户端读取;写入模块,被配置为在接收来自基于opc ua的客户端的待修改点位数据的情况下,将待修改点位数据写入所述plc设备,其中,所述基于opc ua的客户端与所述基于opc ua的软件服务器之间通过opc ua协议栈进行交互。
20.根据本公开第三方面,提供了盾构数据交互装置,部署有外置于可编程逻辑控制器plc设备的基于opc ua的软件服务器,所述软件服务器包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行上述任一实施例所述的盾构数据交互方法。
21.根据本公开的第四方面,提供了一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上述任一实施例所述的盾构数据交互方法。
22.在上述实施例中,可以降低配置难度,提高数据容量,提高盾构数据交互的效率。
附图说明
23.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
24.参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
25.图1是示出根据本公开一些实施例的盾构数据交互方法的流程图;
26.图2是示出根据本公开一些实施例的基于opc ua的软件服务器与plc设备、基于opc ua的客户端之间的连接示意图;
27.图3是示出根据本公开一些实施例的基于opc ua的软件服务器的功能示意图;
28.图4是示出根据本公开一些实施例的新增plc连接的流程图;
29.图5a是示出根据本公开一些实施例的软件服务器的站点添加界面示意图;
30.图5b是示出根据本公开一些实施例的软件服务器的通讯配置界面示意图;
31.图6是示出根据本公开一些实施例的采集plc点位数据的流程图;
32.图7是示出根据本公开一些实施例的点位数据读取的流程图;
33.图8是示出根据本公开一些实施例的点位数据修改的流程图;
34.图9a是示出根据本公开一些实施例的多站点上行的连接队列与业务处理队列的对应示意图;
35.图9b是示出根据本公开一些实施例的多站点下行的连接队列与业务处理队列的对应示意图;
36.图10是示出根据本公开一些实施例的盾构数据交互的数据流转图;
37.图11是示出根据本公开一些实施例的盾构数据交互装置的框图;
38.图12是示出根据本公开另一些实施例的盾构数据交互装置的框图;
39.图13是示出用于实现本公开一些实施例的计算机系统的框图。
具体实施方式
40.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
41.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
42.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
43.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
44.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
45.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
46.图1是示出根据本公开一些实施例的盾构数据交互方法的流程图。
47.如图1所示,盾构数据交互方法包括步骤s110-步骤s130。盾构数据交互方法由外置于plc设备的基于opc(object linking and embedding for process control,用于过程控制的对象链接和嵌入)ua(unified architecture,统一架构)的软件服务器执行。即,基于opc ua的软件服务器的硬件载体不同于plc设备。在一些实施例中,软件服务器可以同时连接多个plc设备。
48.在步骤s110中,在plc设备下载plc程序或启动的情况下,从plc设备,读取所有的符号表。符号表描述点位数据的基本信息。
49.在一些实施例中,读取符号表包括:
50.获取当前符号表序号,所述当前符号表序号的初始值为1;
51.根据所述当前符号表序号,读取对应的当前符号表;
52.根据所述当前符号表序号进行协议编码,得到相应的协议报文;
53.发送编码得到的协议报文到所述plc设备;
54.接收并解析来自所述plc设备的返回报文,得到符号表的总数目、数据表的总数目、位号的总数目、标志符、当前符号表的序号、以及当前符号表中的位号数量、位号名称、位号id、位号类别、数据类型、数据长度;
55.建立点位符号变量缓存,并设置当前符号表的读取成功标志位;
56.将当前符号表序号累加1,并重复执行获取当前符号表序号、读取对应的当前符号表、协议编码、发送协议报文、接收并解析返回报文、建立点位符号变量缓存、设置当前符号表的读取成功标志位的操作,直到当前符号表序号大于符号表的总数目。
57.在步骤s120中,根据所读取的符号表,从plc设备,读取数据表中的点位数据到软件服务器的实时数据缓存区。实时数据缓存区的点位数据用于基于opc ua的客户端读取。
在一些实施例中,数据表存在多个,每个数据表中包括多个点位数据,每个数据表中的多个点位数据的总数量小于或等于读取数量阈值。以数据表为单位进行点位数据的读取,实现了点位数据的批量读取,从而进一步提高盾构数据交互的高效性。
58.在一些实施例中,读取数据表中的点位数据到所述软件服务器的实时数据缓存区包括:
59.根据预设的轮询间隔时间,获取当前数据表序号,所述当前数据表序号的初始值为1;
60.根据当前数据表序号,生成相应的协议报文;
61.发送所生成的协议报文到所述plc设备;
62.接受并解析来自所述plc设备的返回报文,得到标志符、当前数据表的表序号、当前数据表中的点位总数、当前数据表中所有的点位数据;
63.将当前数据表中的点位数据,更新到所述实时数据缓存区;
64.在每次成功读取当前数据表的点位数据的情况下,设置当前数据表序号对应的数据表读取成功标志位;
65.将当前数据表序号累加1,并重复执行获取当前数据表序号、生成协议报文、发送协议报文、接收并解析返回报文、更新点位数据、设置数据表读取成功标志位的操作,直到当前数据表序号大于数据表的总数目,其中,对每张数据表的读取过程是完整的,不可被中断。
66.在步骤s130中,在接收来自基于opc ua的客户端的待修改点位数据的情况下,将待修改点位数据写入plc设备。基于opc ua的客户端与基于opc ua的软件服务器之间通过opc ua协议栈进行交互。
67.在上述实施例中,引入opc ua技术标准,设计外置于plc设备的cpu模块的软件服务器,并将客户端全部采用opc ua框架编写,这种架构下的盾构数据交互方法,使得在plc编程中对需要进行外部交互的数据变量,可以直接进行暴露,不需要像modbus一样必须要绑定地址进行比对识别才能通讯,这极大简化了编程繁琐程度,可以降低配置难度。外置服务器可以依据cpu性能、以太网数据上限动态调整可容纳最大数据量,提高数据容量,利用不同机制处理大量数据,在数据传输和显示过程中降低时延消除界面卡顿,提高盾构数据交互的效率。
68.另外,opc ua可以避免对变量数据进行地址编程,简化通讯,还可以跨平台运行,不局限于windos系统,也可以支持多台计算机仅以ip地址寻址进行通讯,剔除繁琐且不稳定的dcom配置。
69.在一些实施例中,将待修改点位数据写入plc设备包括:将待修改点位数据,存储到软件服务器的数据修改缓存区;按照预设时间间隔,从数据修改缓存区中,读取小于或等于写入数量阈值的待修改点位数据,并将所读取的待修改点位数据进行协议编码后发送到plc设备;响应于接收来自plc设备的响应成功消息,从数据修改缓存区中删除待修改点位数据。软件服务器不仅配置了实时数据缓存区,还配置了数据修改缓存区,可以尽量避免数据读写冲突,从而进一步提高盾构数据交互的高效性。另外,通过批量写入待修改点位数据到plc设备,可以进一步提高盾构数据交互的高效性。
70.在一些实施例中,可以采用多线程写入方式,将待修改点位数据写入plc设备。通
过多线程写入,可以提高写入效率和实时性,从而提高盾构数据交互的高效性和实时性。
71.在一些实施例中,软件服务器与plc设备之间连接有用于从plc设备读取数据的第一网线和用于向pcl设备写入数据的第二网线。例如,plc设备与软件服务器之间采取千兆双网口通讯。这种情况下,可以通过第一网线,从plc设备,读取所有的符号表;通过第一网线,根据所读取的符号表,从plc设备,读取数据表中的点位数据到软件服务器的实时数据缓存区;并通过第二网线,将待修改点位数据写入plc设备。
72.为了解决客户端的大批量数据的突发写入,提高系统读写效率,提出了读写分离策略,plc维护两条网络连接,分别对应着从plc获取点位信息和向plc修改点位数据,由于读取点位信息和修改点位数据使用不同的两条网络连接,所以opc数据访问和opc数据修改互不干扰,服务端在得到客户端修改点位数据的请求后,通过写点位数据的网络连接向plc下发修改数据的协议命令,在写的过程中,服务端依然可以通过读点位数据的网络连接获取plc的点位实时信息。因为修改点位数据的请求来源于客户端,修改数据时对plc下发命令存在时间的不确定性,所以在写数据的网络连接在空闲时间(无数据交互),服务端通过心跳与plc维持连接,确认当前的网络连接处于保活状态。读取点位数据的网络连接周期性对plc进行轮询,获取plc点位的实时数据。
73.在上述实施例中,plc设备与软件服务器之间采取千兆双网口通讯,实现了硬件段的读写分离,可以在硬件端深入地解决读写发生时延进而导致卡顿问题,读和写在不同的通道上,互不影响,当以500ms及以下读数据频率运行时,不会产生肉眼可见卡顿,从而进一步提高了盾构数据交互的高效性、实时性。
74.在一些实施例中,在不存在将待修改点位数据写入plc设备的操作的情况下,基于网络保活机制,控制第二网线的网络连接处于保活状态。在读写分离的情况下,保持写连接保活,使得客户端修改点位数据的写入操作可以时刻被响应,提高盾构数据交互的高效性和实时性。
75.在一些实施例中,软件服务器与plc设备之间连接有主网线和从网线,从网线为主网线的备用网线。在主网线不存在故障的情况下,通过主网线,读取所有的符号表、读取数据表中的点位数据到软件服务器的实时数据缓存区和将待修改点位数据写入plc设备,其中,读取的操作和写入的操作在主网线交替执行。在主网线存在故障的情况下,通过从网线,读取所有的符号表、读取数据表中的点位数据到软件服务器的实时数据缓存区和将待修改点位数据写入plc设备,其中,读取的操作和写入的操作在从网线交替执行。
76.为了提高系统的可用性和容错性,plc提供两个不同的网络ip地址和端口号可供opc ua软件服务器进行网络连接,在plc站点添加界面中配置plc的两个不同网络ip地址和端口号,当对当前的网络地址信息发起连接失败或者当前的网络连接发生断开后,立即将当前网络地址信息切换到另一个网络的地址信息(ip地址和端口号),在网络重连过程中,使用切换后的网络地址信息对plc发起连接请求。
77.在上述实施例中,通过基于主从切换的思想进行软件服务器和plc设备之间的盾构数据交互设计,实现网络连接冗余,从而可以提高盾构数据交互的鲁棒性。
78.在一些实施例中,也可以只有主网线来实现读取和写入操作的交替执行。
79.在一些实施例中,软件服务器与所述plc设备和所述基于opc ua的客户端均通过千兆交换机进行交互。通过千兆交换机进行交互,可以进一步节省软件服务器所在硬件载
体的接口,提高盾构数据交互的高效性。在另一些实施例中,软件服务器与所述plc设备和所述基于opc ua的客户端也可以直接交互。
80.在一些实施例中,软件服务器具有前端界面,方法还包括:响应于用户在所述前端界面添加一个或多个待添加plc设备,在配置文件中,添加所述待添加plc设备的配置信息;响应于用户在所述前端界面删除一个或多个待删除plc设备,从配置文件中,删除所述待删除plc设备的配置信息。
81.在一些实施例中,上述基于opc ua的客户端包括上位机客户端、地面监控客户端和导向客户端中的至少一种。
82.图2是示出根据本公开一些实施例的基于opc ua的软件服务器与plc设备、基于opc ua的客户端之间的连接示意图。
83.如图2所示,1指代不同设备之间连接用到的千兆交换机。2指代盾构机的plc控制系统,主指cpu模块。3指代基于opc ua技术的外置软件服务器。例如,外置软件服务器位于工控机上。4指代同为opc ua框架的导向客户端,位于工控机上。5指代同为opc ua框架的地面监控客户端,位于工控机上。6指代同为opc ua框架的上位机客户端,位于工控机上。7指代cpu、各个工控机与交换机连接的网线,图2中所有带箭头的线均为网线,其中,plc与交换机之间是双网口连接,包括读数据网口、写数据网口。以网线和ip地址寻址方式构成各个终端之间的通讯。软件服务器是最为重要的数据中转站,软件服务器与cpu进行数据交互,具体指软件服务器读取plc的cpu中数据存入缓存,软件服务器将被修改数据发送给plc的cpu,其它客户端读取服务器缓存数据用于显示或者计算,在客户端中被修改数据发送给服务器继而发送给cpu。
84.在上述实施例中,软件服务器只做数据中转,不参与数据修改,修改数据只限于客户端。通常,盾构施工时上位机界面数据变化是实时的,如果发生数据时延会产生界面卡顿,影响盾构司机操作,易引起施工风险。引起卡顿的原因是服务器中数据没有及时刷新,核心是由于服务器与cpu通讯过程中,读数据与写数据不及时,当要定期读取cpu中数据的时候,服务器正在给cpu写数据,那读数据指令只能继续等待,等待就造成数据不刷新,进而导致卡顿。当上位机界面数据被修改,传递给服务器后,服务器该第一时间发送给cpu,但此时若服务器正在读取cpu数据,写数据指令只能继续等待,等待就造成写数据没有及时被cpu接收,进而导致本该被改变的数据未变化,进而导致卡顿。硬件层面,cpu与服务器采用千兆双网口连接,进行硬件端的读写分离,读数据和写数据可以同时进行,避免了读写数据撞时。
85.上述图2仅示出了本公开的一种实施例,并不代表仅此一种实施例。
86.图3是示出根据本公开一些实施例的基于opc ua的软件服务器的功能示意图。
87.如图3所示,基于opc ua的软件服务器的结构设计根据功能类别划分为plc通讯部件、协议网关部件、数据网关部件、数据处理部件、实时数据缓存部件、opc ua服务部件。
88.plc通讯部件用于通讯配置、连接管理和网络收发。
89.在plc通讯配置中,软件服务器与plc的数据通讯采用基于tcp的自定义数据协议,并提供人机交互界面,根据现场实际环境选择opcua通讯端口,通讯超时时间、重发次数、轮询间隔等参数,为用户提供最佳的通讯选择。
90.在plc站点管理中,软件服务器可以进行plc站点添加,添加新的站点,开启站点数
据服务,并将信息保存到yaml文件中。软件服务器还可以进行错误处理,包括对站点的名称和服务地址进行判断,确保唯一性,避免与已存在的站点的名称或者服务地址相同。
91.软件服务器还可以进行plc站点删除,包括对已存在的站点停止opc ua数据服务,断开与plc数据通讯,并从配置文件中删除站点相关信息。
92.软件服务器还可以对plc站点授时,包括每隔1小时对plc进行授时(采用本机的当前时间)。
93.图4是示出根据本公开一些实施例的新增plc连接的流程图。
94.如图4所示,用户发送创建plc连接请求到数据网关,数据网关转发请求到协议网关,协议网关根据通讯参数,创建网络连接。在穿件网络连接后,plc返回创建结果到协议网关,协议网关回发请求到数据网关,数据网关返回创建连接结果到用户。
95.图5a是示出根据本公开一些实施例的软件服务器的站点添加界面示意图。
96.如图5a所示,软件服务器的前端界面包括添加站点(plc设备)界面,可以添加站点名称、站点地址、通讯端口等。
97.图5b是示出根据本公开一些实施例的软件服务器的通讯配置界面示意图。
98.如图5b所示,软件服务器的前端界面还包括通讯配置界面,可以配置opc端口、通讯等待时间、重试次数、轮询间隔等。
99.返回图3,协议网关部件用于数据接收和协议解析、协议封装和数据发送。数据网关部件用于消息收发、消息发布和命令下发。数据处理部件用于消息订阅、点位信息提取。实时数据缓存部件用于写入缓存、读取缓存。opc ua服务部件用于da(一种数据格式)读取点位数据、da写入点位数据、点位信息转换。
100.图6是示出根据本公开一些实施例的采集plc点位数据的流程图。
101.如图6所示,协议网关发送采集点位请求到plc设备,plc设备返回点位数据信息给协议网关。协议网关进行消息推送到数据网关,数据网关进行消息分发到数据处理部件,由数据处理部件存储点位信息到数据缓存。
102.plc点位数据读取过程分为plc符号表和plc数据表读取两部分。
103.首次连接plc设备后,必须完成对所有的符号表的读取,符号表的信息来源于程序中定义的各个opc变量,因此每张符号表的信息在程序被下载到plc后是固定不变的,如果用户对plc设备更新程序,符号表的信息会因为程序中的opc变量定义被修改而发生变化,因此在plc程序下载后,服务端必须对符号表进行重新读取。
104.符号表对应唯一的表序号,描述每个点位符号的基本信息,包括位号id,数据类型,数据长度,位号名称。由于每张符号表的容量有限,要获取全部的点位符号信息,需要轮询读取符号表。
105.初始的情况下,从表序号为1的符号表进行信息读取,读取成功后,表序号累加1,然后根据表序号读取对应的符号表。
106.根据符号表的序号进行协议编码,并将协议报文发送给plc。接收并解析返回报文,获取符号表的总数目(读后续符号表的时候也依赖于这个值)、数据表的总数目(后续读取数据表的时候依据这个读取,避免读取多个空表)、位号的总数目、标志符、当前符号表的序号、当前符号表中的位号数量、位号名称、位号id、位号类别、数据类型、数据长度,并建立点位符号变量缓存,并设置当前符号表的读取成功标志位。
107.每次成功读取符号表信信息,设置当前序号对应的符号表读取成功标志位,然后将符号表表序号累加1,当表序号大于符号表总数目时,则判断符号表读取完毕,则转入符号表读取完毕处理流程,否则在19毫秒以后,重复步骤2,对下一张符号表进行读取。
108.服务器先发序号为1的协议报文给plc,得到第一张表及总表数及总的点位数,还有数据表的数目,先读取符号表,再读取数据表,然后依次按照总表数发送协议,得到单独每张表数据内容。每次都可以获得总信息,进行数组判断,检查数组中所有序号全部发完及读到(即当表序号大于符号表的总数目时)。例如,可以是按照顺序读取,不跳读。
109.在一些实施例中,还可以为通讯提供通讯超时保护和数据重发,根据现场网络通讯复杂程度配置合适的超时时间和重发次数。
110.轮询获取每张符号表信息,每张符号表信息获取成成功后,则为每张表对应的符号表读取标志位设置为真。轮询完毕后,则检查每张表的符号表读取标志位,若为假。则对未读取成功的符号表进行重新读取。当所有的符号表信息成功获取完毕后,则进入数据表信息读取流程。
111.在读取数据表之前,必须完成对plc所有符号表的读取。数据表中动态反映了plc设备的当前的实时运行信息,所以数据表的的每个点位信息是动态变化的。每张数据表对应唯一的表序号,描述了点位的实时数据信息,包括表序号,位号id,质量码,数据长度以及数据信息,获取全部的点位数据表信息,需要按照表序号对数据表进行轮询。
112.在读取数据表的时候,从表序号为1的数据表开始进行读取,每次成功读取后序号累加1,然后根据表序号进行下一张数据表的读取。
113.根据数据表序号生成协议报文,并将报文发送给plc。接受并解析报文,获取标志符、当前数据表的表序号,当前数据表中的点位总数、表中所有的点位的数据信息(位号id、质量、数据值)。并将当前表中的所有的点位数据信息更新到点位数据缓存中。
114.每次成功读取数据表信息,设置当前数据表序号对应的数据表读取成功标志位,然后将数据表序号累加1,当标序号大于数据表总数目时,则判断数据表读取完毕,进入数据表获取完毕流程处理,否则在一定的时间后(轮询间隔),继续读取标序号对应的数据表信息。对每张数据表的读取过程是完整的,不可被中断,但在从当前数据表的读取过程完成到开始对下一张数据表进行读取进行过渡时,是可以被中断,转向数据修改流程。也就是两张数据表的读取操作之间可以插入写操作。
115.在一些实施例中,可以根据plc的工作负荷,选择合适的轮询间隔时间,可缓解plc的通讯压力。
116.在一些实施例中,可以为通讯提供超时保护和数据重发,根据现场网络通讯复杂程度配置合适的超时时间和重发次数。
117.轮询获取每张数据表信息,每张数据表信息获取成功后,则为每张表对应的数据表读取标志位设置为真。轮询完毕后,则检查每张表的数据表读取完成标志位,若为假。则对未完成的数据表信息进行读取。当所有的数据表信息成功获取完毕后,则将设备的点位数据缓存同步更新到opc ua服务的点位实时数据缓存中,以方便快速向opc ua客户端提供最新的实时数据服务,然后重置所有数据表的读取成功标志位为假,开始进入新一轮的数据表信息获取。
118.图7是示出根据本公开一些实施例的点位数据读取的流程图。
119.如图7所示,opc ua客户端向opc ua服务器发出请求,opc ua服务器从其数据缓存中读取点位信息,数据缓存返回数据到opc ua服务器,opc ua服务器发送响应请求到opc ua客户端。
120.图8是示出根据本公开一些实施例的点位数据修改的流程图。
121.如图8所示,opc ua客户端发出修改数据请求到opc ua服务器。opc ua服务器转发消息到数据网关,进而消息分发到协议网关,进而修改plc中的数据。plc返回结果到协议网关,进而由协议网关返回给数据网关,进而返回给opc ua服务器。
122.通过opcua sdk获取客户端需要修改的plc站点名称、目标点位名称、目标点位的数值,通过站点名称可以找到对应plc的符号表,再通过目标点位名称在符号表中找到关联的点位id,结合plc通讯协议,将目标点位的id和数值写入到plc中完成数据修改。
123.opc ua缓存是主动的,服务器读取完plc(数据表)数据主动将数据放进opc ua缓存,供上位机、导向获取,数据修改缓存是被动获取,opc ua客户端将被修改的数据推送过来,opc ua服务器被动接收到其数据修改缓存中。
124.客户端(上位机或导向)通过opc ua协议将待修改的点位数据推送给服务端,服务端将推送目标点位数据信息进行缓存。上位机、导向主动推送过来主动发,opcua协议直接接收,服务器被动接收,是一个个变量接收并放进缓存。例如,可以采用事件触发机制。
125.服务端每隔200毫秒对待修改的目标点位缓存进行扫描,若缓存不为空,则设置数据修改标志位。在处理完当前的某个数据表的读取过程完毕后,在准备读取下一张数据表之前检查opcua数据修改标志位是否被置位,如标志位为真,则放弃对下一张数据表的读取,在23毫秒后转入数据修改处理流程。例如,可以保证有写数据就先写。
126.每次从待修改的数据缓存中读取最多100个点位信息,对待修改的点位信心进行协议编码后发送给plc。plc响应成功后,根据plc回复的信息,从缓存中删除已修改成功后的点位信息。判断待修改的数据缓存是否为空,若为空,则置位数据修改标志位,转入到写入完毕流程处理,否则,延时31毫秒后则重复上述步骤。连续修改数据时,每次修改数据之间的时间间隔为31毫秒。为了提高点位修改效率,采用缓存机制和批量修改机制。
127.每一轮的数据修改都会在对当前数据表的读取过程完成之后进行(只在读间隔,不打断读)。
128.在一些实施例中,可以为每次符号变量写入提供超时保护(超时时间为359ms),写入最大尝试次数为3次,当达到最大次数后,则放弃尝试写入,并从缓存中移除相关符号变量后,进行下一次数据修改处理。
129.在待修改的数据缓冲区为空后,置位数据修改标志位,延时13毫秒后切入到数据表的读取流程。取消了优先级。写完继续接着写之前的读来继续读。读取完后,判断修改数据标志位,有需要修改的,就执行写操作,直到没有需要修改的数据。在循环读的时候,可以插入写,例如在存在写操作的情况下就执行写操作,可以在执行读取操作的同时检测是否存在写操作。每张数据表的读取过程是完整的,不会打断。
130.在待修改数据缓存为空时,重置数据修改标志位为假,在19毫秒后,切入到数据读取流程,继续对数据表进行读取。因为服务器采用固定的时间(服务端每隔200毫秒)对缓存进行扫描后进行批量修改处理,所以服务器每次向plc修改点位数据的个数,与opc ua客户端写入待修改的点位的速率有关。
131.在一些实施例中,为提高读写性能和数据处理实时性,本公开的软件服务器的软件架构采用异步读写和消息分发。网络的连接、断开和数据读取采用事件驱动机制处理。而为了提供写入效率,网络的数据写入采用多线程写入方式向plc设备写入点位数据。在对plc进行连接之前,对plc的目标网络地址连接进行探测,判断当前服务器与plc的通讯是否可达,如果通讯不可达,则转入重连流程。
132.在与plc初次连接成功之前,在探测服务器到与plc的之间网络不可达的情况下,服务器重连的时间间隔为10秒,否则为5秒。
133.为网络可达的前提下,尝试与plc进行网络连接,网络连接的超时时间为1秒,若在1秒的时间期间未进行成功连接,则判断连接超时,进入重连的流程处理。在与plc连接成功之后,若网络断开需要进行重连,重连的时间为3秒。
134.对每条网络连接根据通讯等待和重试次数设置数据读取超时时间,在成功连接plc设备后,在等待超时长后,plc无数据返回,则服务器主动断开连接,进入到网络的重连的流程中。
135.在一些实施例中,软件服务器还可以进行多站点处理。
136.软件服务器提供对多个plc的数据服务,可以提供满足多个plc设备的同时在线访问请求。为了处理这种高并发的服务需求,opc ua软件服务器建立多个连接队列和plc业务处理队列,同时引入消息中间件对消息进行异步分发,并使用线程池对消息进行分类处理。每个网络连接队列关联一个业务处理队列,他们具有相同的队列编号。
137.为了对多个plc设备进行识别,每个plc设备都有唯一的名称和网络ip地址。在消息传递时,每个消息都包含着plc设备所属的队列编号和名称。
138.在架构中建立网络连接队列和业务处理队列,为每个plc关联一个网络连接队列和一个业务处理队列,并在线程池中对业务进行分类处理。支持对多个plc进行数据读写,为每个连接提供数据读写保护。提供连接队列,实现多个连接的负载均衡。采用事件驱动机制,提高事件处理的实时性。建立环形数据缓冲区,解决与plc通讯过程中的粘包、半包等问题。采用消息中间件,对数据进行分类和分组处理,提高数据处理的实时性和实现消息分发的负载均衡。
139.图9a是示出根据本公开一些实施例的多站点上行的连接队列与业务处理队列的对应示意图。
140.图9b是示出根据本公开一些实施例的多站点下行的连接队列与业务处理队列的对应示意图。
141.图10是示出根据本公开一些实施例的盾构数据交互的数据流转图。
142.如图10所示,基于opc ua的软件服务器的opc ua软件服务器的数据服务通过opc ua协议栈接收来自opc ua客户端的da数据格式的待修改数据,通过数据网关、协议网关、libevent并利用tcp协议进行plc内的点位修改。基于opc ua的软件服务器的opc ua软件服务器的数据服务通过数据网关、协议网关、libevent并利用tcp协议进行plc内的点位读取后,进行数据处理后进行点位数据实时缓存,并由opc ua软件服务器的数据服务从点位数据实时缓存读取数据后,通过opc ua协议栈发送给opc ua客户端。
143.图11是示出根据本公开一些实施例的盾构数据交互装置的框图。
144.如图11所示,盾构数据交互装置11包括外置于可编程逻辑控制器plc设备的基于
opc ua的软件服务器110。
145.软件服务器110包括第一读取模块111、第二读取模块112和写入模块113。
146.第一读取模块111被配置为在plc设备下载plc程序或启动的情况下,从所述plc设备,读取所有的符号表,其中,所述符号表描述点位数据的基本信息,例如执行如图1所示的步骤s110。
147.第二读取模块112被配置为根据所读取的符号表,从所述plc设备,读取数据表中的点位数据到所述软件服务器的实时数据缓存区,其中,所述实时数据缓存区的点位数据用于基于opc ua的客户端读取,例如执行如图1所示的步骤s120。
148.写入模块113被配置为在接收来自基于opc ua的客户端的待修改点位数据的情况下,将待修改点位数据写入所述plc设备,其中,所述基于opc ua的客户端与所述基于opc ua的软件服务器之间通过opc ua协议栈进行交互,例如执行如图1所示的步骤s130。
149.图12是示出根据本公开另一些实施例的盾构数据交互装置的框图。
150.如图12所示,盾构数据交互装置12包括外置于可编程逻辑控制器plc设备的基于opc ua的软件服务器120。
151.软件服务器120包括存储器121;以及耦接至该存储器121的处理器122。存储器121用于存储执行盾构数据交互方法对应实施例的指令。处理器122被配置为基于存储在存储器121中的指令,执行本公开中任意一些实施例中的盾构数据交互方法。
152.图13是示出用于实现本公开一些实施例的计算机系统的框图。
153.如图13所示,计算机系统130可以通用计算设备的形式表现。计算机系统130包括存储器1310、处理器1320和连接不同系统组件的总线1300。
154.存储器1310例如可以包括系统存储器、非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(boot loader)以及其他程序等。系统存储器可以包括易失性存储介质,例如随机存取存储器(ram)和/或高速缓存存储器。非易失性存储介质例如存储有执行盾构数据交互方法中的至少一种的对应实施例的指令。非易失性存储介质包括但不限于磁盘存储器、光学存储器、闪存等。
155.处理器1320可以用通用处理器、数字信号处理器(dsp)、应用专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑设备、分立门或晶体管等分立硬件组件方式来实现。相应地,诸如判断模块和确定模块的每个模块,可以通过中央处理器(cpu)运行存储器中执行相应步骤的指令来实现,也可以通过执行相应步骤的专用电路来实现。
156.总线1300可以使用多种总线结构中的任意总线结构。例如,总线结构包括但不限于工业标准体系结构(isa)总线、微通道体系结构(mca)总线、外围组件互连(pci)总线。
157.计算机系统130还可以包括输入输出接口1330、网络接口1340、存储接口1350等。这些接口1330、1340、1350以及存储器1310和处理器1320之间可以通过总线1300连接。输入输出接口1330可以为显示器、鼠标、键盘等输入输出设备提供连接接口。网络接口1340为各种联网设备提供连接接口。存储接口1350为软盘、u盘、sd卡等外部存储设备提供连接接口。
158.这里,参照根据本公开实施例的方法、装置和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个框以及各框的组合,都可以由计算机可读程序指令实现。
159.这些计算机可读程序指令可提供到通用计算机、专用计算机或其他可编程装置的
处理器,以产生一个机器,使得通过处理器执行指令产生实现在流程图和/或框图中一个或多个框中指定的功能的装置。
160.这些计算机可读程序指令也可存储在计算机可读存储器中,这些指令使得计算机以特定方式工作,从而产生一个制造品,包括实现在流程图和/或框图中一个或多个框中指定的功能的指令。
161.本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
162.通过上述实施例中的盾构数据交互方法及装置、计算机可存储介质,可以降低配置难度,提高数据容量,提高盾构数据交互的效率。
163.至此,已经详细描述了根据本公开的盾构数据交互方法及装置、计算机可存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1