本發(fā)明屬于工業(yè)防火墻深度防護(hù)技術(shù)領(lǐng)域,尤其涉及的是一種OPC協(xié)議通信過程中實(shí)現(xiàn)斷線重連的方法。
背景技術(shù):
OPC協(xié)議廣泛應(yīng)用于工控環(huán)境,作為數(shù)據(jù)庫獲取生產(chǎn)數(shù)據(jù)的最常用手段,協(xié)議通訊中斷后很多OPC接口軟件會(huì)發(fā)生卡死或重連時(shí)響應(yīng)時(shí)間過長的問題,嚴(yán)重影響生產(chǎn)數(shù)據(jù)傳輸?shù)募皶r(shí)性和易用性。目前工業(yè)防護(hù)墻中沒有針對(duì)OPC通信協(xié)議做斷線重連,僅僅在通信異常的時(shí)候進(jìn)行提示,操作員只能重新配置OPC服務(wù)所需參數(shù)并重新啟動(dòng)OPC服務(wù),進(jìn)行重新連接、通信。
防火墻檢測(cè)到斷線或異常,只是通過日志形式將斷線或異常上傳至防火墻管理客戶端,提示操作員,操作員根據(jù)提示,進(jìn)行OPC服務(wù)重啟。現(xiàn)有方案中處理OPC斷線或異常進(jìn)行如下操作:
步驟一、防火墻檢測(cè)到斷線或異常:防火墻檢測(cè)到網(wǎng)口異?;蛲ㄟ^抓包檢測(cè)到通信異常,立即上報(bào)異常日志到防火墻管理客戶端。
步驟二、管理客戶端通知操作員:管理客戶端受到異常日志后以紅色警報(bào)的形式提醒操作員OPC通信出現(xiàn)異常。
步驟三、操作員檢測(cè)網(wǎng)絡(luò)硬件故障:操作員根據(jù)異常日志檢測(cè)異常通信的線路,排除硬件故障。
步驟四、操作員重啟OPC服務(wù):操作員重新啟動(dòng)OPC服務(wù),并重新配置OPC;
步驟五、檢查OPC通信是否恢復(fù)正常:操作員檢查OPC是否可正常通信,防火墻是否正常防護(hù)OPC通信;
現(xiàn)有技術(shù)存在明顯缺點(diǎn):防火墻在檢測(cè)到斷線或異常之后只是單純的將該異常通過日志的形式上傳到了防火墻管理客戶端,操作員在接收到報(bào)警日志之后需依次排查整個(gè)OPC通信中是否存在硬件故障并重新手動(dòng)啟動(dòng)OPC服務(wù)、重新手動(dòng)配置OPC,不僅增加人員工作量,同時(shí)由于重啟、重配OPC服務(wù),導(dǎo)致OPC通信長時(shí)間中斷,影響工業(yè)正常生產(chǎn)、監(jiān)控。
因此,現(xiàn)有技術(shù)存在缺陷,需要改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種OPC協(xié)議通信過程中實(shí)現(xiàn)斷線重連的方法,包括以下步驟:
步驟102:存儲(chǔ)RPC數(shù)據(jù)包;
步驟104:將接收到的RPC數(shù)據(jù)包與步驟102中存儲(chǔ)的RPC數(shù)據(jù)包進(jìn)行比較,若連續(xù)三次比較結(jié)果相同,證明該方向的通信出現(xiàn)了數(shù)據(jù)包的連續(xù)重傳,認(rèn)定該方向通信產(chǎn)生了通信故障;
步驟106:若OPC服務(wù)端方向產(chǎn)生了步驟104所述通信故障或連接OPC服務(wù)端的防火墻網(wǎng)口異常則進(jìn)行步驟108;若OPC客戶端方向產(chǎn)生了步驟104所述通信故障或連接OPC客戶端的防火墻網(wǎng)口異常則只進(jìn)行步驟110;若因網(wǎng)口產(chǎn)生的異常,進(jìn)行步驟112;若因重傳產(chǎn)生的通信異常,進(jìn)行步驟114;
步驟108:開啟防火墻OPC代理功能;
步驟110:防火墻上報(bào)報(bào)警日志,通知操作員防火墻具體某一條OPC通信鏈路產(chǎn)生通信故障;
步驟112:若因網(wǎng)口產(chǎn)生的異常,則時(shí)時(shí)檢測(cè)防火墻網(wǎng)口是否恢復(fù);若恢復(fù)進(jìn)入步驟116;
步驟114:若因重傳產(chǎn)生的通信異常,則將OPC客戶端的SEQ等數(shù)據(jù)根據(jù)步驟102中存儲(chǔ)的OPC客戶端的數(shù)據(jù)包的SEQ數(shù)據(jù)進(jìn)行校對(duì)修改之后向OPC服務(wù)器方向發(fā)送,將步驟102中存儲(chǔ)的數(shù)據(jù)包定時(shí)向OPC客戶端發(fā)送,確保OPC通信服務(wù)不會(huì)斷線;
步驟116:若步驟112中網(wǎng)口恢復(fù)或步驟114中收到來自O(shè)PC服務(wù)器的數(shù)據(jù)響應(yīng),則認(rèn)為通信恢復(fù)正常。
所述的方法,其中,所述步驟102包括:存儲(chǔ)OPC雙向正常通信時(shí)間戳最新及SEQ最大的兩個(gè)方向上的RPC數(shù)據(jù)包。
所述的方法,其中,所述步驟104包括:將接收到的RPC數(shù)據(jù)包的序列號(hào)、數(shù)據(jù)長度、應(yīng)用數(shù)據(jù)參數(shù)與步驟102中存儲(chǔ)RPC的數(shù)據(jù)包進(jìn)行比較。
所述的方法,其中,所述步驟108還包括:開啟防火墻OPC代理功能之后收到任何方向上的RST重置請(qǐng)求,則關(guān)閉OPC代理功能。
所述的方法,其中,所述步驟114包括:若因重傳產(chǎn)生的通信異常,則將OPC客戶端時(shí)時(shí)請(qǐng)求的數(shù)據(jù)包的SEQ數(shù)據(jù)根據(jù)步驟102中存儲(chǔ)的OPC客戶端的數(shù)據(jù)包的SEQ數(shù)據(jù)進(jìn)行校對(duì)修改之后向OPC服務(wù)器方向發(fā)送,將步驟102中存儲(chǔ)的OPC服務(wù)器數(shù)據(jù)包定時(shí)向OPC客戶端發(fā)送,確保OPC通信服務(wù)不會(huì)斷線;若收到來自O(shè)PC服務(wù)器的數(shù)據(jù)響應(yīng),則進(jìn)入步驟116。
所述的方法,其中,所述步驟116包括:若步驟112中網(wǎng)口恢復(fù)或步驟114中收到來自O(shè)PC服務(wù)器的數(shù)據(jù)響應(yīng),則認(rèn)為通信恢復(fù)正常,OPC代理功能向OPC服務(wù)器快速發(fā)送請(qǐng)求包,不斷累加OPC服務(wù)器響應(yīng)數(shù)據(jù)包的SEQ數(shù)據(jù)值,將OPC服務(wù)器響應(yīng)的數(shù)據(jù)包中的SEQ數(shù)據(jù)累加到與客戶端的請(qǐng)求包中SEQ數(shù)據(jù)相同之后,關(guān)閉OPC代理功能,OPC斷線重連完成。
采用上述方案,能夠?qū)崿F(xiàn)在OPC通信過程中出現(xiàn)網(wǎng)口斷線或通信異常造成重傳時(shí),上傳日志到防火墻管理端,通知操作員,開啟OPC代理功能,維持住OPC通信連接,時(shí)時(shí)檢測(cè)通信的恢復(fù)情況,通信恢復(fù)時(shí),進(jìn)行必要的數(shù)據(jù)校對(duì)、恢復(fù),使OPC通信連接自動(dòng)恢復(fù)正常,該方法減少了操作員的大量附加工作,防止了OPC服務(wù)的耗時(shí)配置、重啟以及OPC通信的重新連接,提高了工業(yè)設(shè)備的運(yùn)行能力,增加設(shè)備產(chǎn)出水平。
附圖說明
圖1為本發(fā)明的實(shí)施例流程圖。
具體實(shí)施方式
以下結(jié)合附圖和具體實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
實(shí)施例1
本發(fā)明所提出的OPC協(xié)議通信斷線重連方法,可在探測(cè)到OPC通信異常時(shí),開啟OPC代理功能,確保OPC通信不會(huì)斷線,在探測(cè)到OPC通信恢復(fù)正常時(shí),進(jìn)行必要的通信數(shù)據(jù)校對(duì),關(guān)閉OPC代理功能,使通信恢復(fù)正常。
方法主要步驟分兩步:
首先,是探測(cè)到通信異常的處理。異常斷線的判斷有兩種檢測(cè)方式:1、防火墻網(wǎng)口異常2、OPC通信數(shù)據(jù)包出現(xiàn)重傳且重傳次數(shù)超過三次。若出現(xiàn)上述兩種情況則認(rèn)為OPC通信異常,開啟OPC代理功能,通過定時(shí)發(fā)送最后一次正常通信的數(shù)據(jù)包至OPC客戶端,將OPC通信維持在最后一次正常通信的狀態(tài),確保通信不會(huì)斷線。
其次,是探測(cè)到通信正常的恢復(fù)處理。通信正常的判斷有兩種檢測(cè)方式:1、若是因防火墻網(wǎng)口異常引起的斷線重連,則在網(wǎng)口異常恢復(fù)之后,即通信正常。2、若是因OPC重傳導(dǎo)致的通信異常,則通過不斷將OPC客戶端的請(qǐng)求包發(fā)送至OPC服務(wù)器的方式進(jìn)行探測(cè),若受到OPC服務(wù)器的恢復(fù)包則認(rèn)為通信恢復(fù)正常。上述兩種方式出現(xiàn)之后,即認(rèn)為OPC通信恢復(fù)正常,將防火墻到OPC服務(wù)器的數(shù)據(jù)進(jìn)行快速校對(duì),使防火墻到OPC服務(wù)器與OPC客戶端到防火墻的TCP數(shù)據(jù)包的信息吻合,然后關(guān)閉OPC代理,OPC通信恢復(fù)正常。
本發(fā)明方法能解決OPC通信斷線之后無法自行重連問題。
如圖1所示,本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種OPC協(xié)議通信過程中實(shí)現(xiàn)斷線重連的方法,包括以下步驟:
步驟102:存儲(chǔ)RPC數(shù)據(jù)包;
步驟104:將接收到的RPC數(shù)據(jù)包與步驟102中存儲(chǔ)的RPC數(shù)據(jù)包進(jìn)行比較,若連續(xù)三次比較結(jié)果相同,證明該方向的通信出現(xiàn)了數(shù)據(jù)包的連續(xù)重傳,認(rèn)定該方向通信產(chǎn)生了通信故障;比如:第一次通信客戶端發(fā)送a數(shù)據(jù)包,服務(wù)器發(fā)送b響應(yīng)包,步驟102把a(bǔ)數(shù)據(jù)包和b數(shù)據(jù)包存起來。接下來繼續(xù)通信,客戶端發(fā)送c數(shù)據(jù)包,服務(wù)端響應(yīng)d數(shù)據(jù)包,c數(shù)據(jù)包和d數(shù)據(jù)包即為104中的新收到的數(shù)據(jù)包,c數(shù)據(jù)包及d數(shù)據(jù)包與102中存儲(chǔ)的a數(shù)據(jù)包和b數(shù)據(jù)包進(jìn)行比較,如果是重傳數(shù)據(jù)包的話c數(shù)據(jù)包與a數(shù)據(jù)包是同一個(gè)數(shù)據(jù)包,d數(shù)據(jù)包與b數(shù)據(jù)包是同一個(gè)數(shù)據(jù)包。
步驟106:若OPC服務(wù)端方向產(chǎn)生了步驟104所述通信故障或連接OPC服務(wù)端的防火墻網(wǎng)口異常則進(jìn)行步驟108;若OPC客戶端方向產(chǎn)生了步驟104所述通信故障或連接OPC客戶端的防火墻網(wǎng)口異常則只進(jìn)行步驟110;若因網(wǎng)口產(chǎn)生的異常,進(jìn)行步驟112;若因重傳產(chǎn)生的通信異常,進(jìn)行步驟114;
步驟108:開啟防火墻OPC代理功能;
步驟110:防火墻上報(bào)報(bào)警日志,通知操作員防火墻具體某一條OPC通信鏈路產(chǎn)生通信故障;
步驟112:若因網(wǎng)口產(chǎn)生的異常,則時(shí)時(shí)檢測(cè)防火墻網(wǎng)口是否恢復(fù);若恢復(fù)進(jìn)入步驟116;
步驟114:若因重傳產(chǎn)生的通信異常,則將OPC客戶端的SEQ等數(shù)據(jù)根據(jù)步驟102中存儲(chǔ)的OPC客戶端的數(shù)據(jù)包的SEQ數(shù)據(jù)進(jìn)行校對(duì)修改之后向OPC服務(wù)器方向發(fā)送,將步驟102中存儲(chǔ)的數(shù)據(jù)包定時(shí)向OPC客戶端發(fā)送,確保OPC通信服務(wù)不會(huì)斷線;具體而言:OPC代理不斷的拿存儲(chǔ)的包丟給OPC客戶端和OPC服務(wù)端,對(duì)客戶端來說代理功能就是服務(wù)器,對(duì)服務(wù)端來說代理功能就是客戶端??蛻舳嘶蚍?wù)端一直重復(fù)的干一件事,但好處就是一直有事干,這條連接一直不會(huì)斷。
步驟116:若步驟112中網(wǎng)口恢復(fù)或步驟114中收到來自O(shè)PC服務(wù)器的數(shù)據(jù)響應(yīng),則認(rèn)為通信恢復(fù)正常。
上述方法中,所述步驟102包括:存儲(chǔ)OPC雙向正常通信時(shí)間戳最新及SEQ最大的兩個(gè)方向上的RPC數(shù)據(jù)包。
上述方法中,所述步驟104包括:將接收到的RPC數(shù)據(jù)包的序列號(hào)、數(shù)據(jù)長度、應(yīng)用數(shù)據(jù)參數(shù)與步驟102中存儲(chǔ)RPC的數(shù)據(jù)包進(jìn)行比較。
上述方法中,所述步驟108還包括:開啟防火墻OPC代理功能之后收到任何方向上的RST重置請(qǐng)求,則關(guān)閉OPC代理功能。
上述方法中,所述步驟114包括:若因重傳產(chǎn)生的通信異常,則將OPC客戶端時(shí)時(shí)請(qǐng)求的數(shù)據(jù)包的SEQ數(shù)據(jù)根據(jù)步驟102中存儲(chǔ)的OPC客戶端的數(shù)據(jù)包的SEQ數(shù)據(jù)進(jìn)行校對(duì)修改之后向OPC服務(wù)器方向發(fā)送,將步驟102中存儲(chǔ)的OPC服務(wù)器數(shù)據(jù)包定時(shí)向OPC客戶端發(fā)送,確保OPC通信服務(wù)不會(huì)斷線;若收到來自O(shè)PC服務(wù)器的數(shù)據(jù)響應(yīng),則進(jìn)入步驟116。
上述方法中,所述步驟116包括:若步驟112中網(wǎng)口恢復(fù)或步驟114中收到來自O(shè)PC服務(wù)器的數(shù)據(jù)響應(yīng),則認(rèn)為通信恢復(fù)正常,OPC代理功能向OPC服務(wù)器快速發(fā)送請(qǐng)求包,不斷累加OPC服務(wù)器響應(yīng)數(shù)據(jù)包的SEQ數(shù)據(jù)值,將OPC服務(wù)器響應(yīng)的數(shù)據(jù)包中的SEQ數(shù)據(jù)累加到與客戶端的請(qǐng)求包中SEQ數(shù)據(jù)相同之后,關(guān)閉OPC代理功能,OPC斷線重連完成。
本發(fā)明采用模塊化、組件化設(shè)計(jì)原則,通過OPC數(shù)據(jù)包存儲(chǔ)組件,存儲(chǔ)最新一次正常通信的OPC客戶端、OPC服務(wù)器的通信數(shù)據(jù)包以備重連時(shí)進(jìn)行數(shù)據(jù)校對(duì)。OPC通信異常檢測(cè)組件開始工作,該組件能檢測(cè)到網(wǎng)口的異?;蛲ㄐ攀欠癞a(chǎn)生異常而造成數(shù)據(jù)大量重傳,檢測(cè)到則認(rèn)為OPC通信產(chǎn)生了異常、斷線。OPC通信異常發(fā)送組件能將具體的OPC通信故障鏈路信息以警報(bào)日志的形式發(fā)送到防火墻的管理客戶端,客戶端通過紅色標(biāo)識(shí)等方式通知操作員出現(xiàn)了通信故障。OPC協(xié)議解析模塊,時(shí)時(shí)解析通信數(shù)據(jù),既能匹配是否出現(xiàn)通信異常又能在通信出現(xiàn)異常時(shí)輔助OPC通信代理組件完成數(shù)據(jù)校對(duì)。OPC通信代理組件,在出現(xiàn)通信異常時(shí)開啟,等待OPC服務(wù)端的響應(yīng),維持OPC客戶端的連接,待通信恢復(fù)正常后通過數(shù)據(jù)校對(duì),使通信恢復(fù)正常狀態(tài),OPC斷線自動(dòng)重連完成。
采用上述方案,能夠?qū)崿F(xiàn)在OPC通信過程中出現(xiàn)網(wǎng)口斷線或通信異常造成重傳時(shí),上傳日志到防火墻管理端,通知操作員,開啟OPC代理功能,維持住OPC通信連接,時(shí)時(shí)檢測(cè)通信的恢復(fù)情況,通信恢復(fù)時(shí),進(jìn)行必要的數(shù)據(jù)校對(duì)、恢復(fù),使OPC通信連接自動(dòng)恢復(fù)正常,該方法減少了操作員的大量附加工作,防止了OPC服務(wù)的耗時(shí)配置、重啟以及OPC通信的重新連接,提高了工業(yè)設(shè)備的運(yùn)行能力,增加設(shè)備產(chǎn)出水平。
應(yīng)當(dāng)理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。