欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于iec104規(guī)約的非阻塞式通信方法及系統(tǒng)的制作方法

文檔序號(hào):7867633閱讀:633來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):基于iec104規(guī)約的非阻塞式通信方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)通訊領(lǐng)域,特別涉及一種基于IEC104規(guī)約的非阻塞式通信方法及系統(tǒng)。
背景技術(shù)
隨著近年來(lái)電力系統(tǒng)總?cè)萘康牟粩嘣黾?、網(wǎng)絡(luò)結(jié)構(gòu)的不斷擴(kuò)大,電網(wǎng)的動(dòng)態(tài)穩(wěn)定性要求更加突出,而智能電網(wǎng)技術(shù)的發(fā)展,要求電力系統(tǒng)能夠?qū)崟r(shí)掌握運(yùn)行狀態(tài),及時(shí)發(fā)現(xiàn)和隱患和故障,這對(duì)電力系統(tǒng)實(shí)時(shí)動(dòng)態(tài)信息的測(cè)量提出了要求。同時(shí),在智能電網(wǎng)的建設(shè)中,需要大量接入分布式能源并形成微網(wǎng)在分布式能源和微網(wǎng)大量接入的情況下,配電網(wǎng)量測(cè)節(jié)點(diǎn)數(shù)量將大量增加,這將會(huì)造成通信網(wǎng)絡(luò)中存在大量實(shí)時(shí)數(shù)據(jù)?,F(xiàn)有104規(guī)約普遍采用阻塞式通信實(shí)現(xiàn),并且采取輪詢(xún)的應(yīng)答式通信方式,當(dāng)進(jìn)行一次總召喚時(shí),各個(gè)子站依次上傳數(shù)據(jù),主站需要依次接收并解析數(shù)據(jù)。在阻塞式通信下,主站需要對(duì)每一個(gè)線程進(jìn)行定期的查詢(xún),當(dāng)沒(méi)有數(shù)據(jù)上傳時(shí),將線程掛起,轉(zhuǎn)而查詢(xún)其他線程?,F(xiàn)有技術(shù)存在的缺點(diǎn)如下:(I)由于采用總召喚后再按順序?qū)?shù)據(jù)進(jìn)行傳輸,因此阻塞式的通信方式效率較低。(2)當(dāng)子站數(shù)量較多,數(shù)據(jù)量較大的情況下,大量的線程會(huì)占用很多內(nèi)存空間。(3)線程的創(chuàng)建、銷(xiāo)毀以及切換會(huì)占用大量的CPU資源導(dǎo)致程序效率較低,并造成數(shù)據(jù)的丟失或者是延遲。

發(fā)明內(nèi)容
本發(fā)明的目的旨在至少解決上述的技術(shù)缺陷之一。為達(dá)到上述目的,本發(fā)明一方面的實(shí)施例提出一種基于IEC104規(guī)約的非阻塞式通信方法,包括以下步驟:s1:在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,所述通訊框架提供ChannelConnected方法接口和MessageReceived方法接口 ;S2:通過(guò)具體實(shí)現(xiàn)ChannelConnected方法,并利用其監(jiān)聽(tīng)所述主站和子站的數(shù)據(jù)傳輸端口 ;S3:通過(guò)具體實(shí)現(xiàn)MessageReceived方法,當(dāng)所述數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)所實(shí)現(xiàn)的方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析;以及S4:根據(jù)所述解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。根據(jù)本發(fā)明實(shí)施例的方法,通過(guò)采用線程池和線程管理器以及框架所提供的框架對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行調(diào)度、解析實(shí)現(xiàn)非阻塞通訊,用較少線程同時(shí)處理多個(gè)客戶(hù)端連接,大幅節(jié)省了內(nèi)存資源,提高了效率,具有更高的可靠性。本發(fā)明的一個(gè)實(shí)施例中,所述方法還包括:S5:當(dāng)數(shù)據(jù)傳輸狀態(tài)發(fā)生異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。本發(fā)明的一個(gè)實(shí)施例中,所述步驟SI進(jìn)一步包括:Sll:在主站和子站創(chuàng)建服務(wù)端;S12:在所述主站和子站的服務(wù)端創(chuàng)建連接通道池;S13:在所述連接通道池中創(chuàng)建線程管理器和線程池,其中,所述線程管理器對(duì)所述線程池進(jìn)行管理;以及S14:在所述線程池創(chuàng)建處理器,其中,所述處理器提供MessageReceived方法接口和ChannelConnected方法接口,并對(duì)所述ChannelConnected方法接口進(jìn)行實(shí)現(xiàn)。。本發(fā)明的一個(gè)實(shí)施例中,所述步驟S3具體包括:S31:MessageReceived方法監(jiān)測(cè)到接收到的子站數(shù)據(jù)后,對(duì)其方法進(jìn)行解析確定所述數(shù)據(jù)幀的格式,其中,所述格式包括U幀、S幀和I幀;S32:當(dāng)所述數(shù)據(jù)幀為I幀時(shí)判斷數(shù)據(jù)類(lèi)型,并所述根據(jù)數(shù)據(jù)的類(lèi)型確定每個(gè)數(shù)據(jù)單元中的點(diǎn)位及數(shù)據(jù);S33:當(dāng)所述數(shù)據(jù)幀為S幀時(shí)直接進(jìn)入發(fā)送環(huán)節(jié);以及S34:當(dāng)所述數(shù)據(jù)幀為U幀時(shí)改變發(fā)送狀態(tài),并進(jìn)入發(fā)送環(huán)節(jié)。本發(fā)明的一個(gè)實(shí)施例中,所述步驟S5進(jìn)一步包括:S51:在數(shù)據(jù)傳輸過(guò)程中記錄接收到數(shù)據(jù)幀后所經(jīng)過(guò)的時(shí)間;S52:當(dāng)所述時(shí)間超過(guò)預(yù)設(shè)時(shí)間是將發(fā)送狀態(tài)修改為發(fā)送檢測(cè)幀;以及S53:當(dāng)所述檢測(cè)幀的狀態(tài)異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。為達(dá)到上述目的,本發(fā)明的實(shí)施例另一方面提出一種基于IEC104規(guī)約的非阻塞式通信系統(tǒng),包括:框架模塊,用于在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,所述通訊框架提供ChannelConnected方法接口和MessageReceived方法接口 ;監(jiān)聽(tīng)模塊,用于通過(guò)具體實(shí)現(xiàn)ChannelConnected方法,并利用其監(jiān)聽(tīng)所述主站和子站的數(shù)據(jù)傳輸端口 ;解析模塊,用于通過(guò)具體實(shí)現(xiàn)MessageReceived方法,當(dāng)所述數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)所實(shí)現(xiàn)的方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析;以及發(fā)送模塊,用于根據(jù)所述解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。根據(jù)本發(fā)明實(shí)施例的系統(tǒng),通過(guò)采用線程池和線程管理器以及框架所提供的框架對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行調(diào)度、解析實(shí)現(xiàn)非阻塞通訊,用較少線程同時(shí)處理多個(gè)客戶(hù)端連接,大幅節(jié)省了內(nèi)存資源,提高了效率,具有更高的可靠性。本發(fā)明的一個(gè)實(shí)施例中,所述系統(tǒng)還包括:重發(fā)模塊,用于當(dāng)數(shù)據(jù)傳輸狀態(tài)發(fā)生異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。本發(fā)明的一個(gè)實(shí)施例中,所述框架模塊具體包括:第一創(chuàng)建單元,用于在主站和子站創(chuàng)建服務(wù)端;第二創(chuàng)建單元,用于在所述主站和子站的服務(wù)端創(chuàng)建連接通道池;第三創(chuàng)建單元,用于在所述連接通道池中創(chuàng)建線程管理器和線程池,其中,所述線程管理器對(duì)所述線程池進(jìn)行管理;以及第四創(chuàng)建單元,用于在所述線程池創(chuàng)建處理器,其中,所述處理器提供 MessageReceived 方法接口和 ChannelConnected 方法接 口,并對(duì)所述 ChannelConnected方法接口進(jìn)行實(shí)現(xiàn)。本發(fā)明的一個(gè)實(shí)施例中,所述解析模塊具體包括:第一確定單元,用于MessageReceived方法監(jiān)測(cè)到接收到的子站數(shù)據(jù)后,對(duì)其方法進(jìn)行解析確定所述數(shù)據(jù)幀的格式,其中,所述格式包括U幀、S幀和I幀;第二確定單元,用于當(dāng)所述數(shù)據(jù)幀為I幀時(shí)判斷數(shù)據(jù)類(lèi)型,并所述根據(jù)數(shù)據(jù)的類(lèi)型確定每個(gè)數(shù)據(jù)單元中的點(diǎn)位及數(shù)據(jù);第一處理單元,用于當(dāng)所述數(shù)據(jù)幀為S幀時(shí)直接進(jìn)入發(fā)送環(huán)節(jié);以及第二處理單元,用于當(dāng)所述數(shù)據(jù)幀為U幀時(shí)改變發(fā)送狀態(tài),并進(jìn)入發(fā)送環(huán)節(jié)。本發(fā)明的一個(gè)實(shí)施例中,所述重發(fā)模塊具體包括:記錄單元,用于在數(shù)據(jù)傳輸過(guò)程中記錄接收到數(shù)據(jù)幀后所經(jīng)過(guò)的時(shí)間;修改單元,用于當(dāng)所述時(shí)間超過(guò)預(yù)設(shè)時(shí)間是將發(fā)送狀態(tài)修改為發(fā)送檢測(cè)幀;以及傳輸單元,用于當(dāng)所述檢測(cè)幀的狀態(tài)異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。
本發(fā)明的一個(gè)實(shí)施例中,所述發(fā)送模塊具體包括:記錄單元,用于在數(shù)據(jù)傳輸過(guò)程中記錄接收到數(shù)據(jù)幀后所經(jīng)過(guò)的時(shí)間;修改單元,用于當(dāng)所述時(shí)間超過(guò)預(yù)設(shè)時(shí)間是將發(fā)送狀態(tài)修改為發(fā)送檢測(cè)幀;以及傳輸單元,用于當(dāng)所述檢測(cè)幀的狀態(tài)異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。


本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:圖1為根據(jù)本發(fā)明一個(gè)實(shí)施例的基于IEC104規(guī)約的非阻塞式通信方法的流程圖;圖2為根據(jù)本發(fā)明另一個(gè)實(shí)施例的基于IEC104規(guī)約的非阻塞式通信方法的流程圖;圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的框架模塊的框架圖;圖4為根據(jù)本發(fā)明一個(gè)實(shí)施例的解析模塊的框架圖;圖5為根據(jù)本發(fā)明另一個(gè)實(shí)施例的基于IEC104規(guī)約的非阻塞式通信系統(tǒng)的框架圖;以及圖6為本發(fā)明一個(gè)實(shí)施例的單子站連接壓力測(cè)試結(jié)果數(shù)據(jù)圖。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的實(shí)施例,實(shí)施例的示例在附圖中示出,其中自始至終相同或類(lèi)似的標(biāo)號(hào)表示相同或類(lèi)似的元件或具有相同或類(lèi)似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。圖1為本發(fā)明實(shí)施例的基于IEC104規(guī)約的非阻塞式通信方法的流程圖。如圖1所示,根據(jù)本發(fā)明實(shí)施例的基于IEC104規(guī)約的非阻塞式通信方法,包括以下步驟:步驟SlOl,在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,所述通訊框架提供 ChannelConnected 方法接口和 MessageReceived 方法接 口。具體地,首先在主站和子站創(chuàng)建服務(wù)端。利用Netty架包,使得項(xiàng)目能夠利用Netty架構(gòu)編寫(xiě)104規(guī)約程序。并創(chuàng)建通信服務(wù)端,建立服務(wù)端對(duì)象,其中,服務(wù)端對(duì)象類(lèi)繼承 Netty 提供的 SimpleServer 類(lèi)。然后,在主站和子站的服務(wù)端創(chuàng)建多個(gè)連接通道池。初始化104規(guī)約服務(wù)端。在服務(wù)端創(chuàng)建Netty所提供的連接通道池對(duì)象,以存儲(chǔ)和管理與主站連接的多個(gè)通道。由Netty的功能和特性決定,若有多個(gè)子站與主站連接,則自動(dòng)將其都添加到連接通道池中,進(jìn)行調(diào)
度和管理。之后在多個(gè)連接通道池的每個(gè)連接通道池創(chuàng)建線程管理器和線程池,其中,線程管理器對(duì)線程池進(jìn)行管理。最后在線程池創(chuàng)建處理器,其中,處理器提供MessageReceived方法接口和ChannelConnected方法接口,并對(duì)所述ChannelConnected方法接口進(jìn)行實(shí)現(xiàn)。在服務(wù)端程序中創(chuàng)建Netty所提供的通信連接對(duì)象,并在其中創(chuàng)建處理器對(duì)象,實(shí)現(xiàn)Netty所提供的SimpleChannelHandler類(lèi),使得處理器對(duì)象能夠負(fù)責(zé)實(shí)現(xiàn)IO端口的事件。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)有多個(gè)客戶(hù)連接時(shí),并不直接為他們分配線程,而是通過(guò)線程管理器來(lái)進(jìn)行管理和調(diào)度。僅當(dāng)某連接接收到數(shù)據(jù)時(shí),線程管理器才調(diào)用該連接所對(duì)應(yīng)的方法。每個(gè)連接對(duì)應(yīng)于線程池中的一個(gè)對(duì)象,由線程管理器進(jìn)行管理,而不需要編程實(shí)現(xiàn)線程的切換和查詢(xún)。步驟S102,通過(guò)具體實(shí)現(xiàn)ChannelConnected方法,并利用其監(jiān)聽(tīng)所述主站和子站的數(shù)據(jù)傳輸端口。具體地,利用Netty的Handler中所提供的ChannelConnected方法,監(jiān)測(cè)端口是否進(jìn)行了 TCP連接,當(dāng)端口 TCP/IP連接建立時(shí),執(zhí)行ChannelConnected方法的內(nèi)容。在ChannelConnected方法中,首先判斷此時(shí)的發(fā)送狀態(tài),向所連接的IP發(fā)送U-start巾貞握手信號(hào)。在本發(fā)明的一個(gè)實(shí)施例中,在處理器中初始化104規(guī)約所需內(nèi)容,包括數(shù)據(jù)幀定義、類(lèi)型標(biāo)識(shí)定義、傳輸原因定義,以及配置文件的讀取和遙信和遙測(cè)數(shù)據(jù)點(diǎn)位的定義,程序初始發(fā)送狀態(tài),以及各個(gè)發(fā)送狀態(tài)的定義。定義典型數(shù)據(jù)幀的構(gòu)造方法,包括U-start幀,U-test幀,U-stop幀,總召喚幀,遙信幀,遙測(cè)幀,遙控幀,遙調(diào)幀,S確認(rèn)幀等。步驟S103,通過(guò)具體實(shí)現(xiàn)MessageReceived方法,當(dāng)所述數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)所實(shí)現(xiàn)的方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析。具體地,首先利用MessageReceived方法獲取接收到的數(shù)據(jù)巾貞,并放入字節(jié)緩沖區(qū),判斷幀頭是否為104規(guī)約規(guī)定幀頭68H,如果是,則繼續(xù)解析,否則所收到數(shù)據(jù)為錯(cuò)誤數(shù)據(jù),應(yīng)該舍棄。并通過(guò)判斷數(shù)據(jù)第四幀和第六幀,即104規(guī)約中規(guī)定的控制域的八位位組來(lái)確定數(shù)據(jù)幀格式,確定是U幀、I幀或S幀。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)幀為I幀時(shí)判斷數(shù)據(jù)類(lèi)型,并根據(jù)數(shù)據(jù)的類(lèi)型確定每個(gè)數(shù)據(jù)單元中的點(diǎn)位及數(shù)據(jù)。若數(shù)據(jù)為I幀,則其包含了數(shù)據(jù)信息,需要進(jìn)一步解析,首先判斷其類(lèi)型標(biāo)識(shí),包括總召喚確認(rèn)、遙信數(shù)據(jù)、遙測(cè)數(shù)據(jù)或者是遙控預(yù)置確認(rèn)等。然后按照不同的類(lèi)型標(biāo)識(shí),確定其每個(gè)數(shù)據(jù)單元的長(zhǎng)度和格式,從而解析出每個(gè)數(shù)據(jù)單元中所包含的點(diǎn)位及數(shù)據(jù)。例如,遙信中的點(diǎn)位用于與配置文件對(duì)比,確定開(kāi)關(guān)的位置和編號(hào),遙信中數(shù)據(jù)O或1,則用于確定開(kāi)關(guān)的狀態(tài)。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)幀為S幀時(shí)直接進(jìn)入發(fā)送環(huán)節(jié)。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)幀為U幀時(shí)改變發(fā)送狀態(tài),并進(jìn)入發(fā)送環(huán)節(jié)。步驟S104,根據(jù)解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。具體地,判斷發(fā)送狀態(tài),并發(fā)送相應(yīng)數(shù)據(jù)。發(fā)送后進(jìn)入等待數(shù)據(jù)環(huán)節(jié),重復(fù)利用MessageReceived方法,當(dāng)數(shù)據(jù)接收之后,在MessageReceived方法中對(duì)數(shù)據(jù)進(jìn)行解析,存儲(chǔ)上傳的數(shù)據(jù),并根據(jù)解析結(jié)果,修改發(fā)送狀態(tài)。再進(jìn)入判斷發(fā)送狀態(tài)環(huán)節(jié),并發(fā)送相應(yīng)的數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施例中,發(fā)送采用選擇語(yǔ)句Switch/Case,對(duì)于不同的發(fā)送狀態(tài),調(diào)用不同的典型數(shù)據(jù)幀構(gòu)造方法,來(lái)獲得所需發(fā)送的數(shù)據(jù),并通過(guò)Netty提供的Channel發(fā)送方法進(jìn)行發(fā)送。根據(jù)本發(fā)明實(shí)施例的方法,通過(guò)采用線程池和線程管理器以及框架所提供的框架對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行調(diào)度、解析實(shí)現(xiàn)非阻塞通訊,用較少線程同時(shí)處理多個(gè)客戶(hù)端連接,大幅節(jié)省了內(nèi)存資源,提高了效率,具有更高的可靠性。圖2為根據(jù)本發(fā)明另一個(gè)實(shí)施例的基于IEC104規(guī)約的非阻塞式通信方法的流程圖。如圖2所示,根據(jù)本發(fā)明實(shí)施例的基于IEC104規(guī)約的非阻塞式通信方法,包括以下步驟:步驟S201,在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,所述通訊框架提供 ChannelConnected 方法接口和 MessageReceived 方法接 口。步驟S202,通過(guò)具體實(shí)現(xiàn)ChannelConnected方法,并利用其監(jiān)聽(tīng)所述主站和子站的數(shù)據(jù)傳輸端口。步驟S203,通過(guò)具體實(shí)現(xiàn)MessageReceived方法,當(dāng)所述數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)所實(shí)現(xiàn)的方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析。步驟S204,根據(jù)解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。步驟S205,當(dāng)數(shù)據(jù)傳輸狀態(tài)發(fā)生異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。具體地,在MessageReceived方法結(jié)束后,添加計(jì)時(shí)環(huán)節(jié),記錄接收到數(shù)據(jù)巾貞后,所經(jīng)歷的時(shí)間,如果超過(guò)104規(guī)約所規(guī)定的時(shí)間,則跳出,進(jìn)入發(fā)送U-test測(cè)試幀的環(huán)節(jié)。如果測(cè)試異常表明連接斷開(kāi),則進(jìn)入斷線重新連接,使服務(wù)端與子站進(jìn)行連接。在本發(fā)明的一個(gè)實(shí)施例中,在總召喚結(jié)束后,經(jīng)歷了足夠時(shí)間,例如10分鐘后,修改當(dāng)前發(fā)送狀態(tài)為總召喚,并進(jìn)入發(fā)送環(huán)節(jié)。根據(jù)本發(fā)明實(shí)施例的方法,通過(guò)對(duì)數(shù)據(jù)發(fā)送后等待時(shí)間的記錄在較短的時(shí)間內(nèi)重新建立連接進(jìn)行數(shù)據(jù)傳輸,進(jìn)一步提高了效率。圖3為本發(fā)明一個(gè)實(shí)施例的基于IEC104規(guī)約的非阻塞式通信系統(tǒng)的框架圖。如圖3所示,根據(jù)本發(fā)明實(shí)施例的基于IEC104規(guī)約的非阻塞式通信系統(tǒng)包括框架模塊100、監(jiān)聽(tīng)模塊200、解析模塊300和發(fā)送模塊400。具體地,框架模塊100用于在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,所述通訊框架提供ChannelConnected方法接口和MessageReceived方法接口。圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的框架模塊的框架圖。如圖3所示,框架模塊100包括:第一創(chuàng)建單元110、第二創(chuàng)建單元120、第三創(chuàng)建單元130和第四創(chuàng)建單元140。第一創(chuàng)建單元110用于在主站和子站創(chuàng)建服務(wù)端。利用Netty架包,使得項(xiàng)目能夠利用Netty架構(gòu)編寫(xiě)104規(guī)約程序。并創(chuàng)建通信服務(wù)端,建立服務(wù)端對(duì)象,其中,服務(wù)端對(duì)象類(lèi)繼承Netty提供的SimpleServer類(lèi)。第二創(chuàng)建單元120用于在主站和子站的服務(wù)端創(chuàng)建連接通道池。在服務(wù)端創(chuàng)建Netty所提供的連接通道池對(duì)象,以存儲(chǔ)和管理與主站連接的多個(gè)通道。由Netty的功能和特性決定,若有多個(gè)子站與主站連接,則自動(dòng)將其都添加到連接通道池中,進(jìn)行調(diào)度和管理。第三創(chuàng)建單元130用于在連接通道池中創(chuàng)建線程管理器和線程池,其中,線程管理器對(duì)線程池進(jìn)行管理。第四創(chuàng)建單元140用于在所述線程池創(chuàng)建處理器,其中,所述處理器提供MessageReceived 方法接口和 ChannelConnected 方法接 口,并對(duì)所述 ChannelConnected 方法接口進(jìn)行實(shí)現(xiàn)。在服務(wù)端程序中創(chuàng)建Netty所提供的通信連接對(duì)象,并在其中創(chuàng)建處理器對(duì)象,實(shí)現(xiàn)Netty所提供的SimpleChannelHandler類(lèi),使得處理器對(duì)象能夠負(fù)責(zé)實(shí)現(xiàn)IO端口的事件。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)有多個(gè)客戶(hù)連接時(shí),并不直接為他們分配線程,而是通過(guò)線程管理器來(lái)進(jìn)行管理和調(diào)度。僅當(dāng)某連接接收到數(shù)據(jù)時(shí),線程管理器才調(diào)用該連接所對(duì)應(yīng)的方法。每個(gè)連接對(duì)應(yīng)于線程池中的一個(gè)對(duì)象,由線程管理器進(jìn)行管理,而不需要編程實(shí)現(xiàn)線程的切換和查詢(xún)。監(jiān)聽(tīng)模塊200用于通過(guò)具體實(shí)現(xiàn)ChannelConnected方法,并利用其監(jiān)聽(tīng)所述主站和子站的數(shù)據(jù)傳輸端口。在本發(fā)明的一個(gè)實(shí)施例中,在處理器中初始化104規(guī)約所需內(nèi)容,包括數(shù)據(jù)幀定義、類(lèi)型標(biāo)識(shí)定義、傳輸原因定義,以及配置文件的讀取和遙信和遙測(cè)數(shù)據(jù)點(diǎn)位的定義,程序初始發(fā)送狀態(tài),以及各個(gè)發(fā)送狀態(tài)的定義。定義典型數(shù)據(jù)幀的構(gòu)造方法,包括U-start幀,U-test幀,U-stop幀,總召喚幀,遙信幀,遙測(cè)幀,遙控幀,遙調(diào)幀,S確認(rèn)幀等。解析模塊300用于通過(guò)具體實(shí)現(xiàn)MessageReceived方法,當(dāng)所述數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)所實(shí)現(xiàn)的方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析。圖4為根據(jù)本發(fā)明一個(gè)實(shí)施例的解析模塊的框架圖。如圖4所示,解析模塊300包括:第一確定單元310、第二確定單元320、第一處理單元330和第二處理單元340。確定單元310用于接收到子站的數(shù)據(jù)后根據(jù)MessageReceived方法對(duì)其進(jìn)行解析確定數(shù)據(jù)幀的格式,其中,格式包括U幀、S幀和I幀。第一單元320用于當(dāng)數(shù)據(jù)幀為I幀時(shí)判斷數(shù)據(jù)類(lèi)型,并根據(jù)數(shù)據(jù)的類(lèi)型確定每個(gè)數(shù)據(jù)單元中的點(diǎn)位及數(shù)據(jù)。第二處理單元330用于當(dāng)數(shù)據(jù)幀為S幀時(shí)直接進(jìn)入發(fā)送環(huán)節(jié)。第三處理單元340用于當(dāng)數(shù)據(jù)幀為U幀時(shí)改變發(fā)送狀態(tài),并進(jìn)入發(fā)送環(huán)節(jié)。發(fā)送模塊400用于根據(jù)解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。判斷發(fā)送狀態(tài),并發(fā)送相應(yīng)數(shù)據(jù)。發(fā)送后進(jìn)入等待數(shù)據(jù)環(huán)節(jié),重復(fù)利用MessageReceived方法,當(dāng)數(shù)據(jù)接收之后,在MessageReceived方法中對(duì)數(shù)據(jù)進(jìn)行解析,存儲(chǔ)上傳的數(shù)據(jù),并根據(jù)解析結(jié)果,修改發(fā)送狀態(tài)。再進(jìn)入判斷發(fā)送狀態(tài)環(huán)節(jié),并發(fā)送相應(yīng)的數(shù)據(jù)。在本發(fā)明的一個(gè)實(shí)施例中,發(fā)送采用選擇語(yǔ)句Switch/Case,對(duì)于不同的發(fā)送狀態(tài),調(diào)用不同的典型數(shù)據(jù)幀構(gòu)造方法,來(lái)獲得所需發(fā)送的數(shù)據(jù),并通過(guò)Netty提供的Channel發(fā)送方法進(jìn)行發(fā)送。根據(jù)本發(fā)明實(shí)施例的系統(tǒng),通過(guò)采用線程池和線程管理器以及框架所提供的框架對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行調(diào)度、解析實(shí)現(xiàn)非阻塞通訊,用較少線程同時(shí)處理多個(gè)客戶(hù)端連接,大幅節(jié)省了內(nèi)存資源,提高了效率,具有更高的可靠性。圖5為根據(jù)本發(fā)明另一個(gè)實(shí)施例的基于IEC104規(guī)約的非阻塞式通信系統(tǒng)的框架圖。如圖5所示,根據(jù)本發(fā)明實(shí)施例的基于IEC104規(guī)約的非阻塞式通信系統(tǒng)還包括重發(fā)模塊500用于當(dāng)數(shù)據(jù)傳輸狀態(tài)發(fā)生異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。在本發(fā)明的一個(gè)實(shí)施例中,重發(fā)模塊500包括:記錄單元、修改單元和傳輸單元。記錄單元用于在數(shù)據(jù)傳輸過(guò)程中記錄接收到數(shù)據(jù)幀后所經(jīng)過(guò)的時(shí)間。修改單元用于當(dāng)時(shí)間超過(guò)預(yù)設(shè)時(shí)間是將發(fā)送狀態(tài)修改為發(fā)送檢測(cè)幀。傳輸單元用于當(dāng)檢測(cè)幀的狀態(tài)異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。
在本發(fā)明的一個(gè)實(shí)施例中,在MessageReceived方法結(jié)束后,添加計(jì)時(shí)環(huán)節(jié),記錄接收到數(shù)據(jù)幀后,所經(jīng)歷的時(shí)間,如果超過(guò)104規(guī)約所規(guī)定的時(shí)間,則跳出,進(jìn)入發(fā)送U-test測(cè)試幀的環(huán)節(jié)。如果測(cè)試異常表明連接斷開(kāi),則進(jìn)入斷線重新連接,使服務(wù)端與子站進(jìn)行連接。在總召喚結(jié)束后,經(jīng)歷了足夠時(shí)間,例如10分鐘后,修改當(dāng)前發(fā)送狀態(tài)為總召喚,并進(jìn)入發(fā)送環(huán)節(jié)。根據(jù)本發(fā)明實(shí)施例的系統(tǒng),通過(guò)對(duì)數(shù)據(jù)發(fā)送后等待時(shí)間的記錄在較短的時(shí)間內(nèi)重新建立連接進(jìn)行數(shù)據(jù)傳輸,進(jìn)一步提高了效率。在本發(fā)明中還進(jìn)行了對(duì)比測(cè)試,進(jìn)一步體現(xiàn)本發(fā)明的優(yōu)越性,對(duì)比結(jié)果具體如下。按根據(jù)上述步驟建立連接之后,按照104規(guī)約流程進(jìn)行通信,并縮短總召喚時(shí)間。其中,規(guī)定每幀之間的發(fā)送間隔,表I對(duì)通信進(jìn)行壓力測(cè)試的結(jié)果,表2為在子站采用Netty和JavaOIO方式進(jìn)行測(cè)試的結(jié)果,以及與常規(guī)實(shí)現(xiàn)方法的對(duì)比結(jié)果數(shù)據(jù)為圖5。表I
權(quán)利要求
1.一種基于IEC104規(guī)約的非阻塞式通信方法,其特征在于,包括以下步驟: 51:在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,所述通訊框架提供ChannelConnected 方法接口和 MessageReceived 方法接口等; 52:通過(guò)具體實(shí)現(xiàn)ChannelConnected方法,并利用其監(jiān)聽(tīng)所述主站和子站的數(shù)據(jù)傳輸端口 ; 53:通過(guò)具體實(shí)現(xiàn)MessageReceived方法,當(dāng)所述數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)所實(shí)現(xiàn)的方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析;以及 54:根據(jù)所述解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。
2.如權(quán)利要求1所述的基于IEC104規(guī)約的非阻塞式通信方法,其特征在于,還包括: S5:當(dāng)數(shù)據(jù)傳輸狀態(tài)發(fā)生異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。
3.如權(quán)利要求1所述的基于IEC104規(guī)約的非阻塞式通信方法,其特征在于,所述步驟SI具體包括: S12:在王站和子站創(chuàng)建服務(wù)端; 512:在所述主站和子站的服務(wù)端創(chuàng)建連接通道池; 513:在所述連接通道池中創(chuàng)建線程管理器和線程池,其中,所述線程管理器對(duì)所述線程池進(jìn)行管理;以及 514:在所述線程池創(chuàng)建處理器,其中,所述處理器提供Mes sageReceived方法接口和ChannelConnected方法接口,`并對(duì)所述ChannelConnected方法接口進(jìn)行實(shí)現(xiàn)。
4.如權(quán)利要求1所述的基于IEC104規(guī)約的非阻塞式通信方法,其特征在于,所述步驟S3具體包括: 531:MessageReceived方法監(jiān)測(cè)到接收到的子站數(shù)據(jù)后,對(duì)其方法進(jìn)行解析確定所述數(shù)據(jù)幀的格式,其中,所述格式包括U幀、S幀和I幀等; 532:當(dāng)所述數(shù)據(jù)幀為I幀時(shí)判斷數(shù)據(jù)類(lèi)型,并所述根據(jù)數(shù)據(jù)的類(lèi)型確定每個(gè)數(shù)據(jù)單元中的點(diǎn)位及數(shù)據(jù); 533:當(dāng)所述數(shù)據(jù)幀為S幀時(shí)直接進(jìn)入發(fā)送環(huán)節(jié);以及 534:當(dāng)所述數(shù)據(jù)幀為U幀時(shí)改變發(fā)送狀態(tài),并進(jìn)入發(fā)送環(huán)節(jié)。
5.如權(quán)利要求1所述的基于集合論評(píng)估模型的電力系統(tǒng)狀態(tài)評(píng)估方法,其特征在于,所述步驟S5具體包括: 551:在數(shù)據(jù)傳輸過(guò)程中記錄接收到數(shù)據(jù)幀后所經(jīng)過(guò)的時(shí)間; 552:當(dāng)所述時(shí)間超過(guò)預(yù)設(shè)時(shí)間是將發(fā)送狀態(tài)修改為發(fā)送檢測(cè)幀;以及 553:當(dāng)所述檢測(cè)幀的狀態(tài)異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。
6.一種基于IEC104規(guī)約的非阻塞式通信系統(tǒng),其特征在于,包括: 框架模塊,用于在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,所述通訊框架提供 ChannelConnected 方法接口和 MessageReceived 方法接口 ; 監(jiān)聽(tīng)模塊,用于通過(guò)具體實(shí)現(xiàn)ChannelConnected方法,并利用其監(jiān)聽(tīng)所述主站和子站的數(shù)據(jù)傳輸端口等; 解析模塊,用于通過(guò)具體實(shí)現(xiàn)MessageReceived方法,當(dāng)所述數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)所實(shí)現(xiàn)的方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析;以及 發(fā)送模塊,用于根據(jù)所述解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。
7.如權(quán)利要求6所述的基于IEC104規(guī)約的非阻塞式通信系統(tǒng),其特征在于,所述還包括: 重發(fā)模塊,用于當(dāng)數(shù)據(jù)傳輸狀態(tài)發(fā)生異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。
8.如權(quán)利要求5所述的基于IEC104規(guī)約的非阻塞式通信系統(tǒng),其特征在于,所述框架模塊具體包括: 第一創(chuàng)建單元,用于在主站和子站創(chuàng)建服務(wù)端; 第二創(chuàng)建單元,用于在所述主站和子站的服務(wù)端創(chuàng)建連接通道池; 第三創(chuàng)建單元,用于在所述連接通道池中創(chuàng)建線程管理器和線程池,其中,所述線程管理器對(duì)所述線程池進(jìn)行管理;以及 第四創(chuàng)建單元,用于在所述線程池創(chuàng)建處理器,其中,所述處理器提供MessageReceived 方法接口和 ChannelConnected 方法接口,并對(duì)所述 ChannelConnected 方法接口進(jìn)行實(shí)現(xiàn)。
9.如權(quán)利要求6所述的基于IEC104規(guī)約的非阻塞式通信系統(tǒng),其特征在于,所述解析模塊包括: 第一確定單元,用于MessageReceived方法監(jiān)測(cè)到接收到的子站數(shù)據(jù)后,對(duì)其方法進(jìn)行解析確定所述數(shù)據(jù)幀的格式,其中,所述格式包括U幀、S幀和I幀等; 第二確定單元,用于當(dāng)所述數(shù)據(jù)幀為I幀時(shí)判斷數(shù)據(jù)類(lèi)型,并所述根據(jù)數(shù)據(jù)的類(lèi)型確定每個(gè)數(shù)據(jù)單元中的點(diǎn)位及數(shù)據(jù); 第一處理單元,用于當(dāng)所述數(shù)據(jù)幀為S幀時(shí)直接進(jìn)入發(fā)送環(huán)節(jié); 以及 第二處理單元,用于當(dāng)所述數(shù)據(jù)幀為U幀時(shí)改變發(fā)送狀態(tài),并進(jìn)入發(fā)送環(huán)節(jié)。
10.如權(quán)利要求6所述的基于IEC104規(guī)約的非阻塞式通信系統(tǒng),其特征在于,所述重發(fā)模塊包括: 記錄單元,用于在數(shù)據(jù)傳輸過(guò)程中記錄接收到數(shù)據(jù)幀后所經(jīng)過(guò)的時(shí)間; 修改單元,用于當(dāng)所述時(shí)間超過(guò)預(yù)設(shè)時(shí)間是將發(fā)送狀態(tài)修改為發(fā)送檢測(cè)幀;以及 傳輸單元,用于當(dāng)所述檢測(cè)幀的狀態(tài)異常時(shí)主站和子站重新建立連接進(jìn)行數(shù)據(jù)傳輸。
全文摘要
本發(fā)明提出一種基于IEC104規(guī)約的非阻塞式通信方法及系統(tǒng)。其中,方法包括以下步驟在主站和子站通過(guò)Netty架包創(chuàng)建非阻塞的通訊框架,其中,通訊框架提供ChannelConnected方法和MessageReceived方法;根據(jù)ChannelConnected方法監(jiān)聽(tīng)主站和子站的數(shù)據(jù)傳輸端口;當(dāng)數(shù)據(jù)傳輸端口創(chuàng)建連接時(shí)根據(jù)MessageReceived方法對(duì)數(shù)據(jù)傳輸請(qǐng)求進(jìn)行解析;以及根據(jù)解析信息發(fā)送所請(qǐng)求的數(shù)據(jù)。根據(jù)本發(fā)明實(shí)施例的方法,通過(guò)采用線程池和線程管理器以及框架所提供的框架對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行調(diào)度、解析實(shí)現(xiàn)非阻塞通訊,用較少線程同時(shí)處理多個(gè)客戶(hù)端連接,大幅節(jié)省了內(nèi)存資源,提高了效率,具有更高的可靠性。
文檔編號(hào)H04L12/423GK103107931SQ20121051842
公開(kāi)日2013年5月15日 申請(qǐng)日期2012年12月5日 優(yōu)先權(quán)日2012年12月5日
發(fā)明者何光宇, 葉鍵民, 盛成玉, 孫振權(quán) 申請(qǐng)人:清華大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
长寿区| 昌乐县| 云霄县| 海原县| 福海县| 旬邑县| 台东县| 明光市| 平昌县| 阳春市| 会同县| 灵丘县| 巢湖市| 利津县| 平舆县| 英山县| 克山县| 乌什县| 湘潭县| 清流县| 米林县| 天台县| 古丈县| 公安县| 玉屏| 伊金霍洛旗| 高邑县| 宁德市| 大姚县| 青阳县| 翁源县| 东乡族自治县| 晋城| 砀山县| 阳谷县| 无锡市| 屯门区| 彰化县| 银川市| 永丰县| 马关县|