两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種洪泛式組網(wǎng)的快速收斂方法與流程

文檔序號:11292092閱讀:699來源:國知局
一種洪泛式組網(wǎng)的快速收斂方法與流程

本發(fā)明涉及數(shù)據(jù)采集系統(tǒng),尤其涉及到數(shù)據(jù)采集系統(tǒng)的組網(wǎng)方法。



背景技術(shù):

目前,基于數(shù)據(jù)采集目的的最后一公里的集中式網(wǎng)絡的現(xiàn)場物理拓撲為一個集中器,多個節(jié)點(一般幾百到幾千個),節(jié)點離散分布在距離集中器一公里范圍內(nèi)的每家每戶。集中器和各個節(jié)點一般采用電力線載波或者小無線技術(shù)進行通信,集中器距離最遠節(jié)點距離一般為一公里以內(nèi)。集中器分別對每個節(jié)點發(fā)起數(shù)據(jù)采集命令,節(jié)點收到命令并判讀目的地址是自身時進行應答。集中器搜集并存儲每個節(jié)點的應答,并把采集到的數(shù)據(jù)通過公網(wǎng)或者專網(wǎng)傳遞給數(shù)據(jù)主站。通常情況下集中器和遠距離的節(jié)點之間都不能直達通信,需要通過中繼節(jié)點轉(zhuǎn)發(fā)才能到達目的,地理位置分布離散的節(jié)點可互為中繼,這樣就需要構(gòu)建集中器到各個目的節(jié)點的組網(wǎng)路徑。

目前的組網(wǎng)方法一般都是集中器發(fā)起組網(wǎng)過程,逐級探索到達目的節(jié)點的路徑,當探索成功后就記憶下集中器到該目的節(jié)點的路徑,在進行數(shù)據(jù)采集時集中器就按照歷史記憶路徑去和目的節(jié)點通信。按照這種組網(wǎng)方法,集中器組網(wǎng)時間較長,并且需要記憶自身到下屬每個節(jié)點的路徑。同時,由于集中器記憶的是歷史路徑,而最后一公里的信道往往是時變的,如電力線載波信道會隨著家庭里用戶使用用電器的情況而變化,小無線信道會隨著天氣的變化而變化,所以當按照歷史記憶路徑去和目的節(jié)點通信就可能不成功,這時集中器又需要發(fā)起網(wǎng)絡維護過程去重新探索到該目的節(jié)點的路徑,如果網(wǎng)絡維護的過程頻繁又會影響到系統(tǒng)的正常數(shù)據(jù)采集過程,使得每日的數(shù)據(jù)采集成功率大大降低。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述缺陷,提出一種洪泛式組網(wǎng)的快速收斂方法,能夠大大增加集中器和各節(jié)點之間的通信成功率,并且通信可靠性也大為提高,也最大限度地降低了網(wǎng)絡維護的工作量。

本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:提供一種洪泛式組網(wǎng)的快速收斂方法,包括:步驟1:集中器構(gòu)建命令包的網(wǎng)絡層協(xié)議數(shù)據(jù)單元,向目標節(jié)點發(fā)出數(shù)據(jù)采集命令;步驟2:收到該命令包的節(jié)點判讀目的地址若非自身,則按照多種處理機制決定應該轉(zhuǎn)發(fā)還是丟棄該命令包,若是應該轉(zhuǎn)發(fā)該命令包,則把網(wǎng)絡層協(xié)議數(shù)據(jù)單元中的下行級數(shù)加一,置數(shù)據(jù)包為轉(zhuǎn)發(fā)包標志,轉(zhuǎn)發(fā)該命令包;若是應該丟棄,則丟棄該命令包;步驟3:收到該命令包的節(jié)點判讀目的地址若為自身,則按照某種處理機制決定是否該處理該命令包,若不處理,則丟棄該命令包;若應處理,則構(gòu)建應答包網(wǎng)絡層協(xié)議數(shù)據(jù)單元,發(fā)送應答;步驟4:收到該應答包的節(jié)點按照多種處理機制決定應該轉(zhuǎn)發(fā)還是丟棄該應答包,若是應該轉(zhuǎn)發(fā)該應答包,則把網(wǎng)絡層協(xié)議數(shù)據(jù)單元中的上行級數(shù)加一,置數(shù)據(jù)包為轉(zhuǎn)發(fā)包標志,轉(zhuǎn)發(fā)該應答包;若是應該丟棄,則丟棄該應答包;步驟5:集中器收到該應答包,則按照某種處理機制決定是否該處理該應答包,若不處理,則丟棄該應答包;若應處理,則提取需要的采集數(shù)據(jù)存儲,再執(zhí)行步驟1,發(fā)出下一條數(shù)據(jù)采集命令。

本發(fā)明的有益效果在于,可以完全自適應通信信道的變化,集中器每次和目標節(jié)點的采集通信過程同時也是一次組網(wǎng)過程,且通信路徑是動態(tài)的,當時的最優(yōu)路徑。組網(wǎng)方法中采取多種措施有效解決了網(wǎng)絡沖突和網(wǎng)絡擁塞的難點,使得每次通信可以快速收斂。通過這種組網(wǎng)方法,能夠大大增加集中器和各節(jié)點之間的通信成功率,并且通信可靠性也大為提高,也最大限度地降低了網(wǎng)絡維護的工作量。

附圖說明

下面將結(jié)合附圖及實施例對本發(fā)明作進一步說明,附圖中:

圖1為節(jié)點的數(shù)據(jù)流圖。

圖2為集中器的數(shù)據(jù)流圖。

圖3為集中器發(fā)出下行數(shù)據(jù)采集命令的過程示意圖。

圖4為收到命令的一級節(jié)點轉(zhuǎn)發(fā)的過程示意圖。

圖5為收到命令的二級節(jié)點轉(zhuǎn)發(fā),到達目的節(jié)點的過程示意圖。

圖6為目的節(jié)點發(fā)出上行應答包的過程示意圖。

圖7為收到應答包的一級節(jié)點轉(zhuǎn)發(fā)的過程示意圖。

圖8為收到應答的二級節(jié)點轉(zhuǎn)發(fā),到達集中器的過程示意圖。

圖9為洪泛式組網(wǎng)的快速收斂方法的流程圖。

圖10為集中器發(fā)送命令處理的流程圖。

圖11為節(jié)點接收下行命令處理的流程圖。

圖12為節(jié)點發(fā)送應答處理的流程圖。

圖13為節(jié)點接收上行應答處理的流程圖。

圖14為集中器接收上行應答處理的流程圖。

圖15為節(jié)點重復包檢測的流程圖。

圖16為集中器重復包檢測的流程圖。

具體實施方式

現(xiàn)結(jié)合附圖,對本發(fā)明的較佳實施例作詳細說明。

首先,描述一下本發(fā)明的數(shù)據(jù)結(jié)構(gòu)。

協(xié)議數(shù)據(jù)單元(pdu)格式描述主要包括:mac層協(xié)議數(shù)據(jù)單元(mpdu)格式描述和網(wǎng)絡層協(xié)議數(shù)據(jù)單元(npdu)格式描述兩個方面。

具體地,mpdu格式描述如下表。

length:8-bits,mpdu的長度(包括length本身),length<=255。

delta_bl:6-bits,規(guī)定提交該mpdu所產(chǎn)生的信道使用統(tǒng)計的增量,變化范圍0-63。

npdu:網(wǎng)絡層協(xié)議數(shù)據(jù)單元。

crcl,crch:從length字節(jié)開始到npdu結(jié)束的crc校驗,低字節(jié)在前。

具體地,npdu格式描述如下表。

srcrelay:1-bit,0,表示數(shù)據(jù)包為轉(zhuǎn)發(fā)包;1,表示數(shù)據(jù)包為源發(fā)送包。

updown:1-bit,上行和下行標識。0,下行包;1,上行包。

ver:4-bits,使用的應用層協(xié)議。

dwnlvl:3-bits,下行級數(shù),0-7級。

uplvl:3-bits,上行級數(shù),0-7級。

domain:48-bits,域標識,一個集中器和下屬所有節(jié)點即屬于同一個唯一域,對應集中器地址。

dstaddr:48-bits,目標地址。

tid:8-bits,事務號,關(guān)聯(lián)的下行命令和上行應答tid要相等。tid范圍1-63。

apdu:應用層協(xié)議數(shù)據(jù)單元。

參見圖1,圖1為節(jié)點的數(shù)據(jù)流圖。描述了節(jié)點上的數(shù)據(jù)在應用層180和網(wǎng)絡層190之間的移動。具體而言,包括:mac層接收緩沖區(qū)(macrxbuffer)110,mac層發(fā)送緩沖區(qū)(mactxbuffer)120,應用層接收緩沖區(qū)(apprxbuffer)130,應用層發(fā)送緩沖區(qū)(apptxbuffer)140,已處理包隊列(dealtpacqueue)150,以及轉(zhuǎn)發(fā)緩沖區(qū)(forwardbuffer)160。其中,已處理包隊列150最多容納30個已處理包。為了節(jié)省空間,一個完整的mpdu數(shù)據(jù)包移入已處理包隊列150時,只移入length、updown、ver、dwnlvl、uplvl、dstaddr、tid這幾項。圖中的箭頭表示數(shù)據(jù)包在緩沖區(qū)和隊列之間的移動。

參見圖2,圖2為集中器的數(shù)據(jù)流圖。描述了集中器上的數(shù)據(jù)在應用層280和網(wǎng)絡層290之間的移動。具體而言,包括:mac層接收緩沖區(qū)(macrxbuffer)210,mac層發(fā)送緩沖區(qū)(mactxbuffer)220,應用層接收緩沖區(qū)(apprxbuffer)230,應用層發(fā)送緩沖區(qū)(apptxbuffer)240以及已處理包隊列(dealtpacqueue)250。其中,已處理包隊列250最多容納30個已處理包。為了節(jié)省空間,一個完整的mpdu數(shù)據(jù)包移入已處理包隊列150時,只移入length、updown、ver、dwnlvl、uplvl、dstaddr、tid這幾項。圖中的箭頭表示數(shù)據(jù)包在緩沖區(qū)和隊列之間的移動。

參見圖3至圖8,示例性地呈現(xiàn)了一個洪泛式組網(wǎng)的過程,該示例假定了一個二級的組網(wǎng)網(wǎng)絡300,其包括集中器310、一級節(jié)點330、二級節(jié)點350和目標節(jié)點370。具體地,圖3為集中器發(fā)出下行數(shù)據(jù)采集命令的過程示意圖。圖4為收到命令的一級節(jié)點轉(zhuǎn)發(fā)的過程示意圖。圖5為收到命令的二級節(jié)點轉(zhuǎn)發(fā),到達目的節(jié)點的過程示意圖。圖6為目的節(jié)點發(fā)出上行應答包的過程示意圖。圖7為收到應答包的一級節(jié)點轉(zhuǎn)發(fā)的過程示意圖。圖8為收到應答的二級節(jié)點轉(zhuǎn)發(fā),到達集中器的過程示意圖。

參見圖9,圖9為洪泛式組網(wǎng)的快速收斂方法的流程圖。該方法大致包括:

步驟910、集中器構(gòu)建命令包npdu(網(wǎng)絡層協(xié)議數(shù)據(jù)單元),向目標節(jié)點發(fā)出數(shù)據(jù)采集命令;然后,轉(zhuǎn)步驟920。

步驟920、收到該命令包的節(jié)點判讀目的地址是否自身的,不是的話轉(zhuǎn)步驟930,是的話轉(zhuǎn)步驟940。

步驟930、按照多種處理機制(多種處理機制詳見圖11,包括判斷域地址是否匹配、是否重復包、下行級數(shù)是否達到最大級數(shù)、tid比較、rssi(接收信號強度)是否超限)決定應該轉(zhuǎn)發(fā)還是丟棄該命令包,若是應該轉(zhuǎn)發(fā)該命令包,則把npdu中的dwnlvl+=1、srcrelay=0(轉(zhuǎn)發(fā)包),轉(zhuǎn)發(fā)該命令包;若是應該丟棄,則丟棄該命令包;然后,轉(zhuǎn)步驟950。

步驟940、按照某種處理機制(某種處理機制詳見圖11,這個處理機制就是判斷是否重復包)決定是否該處理該命令包,若不處理,則丟棄該命令包;若應處理,則構(gòu)建應答包npdu,發(fā)送應答;然后,轉(zhuǎn)步驟950。

步驟950、收到該應答包的節(jié)點,按照多種處理機制(多種處理機制詳見圖13,包括判斷域地址是否匹配、是否重復包、上行級數(shù)是否達到最大級數(shù)、tid(事務號)比較、rssi(接收信號強度)是否超限)決定應該轉(zhuǎn)發(fā)還是丟棄該應答包,若是應該轉(zhuǎn)發(fā)該應答包,則把npdu中的uplvl+=1、srcrelay=0(轉(zhuǎn)發(fā)包),轉(zhuǎn)發(fā)該應答包;若是應該丟棄,則丟棄該應答包;然后,轉(zhuǎn)步驟960。

步驟960、集中器收到該應答包,則按照某種處理機制(某種處理機制詳見圖14,包括判斷是否下行包、域地址是否匹配、是否重復包)決定是否該處理該應答包,若不處理,則丟棄該應答包;若應處理,則提取需要的采集數(shù)據(jù)存儲;然后,轉(zhuǎn)步驟910,去發(fā)出下一條數(shù)據(jù)采集命令。

值得一提的是,下行轉(zhuǎn)發(fā)和上行轉(zhuǎn)發(fā)的最大級數(shù)可以設置。通常對于一公里范圍的現(xiàn)場網(wǎng)絡來說,下行轉(zhuǎn)發(fā)和上行轉(zhuǎn)發(fā)的最大級數(shù)缺省為7級。由于信道下行和上行的物理參數(shù)不對稱,通常每次洪泛通信成功所需的下行級數(shù)和上行級數(shù)并不相同,且參與下行轉(zhuǎn)發(fā)的節(jié)點和參與上行轉(zhuǎn)發(fā)的節(jié)點也并不相同。

參見圖10,圖10為集中器發(fā)送命令處理的流程圖。集中器發(fā)送命令處理的過程具體包括:

步驟1010、集中器儲存floodmaxtid+=1;注:floodmaxtid初始化為0。

步驟1020、判斷floodmaxtid是否>63,是的話,轉(zhuǎn)步驟1030,不是的話,轉(zhuǎn)步驟1040。

步驟1030、floodmaxtid=1,轉(zhuǎn)步驟1040。

步驟1040、構(gòu)造發(fā)送命令包npdu,放入apptxbuffer:srcrelay=1;updown=0;dwnlvl=0;uplvl=0;domain=集中器地址;dstaddr=目標節(jié)點地址;tid=floodmaxtid;然后,轉(zhuǎn)步驟1050。

步驟1050、發(fā)送命令包移入mactxbuffer,等待發(fā)送。

參見圖11,圖11為節(jié)點接收下行命令處理的流程圖。節(jié)點接收下行命令處理的過程具體包括:

步驟1101、節(jié)點macrxbuffer接收到一個下行命令包,轉(zhuǎn)步驟1103。

步驟1103、判斷目的地址是否匹配,是的話,轉(zhuǎn)步驟1105,不是的話,轉(zhuǎn)步驟1107。

步驟1105、判斷是否重復包,是的話,轉(zhuǎn)步驟1149,不是的話,轉(zhuǎn)步驟1131。

步驟1107、判斷域地址是否匹配,是的話,轉(zhuǎn)步驟1109,不是的話,轉(zhuǎn)步驟1149。

步驟1109、判斷是否重復包,是的話,轉(zhuǎn)步驟1149,不是的話,轉(zhuǎn)步驟1111。

步驟1111、判斷接受命令包dwnlvl是否>=7,是的話,轉(zhuǎn)步驟1149,不是的話,轉(zhuǎn)步驟1113。

步驟1113、判斷接收命令包tid是否大于節(jié)點儲存floodmaxtid,是的話,轉(zhuǎn)步驟1115,不是的話,轉(zhuǎn)步驟1149。

步驟1115、節(jié)點儲存floodmaxtid=接收命令包tid,轉(zhuǎn)步驟1117。

步驟1117、判斷轉(zhuǎn)發(fā)緩沖區(qū)是否有數(shù)據(jù)包,是的話,轉(zhuǎn)步驟1119,不是的話,轉(zhuǎn)步驟1121。

步驟1119、把轉(zhuǎn)發(fā)緩沖區(qū)中的數(shù)據(jù)包移入已處理包隊列,不再發(fā)送,轉(zhuǎn)步驟1121。

步驟1121、判斷mactxbuffer是否有積壓包,是的話,轉(zhuǎn)步驟1123,不是的話,轉(zhuǎn)步驟1125。

步驟1123、清除mactxbuffer中的數(shù)據(jù)包,不再發(fā)送。同時清除已處理包隊列中該包的mactxbuffer積壓包標志macblockflag,轉(zhuǎn)步驟1125。

步驟1125、判斷rssi是否超過上限,是的話,轉(zhuǎn)步驟1127,不是的話,轉(zhuǎn)步驟1129。

步驟1127、該命令包入已處理包隊列,結(jié)束。

步驟1129、該命令包srcrelay=0,dwnlvl+=1,入轉(zhuǎn)發(fā)緩沖區(qū),結(jié)束。

步驟1131、判斷接收命令包tid是否大于節(jié)點儲存floodmaxtid,是的話,轉(zhuǎn)步驟1135,不是的話,轉(zhuǎn)步驟1137。

步驟1135、節(jié)點儲存floodmaxtid=接收命令包tid,轉(zhuǎn)步驟1137。

步驟1137、節(jié)點儲存domainid=接收命令包domain,轉(zhuǎn)步驟1139。

步驟1139、節(jié)點儲存flooddwnlvl=接收命令包dwnlvl,轉(zhuǎn)步驟1141。

步驟1141、把該命令包遞交apprxbuffer;同時把該命令包入已處理包隊列,結(jié)束。

步驟1143、判斷收到命令包的dwnlvl-對應重復包的dwnlvl是否>=2,是的話,轉(zhuǎn)步驟1145,不是的話,轉(zhuǎn)步驟1155。

步驟1145、判斷重復包是否位于轉(zhuǎn)發(fā)緩沖區(qū),是的話,轉(zhuǎn)步驟1147,不是的話,轉(zhuǎn)步驟1151。

步驟1147、把轉(zhuǎn)發(fā)緩沖區(qū)中的數(shù)據(jù)包移入已處理包隊列,不再發(fā)送,轉(zhuǎn)步驟1149。

步驟1149、丟棄該下行命令包,結(jié)束。

步驟1151、判斷位于已處理包隊列中的該重復包是否也是mactxbuffer積壓包,是的話,轉(zhuǎn)步驟1153,不是的話,轉(zhuǎn)步驟1149。

步驟1153、清除mactxbuffer中的數(shù)據(jù)包,不再發(fā)送,同時清除已處理包隊列中該重復包的mactxbuffer積壓包標志macblockflag,轉(zhuǎn)步驟1149。

步驟1155、判斷重復包是否位于轉(zhuǎn)發(fā)緩沖區(qū),是的話,轉(zhuǎn)步驟1157,不是的話,轉(zhuǎn)步驟1159。

步驟1157、判斷rssi是否超過上限,是的話,轉(zhuǎn)步驟1147,不是的話,轉(zhuǎn)步驟1149。

步驟1159、判斷rssi是否超過上限,是的話,轉(zhuǎn)步驟1151,不是的話,轉(zhuǎn)步驟1149。

參見圖12,圖12為節(jié)點發(fā)送應答處理的流程圖。節(jié)點發(fā)送應答處理的過程具體包括:

步驟1210、構(gòu)造發(fā)送應答包npdu,放入apptxbuffer:srcrelay=1;updown=l;dwnlvl=節(jié)點儲存flooddwnlvl;uplvl=0;domain=節(jié)點儲存domainid;dstaddr=目標節(jié)點地址;tid=節(jié)點儲存floodmaxtid。

步驟1230、發(fā)送應答包移入mactxbuffer,等待發(fā)送;同時,發(fā)送應答包移入已處理包隊列,置已處理包隊列中該數(shù)據(jù)包的mactxbuffer積壓標志macblockflag,清已處理包隊列中其他數(shù)據(jù)包的macblockflag。

參見圖13,圖13為節(jié)點接收上行應答處理的流程圖。節(jié)點接收上行應答處理的過程具體包括:

步驟1301、節(jié)點macrxbuffer接收到一個上行應答包,轉(zhuǎn)步驟1303。

步驟1303、判斷域地址是否匹配,是的話,轉(zhuǎn)步驟1305,不是的話,轉(zhuǎn)步驟1333。

步驟1305、判斷是否重復包,是的話,轉(zhuǎn)步驟1327,不是的話,轉(zhuǎn)步驟1307。

步驟1307、判斷接受應答包uplvl是否>=7,是的話,轉(zhuǎn)步驟1333,不是的話,轉(zhuǎn)步驟1309。

步驟1309、判斷接收應答包tid是否大于等于節(jié)點儲存floodmaxtid,是的話,轉(zhuǎn)步驟1311,不是的話,轉(zhuǎn)步驟1333。

步驟1311、節(jié)點儲存floodmaxtid=接收應答包tid,轉(zhuǎn)步驟1313。

步驟1313、判斷轉(zhuǎn)發(fā)緩沖區(qū)是否有數(shù)據(jù)包,是的話,轉(zhuǎn)步驟1315,不是的話,轉(zhuǎn)步驟1317。

步驟1315、把轉(zhuǎn)發(fā)緩沖區(qū)中的數(shù)據(jù)包移入已處理包隊列,不再發(fā)送,轉(zhuǎn)步驟1317。

步驟1317、判斷mactxbuffer是否有積壓包,是的話,轉(zhuǎn)步驟1319,不是的話,轉(zhuǎn)步驟1321。

步驟1319、清除mactxbuffer中的數(shù)據(jù)包,不再發(fā)送。同時清除已處理包隊列中該包的mactxbuffer積壓包標志macblockflag,轉(zhuǎn)步驟1321。

步驟1321、判斷rssi是否超過上限,是的話,轉(zhuǎn)步驟1323,不是的話,轉(zhuǎn)步驟1325。

步驟1323、該應答包入已處理包隊列,結(jié)束。

步驟1325、該應答包srcrelay=0,uplvl+=1,入轉(zhuǎn)發(fā)緩沖區(qū),結(jié)束。

步驟1327、判斷收到應答包的uplvl-對應重復包的uplvl是否>=2,是的話,轉(zhuǎn)步驟1329,不是的話,轉(zhuǎn)步驟1339。

步驟1329、判斷重復包是否位于轉(zhuǎn)發(fā)緩沖區(qū),是的話,轉(zhuǎn)步驟1331,不是的話,轉(zhuǎn)步驟1335。

步驟1331、把轉(zhuǎn)發(fā)緩沖區(qū)中的數(shù)據(jù)包移入已處理包隊列,不再發(fā)送,轉(zhuǎn)步驟1333。

步驟1333、丟棄該上行應答包,結(jié)束。

步驟1335、判斷位于已處理包隊列中的該重復包是否也是mactxbuffer積壓包,是的話,轉(zhuǎn)步驟1337,不是的話,轉(zhuǎn)步驟1333。

步驟1337、清除mactxbuffer中的數(shù)據(jù)包,不再發(fā)送。同時清除已處理包隊列中該重復包的mactxbuffer積壓包標志macblockflag,轉(zhuǎn)步驟1333。

步驟1339、判斷重復包是否位于轉(zhuǎn)發(fā)緩沖區(qū),是的話,轉(zhuǎn)步驟1341,不是的話,轉(zhuǎn)步驟1343。

步驟1341、判斷rssi是否超過上限,是的話,轉(zhuǎn)步驟1331,不是的話,轉(zhuǎn)步驟1333。

步驟1343、判斷rssi是否超過上限,是的話,轉(zhuǎn)步驟1335,不是的話,轉(zhuǎn)步驟1333。

參見圖14,圖14為集中器接收上行應答處理的流程圖。集中器接收上行應答處理的過程具體包括:

步驟1410、集中器macrxbuffer接收到一個數(shù)據(jù)包,轉(zhuǎn)步驟1420。

步驟1420、判斷是否下行包,是的話,轉(zhuǎn)步驟1460,不是的話,轉(zhuǎn)步驟1430。

步驟1430、判斷域地址是否匹配,是的話,轉(zhuǎn)步驟1440,不是的話,轉(zhuǎn)步驟1460。

步驟1440、判斷是否重復包,是的話,轉(zhuǎn)步驟1460,不是的話,轉(zhuǎn)步驟1450。

步驟1450、該上行應答包移入apprxbuffer,等待應用層處理,結(jié)束。

步驟1460、丟棄該數(shù)據(jù)包,結(jié)束。

參見圖15,圖15為節(jié)點重復包檢測的流程圖。節(jié)點重復包檢測的過程具體包括:

步驟1501、節(jié)點macrxbuffer接收到一個數(shù)據(jù)包。

步驟1503、判斷轉(zhuǎn)發(fā)緩沖區(qū)是否有數(shù)據(jù)包,是的話,轉(zhuǎn)步驟1505,不是的話,轉(zhuǎn)步驟1519。

步驟1505、和轉(zhuǎn)發(fā)緩沖區(qū)數(shù)據(jù)包進行比較。

步驟1507、判斷包長度length是否相等,是的話,轉(zhuǎn)步驟1509,不是的話,轉(zhuǎn)步驟1519。

步驟1509、判斷updown是否相等,是的話,轉(zhuǎn)步驟1511,不是的話,轉(zhuǎn)步驟1519。

步驟1511、判斷ver是否相等,是的話,轉(zhuǎn)步驟1513,不是的話,轉(zhuǎn)步驟1519。

步驟1513、判斷dstaddr是否相等,是的話,轉(zhuǎn)步驟1515,不是的話,轉(zhuǎn)步驟1519。

步驟1515、判斷tid是否相等,是的話,轉(zhuǎn)步驟1517,不是的話,轉(zhuǎn)步驟1519。

步驟1517、接收數(shù)據(jù)包為重復包,結(jié)束。

步驟1519、判斷已處理包隊列是否有數(shù)據(jù)包,是的話,轉(zhuǎn)步驟1523,不是的話,轉(zhuǎn)步驟1521。

步驟1521、接收數(shù)據(jù)包非重復包,結(jié)束。

步驟1523、取已處理包隊列一個數(shù)據(jù)包,和接收數(shù)據(jù)包進行比較。

步驟1525、判斷包長度length是否相等,是的話,轉(zhuǎn)步驟1527,不是的話,轉(zhuǎn)步驟1535。

步驟1527、判斷updown是否相等,是的話,轉(zhuǎn)步驟1529,不是的話,轉(zhuǎn)步驟1535。

步驟1529、判斷ver是否相等,是的話,轉(zhuǎn)步驟1531,不是的話,轉(zhuǎn)步驟1535。

步驟1531、判斷dstaddr是否相等,是的話,轉(zhuǎn)步驟1533,不是的話,轉(zhuǎn)步驟1535。

步驟1533、判斷tid是否相等,是的話,轉(zhuǎn)步驟1517,不是的話,轉(zhuǎn)步驟1535。

步驟1535、判斷已處理包隊列是否比較完,是的話,轉(zhuǎn)步驟1521,不是的話,轉(zhuǎn)步驟1523。

圖16為集中器重復包檢測的流程圖。集中器重復包檢測的過程具體包括:

步驟1601、集中器macrxbuffer接收到一個數(shù)據(jù)包。

步驟1603、判斷已處理包隊列是否有數(shù)據(jù)包,是的話,轉(zhuǎn)步驟1605,不是的話,轉(zhuǎn)步驟1621。

步驟1605、取已處理包隊列一個數(shù)據(jù)包,和接收數(shù)據(jù)包進行比較。

步驟1607、判斷包長度length是否相等,是的話,轉(zhuǎn)步驟1609,不是的話,轉(zhuǎn)步驟1619。

步驟1609、判斷updown是否相等,是的話,轉(zhuǎn)步驟1611,不是的話,轉(zhuǎn)步驟1619。

步驟1611、判斷ver是否相等,是的話,轉(zhuǎn)步驟1613,不是的話,轉(zhuǎn)步驟1619。

步驟1613、判斷dstaddr是否相等,是的話,轉(zhuǎn)步驟1615,不是的話,轉(zhuǎn)步驟1619。

步驟1615、判斷tid是否相等,是的話,轉(zhuǎn)步驟1617,不是的話,轉(zhuǎn)步驟1619。

步驟1617、接收數(shù)據(jù)包為重復包,結(jié)束。

步驟1619、判斷已處理包隊列是否比較完,是的話,轉(zhuǎn)步驟1621,不是的話,轉(zhuǎn)步驟1605。

步驟1621、接收數(shù)據(jù)包非重復包,結(jié)束。

在本發(fā)明中,rssi指接收信號強度。節(jié)點接收到一個數(shù)據(jù)包rssi超過上限,是指節(jié)點接收到數(shù)據(jù)包信號很強,一定是離該節(jié)點很近的另一個節(jié)點發(fā)出來的數(shù)據(jù)包,比如同一個表箱的另一個節(jié)點發(fā)出來的數(shù)據(jù)包。

在本發(fā)明中,節(jié)點首次上電初始化時節(jié)點儲存domain為全0。節(jié)點收到數(shù)據(jù)包判定域地址是否匹配的判據(jù)為:若“收到數(shù)據(jù)包domain和節(jié)點儲存domain相等”或者“節(jié)點儲存domain==全0”,則域地址匹配;否則,域地址不匹配。節(jié)點掉電前把節(jié)點儲存domain保存到非易失存儲器中。

在本發(fā)明中,接收命令包tid是否大于節(jié)點儲存floodmaxtid的判據(jù)為:若“接收命令包tid>節(jié)點儲存floodmaxtid”或者“接收命令包tid+63-節(jié)點儲存floodmaxtid<16”,則接收命令包tid大于節(jié)點儲存floodmaxtid;否則,接收命令包tid不大于節(jié)點儲存floodmaxtid。這是因為tid是從1-63循環(huán)的,當超過63時,tid又從1開始。

值得一提的是,tid來源是集中器構(gòu)建的pdu包,是從1-63循環(huán)的,當從63循環(huán)變到1時,1應該是大于63的,而不是小于。取16這個數(shù)就是保證網(wǎng)絡中還存續(xù)的包(網(wǎng)絡中的包有存續(xù)期也可以叫生存期)不會因為1-63的循環(huán)而出現(xiàn)大小比較錯亂的情況。

在本發(fā)明中,接收應答包tid是否大于等于節(jié)點儲存floodmaxtid的判據(jù)為:若“接收應答包tid≥節(jié)點儲存floodmaxtid”或者“接收應答包tid+63-節(jié)點儲存floodmaxtid<16”,則接收應答包tid大于等于節(jié)點儲存floodmaxtid;否則,接收應答包tid小于節(jié)點儲存floodmaxtid。這是因為tid是從1-63循環(huán)的,當超過63時,tid又從1開始。

在本發(fā)明中,節(jié)點數(shù)據(jù)包從轉(zhuǎn)發(fā)緩沖區(qū)或者apptxbuffer移入mactxbuffer時,需判斷mactxbuffer是否空閑。若空閑,則移入mactxbuffer,同時,把數(shù)據(jù)包也移入已處理包隊列,置已處理包隊列中該數(shù)據(jù)包的mactxbuffer積壓標志macblockflag,清已處理包隊列中其他數(shù)據(jù)包的macblockflag;若忙,則繼續(xù)停留在轉(zhuǎn)發(fā)緩沖區(qū)或者apptxbuffer中等待。

在本發(fā)明中,集中器數(shù)據(jù)包從apptxbuffer移入mactxbuffer時,需判斷mactxbuffer是否空閑。若空閑,則移入mactxbuffer;若忙,則繼續(xù)停留在apptxbuffer中等待。

在本發(fā)明中,物理層采用csma(載波偵聽多路訪問)技術(shù)競爭信道發(fā)送,進入mactxbuffer的數(shù)據(jù)包隨機分配時間片,當分配到的時間片到達時,物理層發(fā)送數(shù)據(jù)包。信道競爭采用優(yōu)先級別,源發(fā)送包在優(yōu)先時隙中分配隨機時間片發(fā)送;轉(zhuǎn)發(fā)包需在優(yōu)先時隙后,再分配隨機時間片發(fā)送。

本發(fā)明的有益效果包括,但不限于:實現(xiàn)了網(wǎng)絡載荷的高效控制,沖突的最大避免,從而使得洪泛式組網(wǎng)得以快速收斂。

應當理解的是,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制,對本領域技術(shù)人員來說,可以對上述實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改和替換,都應屬于本發(fā)明所附權(quán)利要求的保護范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宜春市| 大邑县| 乐安县| 错那县| 成武县| 中西区| 宝兴县| 聂拉木县| 安远县| 祥云县| 乐安县| 利辛县| 隆德县| 遂川县| 邵武市| 苗栗县| 苍南县| 琼海市| 永安市| 巨鹿县| 平谷区| 句容市| 贵港市| 运城市| 阿荣旗| 和田市| 涞源县| 周宁县| 邹城市| 年辖:市辖区| 鹤山市| 临沧市| 柳州市| 华坪县| 金门县| 县级市| 东宁县| 西峡县| 宝兴县| 中阳县| 揭西县|