System.ArgumentOutOfRangeException: 索引和長(zhǎng)度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)涉及通信,尤其涉及一種數(shù)據(jù)轉(zhuǎn)發(fā)方法、裝置、設(shè)備和存儲(chǔ)介質(zhì)。
技術(shù)介紹
1、modbus協(xié)議是一種允許可編程邏輯控制器(programmable?logic?controller,plc)和計(jì)算機(jī)之間進(jìn)行數(shù)據(jù)交換的通信方式。電子設(shè)備可以使用modbus協(xié)議通過串行線路交換信息。modbus協(xié)議已被廣泛接受并廣泛用于建筑管理系統(tǒng)(building?managementsystem,bms)和工業(yè)自動(dòng)化系統(tǒng)(industrial?automation?system,ias)。它的易用性,可靠性以及它是開源的,并且可以在任何設(shè)備或應(yīng)用程序中免費(fèi)使用。modbus通常用于多個(gè)儀器和控制設(shè)備將信號(hào)傳輸?shù)街醒肟刂破骰蛳到y(tǒng)以收集和分析數(shù)據(jù)的情況。工業(yè)自動(dòng)化和監(jiān)督控制和數(shù)據(jù)采集(supervisory?control?and?data?acquisition,scada)系統(tǒng)通常采用modbus協(xié)議。
2、隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,特別是云計(jì)算和大數(shù)據(jù)的普及,業(yè)界普遍使用以太網(wǎng)、光纖和無線等網(wǎng)絡(luò)方式傳遞數(shù)據(jù),但軌道交通、工業(yè)監(jiān)控等傳統(tǒng)領(lǐng)域,還有大量使用modbus協(xié)議的設(shè)備,因此需要在串行設(shè)備與網(wǎng)絡(luò)接口之間相互轉(zhuǎn)發(fā)modbus協(xié)議數(shù)據(jù)的裝置(下文簡(jiǎn)稱“網(wǎng)關(guān)”,特指此類在網(wǎng)絡(luò)與串行接口設(shè)備之間轉(zhuǎn)發(fā)modbus數(shù)據(jù)的網(wǎng)關(guān))。
3、主設(shè)備一般為工控機(jī)、服務(wù)器等高性能的計(jì)算設(shè)備,通過以太網(wǎng)+modbus協(xié)議獲取從設(shè)備的狀態(tài)信息和下發(fā)控制命令。從設(shè)備為工業(yè)設(shè)備或傳感器,接收主端發(fā)來的查詢或控制命令,并響應(yīng)這些命令,對(duì)其進(jìn)行回復(fù)。
4、現(xiàn)有的使用最廣泛的技術(shù),就是絕大多數(shù)“串口服務(wù)器”、“串口通信網(wǎng)關(guān)”的實(shí)現(xiàn)方式,即實(shí)現(xiàn)一個(gè)隊(duì)列,將網(wǎng)關(guān)的網(wǎng)絡(luò)接口接收到的數(shù)據(jù)由串行接口端發(fā)出,串行接口接收到的數(shù)據(jù),由網(wǎng)絡(luò)接口發(fā)出。如果網(wǎng)絡(luò)接口接收到的數(shù)據(jù)帶寬高于串行接口的發(fā)送帶寬,則放入隊(duì)列中緩沖。如果隊(duì)列已滿則會(huì)丟棄無法容納的數(shù)據(jù)。也即是說,現(xiàn)有技術(shù)中由于串行設(shè)備通信速率極低,導(dǎo)致網(wǎng)關(guān)成為數(shù)據(jù)的“漏斗”,通過網(wǎng)絡(luò)接口發(fā)來的數(shù)據(jù)量若超過串行設(shè)備的傳輸能力,數(shù)據(jù)到達(dá)網(wǎng)關(guān)后無法及時(shí)轉(zhuǎn)發(fā)到串行設(shè)備,則容易造成數(shù)據(jù)堵塞,從而導(dǎo)致數(shù)據(jù)被丟棄。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)現(xiàn)有技術(shù)中存在的上述缺陷,本專利技術(shù)提供一種數(shù)據(jù)轉(zhuǎn)發(fā)方法、裝置、設(shè)備和存儲(chǔ)介質(zhì),可以避免數(shù)據(jù)被丟棄。
2、第一方面,本專利技術(shù)提供一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,應(yīng)用于數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備包括網(wǎng)絡(luò)接口端和串行收發(fā)接口端;所述方法包括:
3、利用所述網(wǎng)絡(luò)接口端,確定主設(shè)備發(fā)送的第一數(shù)據(jù)的數(shù)據(jù)類型;所述數(shù)據(jù)類型包括控制命令或查詢請(qǐng)求,所述控制命令的轉(zhuǎn)發(fā)優(yōu)先級(jí)高于所述查詢請(qǐng)求的轉(zhuǎn)發(fā)優(yōu)先級(jí);
4、利用所述網(wǎng)絡(luò)接口端,將所述第一數(shù)據(jù)提交至所述串行收發(fā)接口端的數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中;
5、利用所述串行收發(fā)接口端,根據(jù)所述第一數(shù)據(jù)的數(shù)據(jù)類型將所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中的所述第一數(shù)據(jù)發(fā)送給從設(shè)備。
6、根據(jù)本專利技術(shù)提供的一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,所述根據(jù)所述第一數(shù)據(jù)的數(shù)據(jù)類型將所述第一數(shù)據(jù)提交至所述串行收發(fā)接口端的數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中,包括:
7、在所述第一數(shù)據(jù)為所述控制命令的情況下,將所述控制命令提交至所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中;
8、在所述第一數(shù)據(jù)為所述查詢請(qǐng)求的情況下,根據(jù)所述查詢請(qǐng)求查詢所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備的緩存中是否有待查詢的數(shù)據(jù);所述查詢請(qǐng)求中包含所述待查詢的數(shù)據(jù)對(duì)應(yīng)的從設(shè)備地址、功能碼、查詢起始地址、查詢數(shù)量,以及循環(huán)冗余校驗(yàn)碼,所述查詢起始地址用于確定查詢的寄存器的地址,所述從設(shè)備包含至少一個(gè)寄存器,所述寄存器用于存儲(chǔ)和傳遞數(shù)據(jù);
9、在所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備的緩存中沒有所述待查詢的數(shù)據(jù)的情況下,將緩存未命中的查詢請(qǐng)求提交至所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中;
10、在所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備的緩存中有所述待查詢的數(shù)據(jù)的情況下,根據(jù)所述待查詢的數(shù)據(jù)對(duì)應(yīng)的緩存時(shí)間戳,確定所述待查詢的數(shù)據(jù)是否在有效期內(nèi);
11、在所述待查詢的數(shù)據(jù)不在有效期內(nèi)的情況下,將緩存已失效的查詢請(qǐng)求提交至所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中。
12、根據(jù)本專利技術(shù)提供的一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,所述緩存未命中的查詢請(qǐng)求用于供所述從設(shè)備根據(jù)所述緩存未命中的查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,并將所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)返回給所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備;所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)包括所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的查詢結(jié)果以及所述查詢結(jié)果對(duì)應(yīng)的緩存時(shí)間戳;所述緩存已失效的查詢請(qǐng)求用于供所述從設(shè)備根據(jù)所述緩存已失效的查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,并將所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)返回給所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備;所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)包括所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的查詢結(jié)果以及所述查詢結(jié)果對(duì)應(yīng)的緩存時(shí)間戳。
13、根據(jù)本專利技術(shù)提供的一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,所述控制命令的轉(zhuǎn)發(fā)優(yōu)先級(jí)高于所述緩存未命中的查詢請(qǐng)求的轉(zhuǎn)發(fā)優(yōu)先級(jí),所述緩存未命中的查詢請(qǐng)求的轉(zhuǎn)發(fā)優(yōu)先級(jí)高于所述緩存已失效的查詢請(qǐng)求;所述根據(jù)所述第一數(shù)據(jù)的數(shù)據(jù)類型將所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中的所述第一數(shù)據(jù)發(fā)送給從設(shè)備,包括:
14、判斷所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中是否有控制命令;
15、在所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中有所述控制命令的情況下,將所述控制命令發(fā)送給所述從設(shè)備;
16、在確定所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中沒有所述控制命令的情況下,判斷所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中是否有所述緩存未命中的查詢請(qǐng)求;
17、在所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中有所述緩存未命中的查詢請(qǐng)求,將所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中所述緩存未命中的查詢請(qǐng)求發(fā)送給所述從設(shè)備;
18、在所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中有所述緩存未命中的查詢請(qǐng)求,將所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中所述緩存已失效的查詢請(qǐng)求發(fā)送給所述從設(shè)備。
19、根據(jù)本專利技術(shù)提供的一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,所述方法還包括:
20、響應(yīng)于接收所述第二數(shù)據(jù),在接收到所述第二數(shù)據(jù)的預(yù)設(shè)數(shù)量個(gè)字節(jié)的情況下,對(duì)所述第二數(shù)據(jù)的預(yù)設(shè)數(shù)量個(gè)字節(jié)進(jìn)行解析,并根據(jù)解析結(jié)果和報(bào)文合法的條件確定所述第二數(shù)據(jù)是否為合法報(bào)文;其中,所述報(bào)文合法的條件包括以下至少一項(xiàng):所述第二數(shù)據(jù)對(duì)應(yīng)的設(shè)備標(biāo)識(shí)、功能碼與所述查詢請(qǐng)求中的設(shè)備標(biāo)識(shí)、功能碼相同;所述第二數(shù)據(jù)對(duì)應(yīng)的循環(huán)冗余校驗(yàn)碼與所述查詢請(qǐng)求中的循環(huán)冗余校驗(yàn)碼相同;以及所述第二數(shù)據(jù)的長(zhǎng)度符合預(yù)設(shè)的閾值;
21、在確定所述第二數(shù)據(jù)為合法報(bào)文的情況下,將所述第二數(shù)據(jù)存儲(chǔ)至所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備中。
22、根據(jù)本專利技術(shù)提供的一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,所述第一數(shù)據(jù)包括多個(gè)相鄰的查詢請(qǐng)求;所述根據(jù)所述第一數(shù)據(jù)的數(shù)據(jù)類型將所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中的所述第一數(shù)據(jù)發(fā)送給從設(shè)備,包括:
23、將所述多個(gè)相鄰的查詢請(qǐng)求進(jìn)行合并,得到合并后的查詢請(qǐng)求;
24、將所述合并后的查詢請(qǐng)求發(fā)送給所述從設(shè)備。
25、第二方面,本專利技術(shù)還提供一種數(shù)據(jù)轉(zhuǎn)發(fā)裝置,應(yīng)用于數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備包括網(wǎng)絡(luò)接口本文檔來自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
1.一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,應(yīng)用于數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備包括網(wǎng)絡(luò)接口端和串行收發(fā)接口端;所述方法包括:
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述將所述第一數(shù)據(jù)提交至所述串行收發(fā)接口端的數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中,包括:
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述緩存未命中的查詢請(qǐng)求用于供所述從設(shè)備根據(jù)所述緩存未命中的查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,并將所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)返回給所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備;所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)包括所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的查詢結(jié)果以及所述查詢結(jié)果對(duì)應(yīng)的緩存時(shí)間戳;所述緩存已失效的查詢請(qǐng)求用于供所述從設(shè)備根據(jù)所述緩存已失效的查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,并將所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)返回給所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備;所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)包括所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的查詢結(jié)果以及所述查詢結(jié)果對(duì)應(yīng)的緩存時(shí)間戳。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述控制命令的轉(zhuǎn)發(fā)優(yōu)先級(jí)高于所述緩存未命中的查詢請(qǐng)求的轉(zhuǎn)發(fā)優(yōu)先級(jí),所述緩存未命中的查詢請(qǐng)求的轉(zhuǎn)發(fā)
5.根據(jù)權(quán)利要求3所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述方法還包括:
6.根據(jù)權(quán)利要求1-5任一項(xiàng)所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述第一數(shù)據(jù)包括多個(gè)相鄰的查詢請(qǐng)求;所述根據(jù)所述第一數(shù)據(jù)的數(shù)據(jù)類型將所述數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中的所述第一數(shù)據(jù)發(fā)送給從設(shè)備,包括:
7.一種數(shù)據(jù)轉(zhuǎn)發(fā)裝置,其特征在于,應(yīng)用于數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備包括網(wǎng)絡(luò)接口端和串行收發(fā)接口端;所述裝置包括:
8.一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)如權(quán)利要求1至6任一項(xiàng)所述數(shù)據(jù)轉(zhuǎn)發(fā)方法。
9.一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6任一項(xiàng)所述數(shù)據(jù)轉(zhuǎn)發(fā)方法。
10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6任一項(xiàng)所述數(shù)據(jù)轉(zhuǎn)發(fā)方法。
...【技術(shù)特征摘要】
1.一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,應(yīng)用于數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備包括網(wǎng)絡(luò)接口端和串行收發(fā)接口端;所述方法包括:
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述將所述第一數(shù)據(jù)提交至所述串行收發(fā)接口端的數(shù)據(jù)轉(zhuǎn)發(fā)隊(duì)列中,包括:
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述緩存未命中的查詢請(qǐng)求用于供所述從設(shè)備根據(jù)所述緩存未命中的查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,并將所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)返回給所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備;所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)包括所述緩存未命中的查詢請(qǐng)求對(duì)應(yīng)的查詢結(jié)果以及所述查詢結(jié)果對(duì)應(yīng)的緩存時(shí)間戳;所述緩存已失效的查詢請(qǐng)求用于供所述從設(shè)備根據(jù)所述緩存已失效的查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,并將所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)返回給所述數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備;所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的第二數(shù)據(jù)包括所述緩存已失效的查詢請(qǐng)求對(duì)應(yīng)的查詢結(jié)果以及所述查詢結(jié)果對(duì)應(yīng)的緩存時(shí)間戳。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)轉(zhuǎn)發(fā)方法,其特征在于,所述控制命令的轉(zhuǎn)發(fā)優(yōu)先級(jí)高于所述緩存未命中的查詢請(qǐng)求的轉(zhuǎn)發(fā)優(yōu)先級(jí),所述緩存未命中的查詢請(qǐng)求的轉(zhuǎn)發(fā)優(yōu)先級(jí)...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:程明,吳正中,張輝,弓旭德,裴華磊,湯小梁,王曉東,
申請(qǐng)(專利權(quán))人:北京城建智控科技股份有限公司,
類型:發(fā)明
國(guó)別省市:
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。