一种OPC协议通信过程中实现断线重连的方法与流程

文档序号:12491542阅读:3567来源:国知局

本发明属于工业防火墙深度防护技术领域,尤其涉及的是一种OPC协议通信过程中实现断线重连的方法。



背景技术:

OPC协议广泛应用于工控环境,作为数据库获取生产数据的最常用手段,协议通讯中断后很多OPC接口软件会发生卡死或重连时响应时间过长的问题,严重影响生产数据传输的及时性和易用性。目前工业防护墙中没有针对OPC通信协议做断线重连,仅仅在通信异常的时候进行提示,操作员只能重新配置OPC服务所需参数并重新启动OPC服务,进行重新连接、通信。

防火墙检测到断线或异常,只是通过日志形式将断线或异常上传至防火墙管理客户端,提示操作员,操作员根据提示,进行OPC服务重启。现有方案中处理OPC断线或异常进行如下操作:

步骤一、防火墙检测到断线或异常:防火墙检测到网口异常或通过抓包检测到通信异常,立即上报异常日志到防火墙管理客户端。

步骤二、管理客户端通知操作员:管理客户端受到异常日志后以红色警报的形式提醒操作员OPC通信出现异常。

步骤三、操作员检测网络硬件故障:操作员根据异常日志检测异常通信的线路,排除硬件故障。

步骤四、操作员重启OPC服务:操作员重新启动OPC服务,并重新配置OPC;

步骤五、检查OPC通信是否恢复正常:操作员检查OPC是否可正常通信,防火墙是否正常防护OPC通信;

现有技术存在明显缺点:防火墙在检测到断线或异常之后只是单纯的将该异常通过日志的形式上传到了防火墙管理客户端,操作员在接收到报警日志之后需依次排查整个OPC通信中是否存在硬件故障并重新手动启动OPC服务、重新手动配置OPC,不仅增加人员工作量,同时由于重启、重配OPC服务,导致OPC通信长时间中断,影响工业正常生产、监控。

因此,现有技术存在缺陷,需要改进。



技术实现要素:

本发明所要解决的技术问题是针对现有技术的不足,提供一种OPC协议通信过程中实现断线重连的方法,包括以下步骤:

步骤102:存储RPC数据包;

步骤104:将接收到的RPC数据包与步骤102中存储的RPC数据包进行比较,若连续三次比较结果相同,证明该方向的通信出现了数据包的连续重传,认定该方向通信产生了通信故障;

步骤106:若OPC服务端方向产生了步骤104所述通信故障或连接OPC服务端的防火墙网口异常则进行步骤108;若OPC客户端方向产生了步骤104所述通信故障或连接OPC客户端的防火墙网口异常则只进行步骤110;若因网口产生的异常,进行步骤112;若因重传产生的通信异常,进行步骤114;

步骤108:开启防火墙OPC代理功能;

步骤110:防火墙上报报警日志,通知操作员防火墙具体某一条OPC通信链路产生通信故障;

步骤112:若因网口产生的异常,则时时检测防火墙网口是否恢复;若恢复进入步骤116;

步骤114:若因重传产生的通信异常,则将OPC客户端的SEQ等数据根据步骤102中存储的OPC客户端的数据包的SEQ数据进行校对修改之后向OPC服务器方向发送,将步骤102中存储的数据包定时向OPC客户端发送,确保OPC通信服务不会断线;

步骤116:若步骤112中网口恢复或步骤114中收到来自OPC服务器的数据响应,则认为通信恢复正常。

所述的方法,其中,所述步骤102包括:存储OPC双向正常通信时间戳最新及SEQ最大的两个方向上的RPC数据包。

所述的方法,其中,所述步骤104包括:将接收到的RPC数据包的序列号、数据长度、应用数据参数与步骤102中存储RPC的数据包进行比较。

所述的方法,其中,所述步骤108还包括:开启防火墙OPC代理功能之后收到任何方向上的RST重置请求,则关闭OPC代理功能。

所述的方法,其中,所述步骤114包括:若因重传产生的通信异常,则将OPC客户端时时请求的数据包的SEQ数据根据步骤102中存储的OPC客户端的数据包的SEQ数据进行校对修改之后向OPC服务器方向发送,将步骤102中存储的OPC服务器数据包定时向OPC客户端发送,确保OPC通信服务不会断线;若收到来自OPC服务器的数据响应,则进入步骤116。

所述的方法,其中,所述步骤116包括:若步骤112中网口恢复或步骤114中收到来自OPC服务器的数据响应,则认为通信恢复正常,OPC代理功能向OPC服务器快速发送请求包,不断累加OPC服务器响应数据包的SEQ数据值,将OPC服务器响应的数据包中的SEQ数据累加到与客户端的请求包中SEQ数据相同之后,关闭OPC代理功能,OPC断线重连完成。

采用上述方案,能够实现在OPC通信过程中出现网口断线或通信异常造成重传时,上传日志到防火墙管理端,通知操作员,开启OPC代理功能,维持住OPC通信连接,时时检测通信的恢复情况,通信恢复时,进行必要的数据校对、恢复,使OPC通信连接自动恢复正常,该方法减少了操作员的大量附加工作,防止了OPC服务的耗时配置、重启以及OPC通信的重新连接,提高了工业设备的运行能力,增加设备产出水平。

附图说明

图1为本发明的实施例流程图。

具体实施方式

以下结合附图和具体实施例,对本发明进行详细说明。

实施例1

本发明所提出的OPC协议通信断线重连方法,可在探测到OPC通信异常时,开启OPC代理功能,确保OPC通信不会断线,在探测到OPC通信恢复正常时,进行必要的通信数据校对,关闭OPC代理功能,使通信恢复正常。

方法主要步骤分两步:

首先,是探测到通信异常的处理。异常断线的判断有两种检测方式:1、防火墙网口异常2、OPC通信数据包出现重传且重传次数超过三次。若出现上述两种情况则认为OPC通信异常,开启OPC代理功能,通过定时发送最后一次正常通信的数据包至OPC客户端,将OPC通信维持在最后一次正常通信的状态,确保通信不会断线。

其次,是探测到通信正常的恢复处理。通信正常的判断有两种检测方式:1、若是因防火墙网口异常引起的断线重连,则在网口异常恢复之后,即通信正常。2、若是因OPC重传导致的通信异常,则通过不断将OPC客户端的请求包发送至OPC服务器的方式进行探测,若受到OPC服务器的恢复包则认为通信恢复正常。上述两种方式出现之后,即认为OPC通信恢复正常,将防火墙到OPC服务器的数据进行快速校对,使防火墙到OPC服务器与OPC客户端到防火墙的TCP数据包的信息吻合,然后关闭OPC代理,OPC通信恢复正常。

本发明方法能解决OPC通信断线之后无法自行重连问题。

如图1所示,本发明所要解决的技术问题是针对现有技术的不足,提供一种OPC协议通信过程中实现断线重连的方法,包括以下步骤:

步骤102:存储RPC数据包;

步骤104:将接收到的RPC数据包与步骤102中存储的RPC数据包进行比较,若连续三次比较结果相同,证明该方向的通信出现了数据包的连续重传,认定该方向通信产生了通信故障;比如:第一次通信客户端发送a数据包,服务器发送b响应包,步骤102把a数据包和b数据包存起来。接下来继续通信,客户端发送c数据包,服务端响应d数据包,c数据包和d数据包即为104中的新收到的数据包,c数据包及d数据包与102中存储的a数据包和b数据包进行比较,如果是重传数据包的话c数据包与a数据包是同一个数据包,d数据包与b数据包是同一个数据包。

步骤106:若OPC服务端方向产生了步骤104所述通信故障或连接OPC服务端的防火墙网口异常则进行步骤108;若OPC客户端方向产生了步骤104所述通信故障或连接OPC客户端的防火墙网口异常则只进行步骤110;若因网口产生的异常,进行步骤112;若因重传产生的通信异常,进行步骤114;

步骤108:开启防火墙OPC代理功能;

步骤110:防火墙上报报警日志,通知操作员防火墙具体某一条OPC通信链路产生通信故障;

步骤112:若因网口产生的异常,则时时检测防火墙网口是否恢复;若恢复进入步骤116;

步骤114:若因重传产生的通信异常,则将OPC客户端的SEQ等数据根据步骤102中存储的OPC客户端的数据包的SEQ数据进行校对修改之后向OPC服务器方向发送,将步骤102中存储的数据包定时向OPC客户端发送,确保OPC通信服务不会断线;具体而言:OPC代理不断的拿存储的包丢给OPC客户端和OPC服务端,对客户端来说代理功能就是服务器,对服务端来说代理功能就是客户端。客户端或服务端一直重复的干一件事,但好处就是一直有事干,这条连接一直不会断。

步骤116:若步骤112中网口恢复或步骤114中收到来自OPC服务器的数据响应,则认为通信恢复正常。

上述方法中,所述步骤102包括:存储OPC双向正常通信时间戳最新及SEQ最大的两个方向上的RPC数据包。

上述方法中,所述步骤104包括:将接收到的RPC数据包的序列号、数据长度、应用数据参数与步骤102中存储RPC的数据包进行比较。

上述方法中,所述步骤108还包括:开启防火墙OPC代理功能之后收到任何方向上的RST重置请求,则关闭OPC代理功能。

上述方法中,所述步骤114包括:若因重传产生的通信异常,则将OPC客户端时时请求的数据包的SEQ数据根据步骤102中存储的OPC客户端的数据包的SEQ数据进行校对修改之后向OPC服务器方向发送,将步骤102中存储的OPC服务器数据包定时向OPC客户端发送,确保OPC通信服务不会断线;若收到来自OPC服务器的数据响应,则进入步骤116。

上述方法中,所述步骤116包括:若步骤112中网口恢复或步骤114中收到来自OPC服务器的数据响应,则认为通信恢复正常,OPC代理功能向OPC服务器快速发送请求包,不断累加OPC服务器响应数据包的SEQ数据值,将OPC服务器响应的数据包中的SEQ数据累加到与客户端的请求包中SEQ数据相同之后,关闭OPC代理功能,OPC断线重连完成。

本发明采用模块化、组件化设计原则,通过OPC数据包存储组件,存储最新一次正常通信的OPC客户端、OPC服务器的通信数据包以备重连时进行数据校对。OPC通信异常检测组件开始工作,该组件能检测到网口的异常或通信是否产生异常而造成数据大量重传,检测到则认为OPC通信产生了异常、断线。OPC通信异常发送组件能将具体的OPC通信故障链路信息以警报日志的形式发送到防火墙的管理客户端,客户端通过红色标识等方式通知操作员出现了通信故障。OPC协议解析模块,时时解析通信数据,既能匹配是否出现通信异常又能在通信出现异常时辅助OPC通信代理组件完成数据校对。OPC通信代理组件,在出现通信异常时开启,等待OPC服务端的响应,维持OPC客户端的连接,待通信恢复正常后通过数据校对,使通信恢复正常状态,OPC断线自动重连完成。

采用上述方案,能够实现在OPC通信过程中出现网口断线或通信异常造成重传时,上传日志到防火墙管理端,通知操作员,开启OPC代理功能,维持住OPC通信连接,时时检测通信的恢复情况,通信恢复时,进行必要的数据校对、恢复,使OPC通信连接自动恢复正常,该方法减少了操作员的大量附加工作,防止了OPC服务的耗时配置、重启以及OPC通信的重新连接,提高了工业设备的运行能力,增加设备产出水平。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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