亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種樹型傳感器網(wǎng)絡(luò)的自組網(wǎng)和低功耗數(shù)據(jù)匯集方法與流程

文檔序號:11235494閱讀:468來源:國知局
一種樹型傳感器網(wǎng)絡(luò)的自組網(wǎng)和低功耗數(shù)據(jù)匯集方法與流程

技術(shù)領(lǐng)域:本發(fā)明涉及一種無線傳感器網(wǎng)絡(luò),特別是無線傳感器網(wǎng)絡(luò)的數(shù)據(jù)匯集。



背景技術(shù):

近年來隨著物聯(lián)網(wǎng)的快速發(fā)展,無線傳感器網(wǎng)絡(luò)開始在人們的生活中扮演著越來越重要的角色。無線傳感器網(wǎng)絡(luò)綜合了傳感器技術(shù)、嵌入式計算技術(shù)、現(xiàn)代網(wǎng)絡(luò)及無線通信技術(shù)、分布式信息處理技術(shù)等多種領(lǐng)域,被廣泛地應(yīng)用于多種應(yīng)用場景,如農(nóng)業(yè)養(yǎng)殖、生態(tài)監(jiān)測、工業(yè)設(shè)施檢測、自然災(zāi)害預(yù)測、智能交通控制、智能家居及軍事場合等。

無線傳感器網(wǎng)絡(luò)常用的拓撲結(jié)構(gòu)主要有星型、樹型、網(wǎng)狀等拓撲結(jié)構(gòu)。其中樹型拓撲為分層結(jié)構(gòu),具有方便分支管理、易于擴展(容易加入新的分支或新的節(jié)點、故障隔離容易等優(yōu)點。對于一些具有固定數(shù)據(jù)采集周期、數(shù)據(jù)傳輸量小頻率低、通訊范圍大且需要分區(qū)域管理的無線傳感器網(wǎng)絡(luò)應(yīng)用領(lǐng)域,使用樹型拓撲相比其他拓撲結(jié)構(gòu)更為合適。但是傳統(tǒng)的樹型傳感器網(wǎng)絡(luò)在組網(wǎng)方面,動態(tài)拓撲能力差,傳感器節(jié)點非常依賴它的上一級節(jié)點,一旦上一級節(jié)點出現(xiàn)故障,其下的傳感器節(jié)點都將從網(wǎng)絡(luò)中脫離。同時傳統(tǒng)的樹型傳感器網(wǎng)絡(luò)在數(shù)據(jù)匯集方面,常使用兩種匯集方法:一是傳感器節(jié)點按照固定時間間隔從低功耗休眠中喚醒,測量環(huán)境參數(shù)完成后隨機等待一段時間,主動發(fā)送數(shù)據(jù);二是傳感器節(jié)點按照固定時間間隔從休眠中喚醒,測量環(huán)境參數(shù)完成后等待協(xié)調(diào)器發(fā)送的匯集指令,被動發(fā)送數(shù)據(jù)。前者易出現(xiàn)多個節(jié)點數(shù)據(jù)并發(fā),造成消息碰撞,需多次重發(fā),浪費多余能耗,后者為了保障節(jié)點能接收到匯集指令,節(jié)點需要提前較長時間喚醒,同樣浪費多余能耗。



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

針對以上問題,本發(fā)明是設(shè)計出的一種符合實際需求的樹型傳感器網(wǎng)絡(luò)的自組網(wǎng)和低功耗數(shù)據(jù)匯集方法。

一種樹型傳感器網(wǎng)絡(luò)的自組網(wǎng)和低功耗數(shù)據(jù)匯集方法,對應(yīng)的傳感器網(wǎng)絡(luò)為三層樹型拓撲結(jié)構(gòu),由監(jiān)測服務(wù)器主機、中繼網(wǎng)關(guān)、協(xié)調(diào)器和傳感器節(jié)點組成。樹型拓撲結(jié)構(gòu)的第一層為監(jiān)測服務(wù)器主機,可連接多個中繼網(wǎng)關(guān);樹型拓撲結(jié)構(gòu)的第二層為中繼網(wǎng)關(guān)加協(xié)調(diào)器,每個中繼網(wǎng)關(guān)只對應(yīng)一個協(xié)調(diào)器因此在拓撲關(guān)系中兩者可視為一體,中繼網(wǎng)關(guān)負責(zé)與監(jiān)測服務(wù)器主機連接,協(xié)調(diào)器負責(zé)與傳感器節(jié)點連接;樹型拓撲結(jié)構(gòu)的最后一層為傳感器節(jié)點。傳感器節(jié)點與協(xié)調(diào)器通過無線通信,協(xié)調(diào)器與中繼網(wǎng)關(guān)通過串口通訊,傳感器節(jié)點負責(zé)在現(xiàn)場測量各種環(huán)境數(shù)據(jù),并將數(shù)據(jù)通過無線發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器一方面通過無線與傳感器節(jié)點進行通訊,負責(zé)傳感器網(wǎng)絡(luò)的建立,和傳感器節(jié)點測量數(shù)據(jù)的采集;另一方面通過串口與中繼網(wǎng)關(guān)進行通訊,負責(zé)向中繼網(wǎng)關(guān)轉(zhuǎn)發(fā)傳感器節(jié)點測量數(shù)據(jù),和接收中繼網(wǎng)關(guān)的指令;中繼網(wǎng)關(guān)的作用是當(dāng)各節(jié)點的測量數(shù)據(jù)在中繼網(wǎng)關(guān)中數(shù)據(jù)匯集后,由網(wǎng)關(guān)對數(shù)據(jù)進行融合,最后通過網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送至監(jiān)測服務(wù)器;

所述傳感器節(jié)點的工作步驟包括節(jié)點首次接入網(wǎng)絡(luò)階段、重新接入網(wǎng)絡(luò)階段、數(shù)據(jù)測量發(fā)送階段;具體步驟如下:

節(jié)點通電后,初始化硬件配置。

讀取控制器片內(nèi)eeprom中的自身節(jié)點地址信息,默認地址為0x0000;

1.節(jié)點地址是否為0x0000,如果是,則判斷自身為未組網(wǎng)的新節(jié)點,進入節(jié)點首次接入網(wǎng)絡(luò)階段,即步驟4-7;否則判斷不是新節(jié)點,進入步驟8;

首次接入網(wǎng)絡(luò)階段:

2.在信道0廣播新節(jié)點請求入網(wǎng)指令;

3.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,判斷是否收到協(xié)調(diào)器回復(fù)的允許新節(jié)點入網(wǎng)指令,如果是,則進入步驟6,否則,返回步驟4;

4.讀取新節(jié)點允許入網(wǎng)指令,記錄協(xié)調(diào)器分配的節(jié)點地址寫入eeprom,記錄使用信道,標記自身狀態(tài)為正常狀態(tài),標記剛?cè)刖W(wǎng);

5.在信道0向現(xiàn)協(xié)調(diào)器回復(fù)節(jié)點確認入網(wǎng)指令,進入步驟8;

6.判斷自身狀態(tài)是否為故障狀態(tài),如果是,進入重新接入網(wǎng)絡(luò)階段,即步驟9-18,否則進入數(shù)據(jù)測量發(fā)送階段,即步驟19-28;

7.重新接入網(wǎng)絡(luò)階段:

8.判斷原有節(jié)點請求入網(wǎng)指令廣播次數(shù)是否達到規(guī)定次數(shù),如果是,進入步驟14,否則進入步驟10;

9.在通道0廣播原有節(jié)點請求入網(wǎng)指令;

10.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,判斷是否收到原協(xié)調(diào)器回復(fù)的允許原有節(jié)點入網(wǎng)指令,如果是,則進入步驟12,否則,進入步驟13;

11.標記自身為正常狀態(tài),標記剛?cè)刖W(wǎng),記錄指令中的使用信道,返回步驟8;

12.隨機等待一段時間,返回步驟9;

13.在通道0廣播待托管節(jié)點請求入網(wǎng)指令;

14.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,判斷是否收到協(xié)調(diào)器回復(fù)的允許待托管節(jié)點入網(wǎng)指令,如果是,則進入步驟16,否則,進入步驟18;

15.讀取指令,記錄使用信道,標記自身狀態(tài)為正常狀態(tài),標記剛?cè)刖W(wǎng);

16.在信道0向托管協(xié)調(diào)器回復(fù)待托管節(jié)點確認入網(wǎng)指令,返回步驟8;

17.等待30秒,將原有節(jié)點請求入網(wǎng)指令廣播次數(shù)清零,返回步驟9;

18.數(shù)據(jù)測量發(fā)送階段:

19.判斷是否剛?cè)刖W(wǎng),如果是,則進入步驟20,否則進入步驟22;

20.給所有測量數(shù)據(jù)賦值為0;

21.切換至使用信道接收狀態(tài),一直等待現(xiàn)網(wǎng)絡(luò)中協(xié)調(diào)器發(fā)送的數(shù)據(jù)采集指令,接收到指令后,進入步驟24;

22.打開傳感器模塊供電電源,測量環(huán)境參數(shù);

23.關(guān)閉傳感器供電電源,喚醒無線模塊,切換至使用信道接收狀態(tài),等待協(xié)調(diào)器指令,等待時間為t_wait_collect,判斷是否接收到協(xié)調(diào)器發(fā)送的數(shù)據(jù)采集指令,如果是,進入步驟24,否則進入步驟28;

24.記錄下次采集數(shù)據(jù)時間間隔t_collect、故障節(jié)點總數(shù)n_error和新增故障節(jié)點數(shù)n_error_add,計算下次低功耗處理器喚醒定時時間t_wake=t_collect-t_measure–(n_error_add*t_wait),無線模塊喚醒后接收等待時長t_wait_collect=n_error*t_wait,定時器定時t_wake;

25.在使用信道向協(xié)調(diào)器發(fā)送節(jié)點發(fā)送測量數(shù)據(jù)指令;

26.關(guān)閉所有不用資源,進入休眠;

27.定時時間t_wake到后,定時器中斷喚醒低功耗處理器,返回步驟8;

28.標記自身故障狀態(tài),返回步驟8;

所述協(xié)調(diào)器工作步驟包括協(xié)調(diào)器入網(wǎng)階段、監(jiān)聽廣播階段和數(shù)據(jù)匯集階段;

具體步驟如下:

協(xié)調(diào)器入網(wǎng)階段:

1.協(xié)調(diào)器通電后,初始化硬件配置;

2.向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器請求入網(wǎng)指令;

3.收到網(wǎng)關(guān)回復(fù)的批準協(xié)調(diào)器入網(wǎng)指令后,記錄協(xié)調(diào)器地址、原有節(jié)點數(shù)和使用信道,標記所有節(jié)點為故障狀態(tài);

4.在信道0廣播協(xié)調(diào)器信道選擇指令;

5.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,判斷是否收到其他協(xié)調(diào)器回復(fù)的協(xié)調(diào)器信道占用指令,如果是,判斷該信道被占用,進入步驟6,否則判斷該信道可用,進入步驟9;

6.判斷是否協(xié)調(diào)器選擇信道指令發(fā)送次數(shù)等于信道總數(shù)減1次,如果是,判斷信道選擇失敗,進入步驟7,否則進入步驟8;

7.向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器信道選擇失敗指令,等待一段時間后,清空協(xié)調(diào)器選擇信道指令發(fā)送次數(shù),返回步驟4;

8.改變協(xié)調(diào)器選擇信道指令中選用信道,返回步驟4;

9.確定使用信道channel_used向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器信道選擇成功指令;

10.收到網(wǎng)關(guān)回復(fù)網(wǎng)絡(luò)建立成功指令后,更新定時器定時時間t_collect,定時器定時;

11.切換至信道0接收狀態(tài),監(jiān)聽廣播;

12.判斷定時器定時時間是否達到,如果沒有到達,進入監(jiān)聽廣播階段,即步驟13-27,否則進入數(shù)據(jù)匯集階段,即步驟28-39;

監(jiān)聽廣播階段:

13.判斷是否收到節(jié)點或其他協(xié)調(diào)器廣播的指令,如果是,進入步驟14,否則返回步驟12;

14.讀取指令,判斷指令類別,如果是協(xié)調(diào)器信道選擇指令,進入步驟15,如果是節(jié)點請求入網(wǎng)指令,進入步驟19;

處理其他協(xié)調(diào)器信道選擇指令子流程:

15.判斷協(xié)調(diào)器信道選擇指令中選用信道和自身使用信道是否相同,如果是,判斷信道沖突,進入步驟16,否則進入步驟17;

16.在信道0回復(fù)協(xié)調(diào)器信道占用指令;

17.判斷自身托管節(jié)點中是否有節(jié)點地址首字節(jié)同發(fā)送協(xié)調(diào)器信道選擇指令的協(xié)調(diào)器的地址,如果有這樣的節(jié)點,進入步驟18,否則返回步驟11;

18.標記該托管節(jié)點為故障狀態(tài),向網(wǎng)關(guān)發(fā)送節(jié)點故障指令,返回步驟11;

處理節(jié)點請求入網(wǎng)指令子流程:

19.讀取指令,判斷指令類型,如果是新節(jié)點請求入網(wǎng)指令,進入步驟20;如果是原有節(jié)點請求入網(wǎng)指令,進入步驟23;如果是原有節(jié)點請求入網(wǎng)指令,進入步驟21,如果是待托管節(jié)點請求入網(wǎng)指令,進入步驟25;

20.分配節(jié)點地址,在信道0向節(jié)點發(fā)送允許新節(jié)點入網(wǎng)指令;

21.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,如果接收到節(jié)點確認入網(wǎng)指令(包含節(jié)點地址),則進入步驟22,否則,返回步驟11;

22.更新節(jié)點數(shù)目s_node=s_node+1,標記節(jié)點為正常狀態(tài),向網(wǎng)關(guān)發(fā)送新節(jié)點入網(wǎng)指令,返回步驟11;

23.在信道0向節(jié)點發(fā)送允許原有節(jié)點入網(wǎng)指令;

24.標記節(jié)點為正常狀態(tài),向網(wǎng)關(guān)發(fā)送原有節(jié)點入網(wǎng)指令,返回步驟11;

25.在信道0向節(jié)點發(fā)送允許待托管節(jié)點入網(wǎng)指令;

26.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,如果接收到待托管節(jié)點確認入網(wǎng)指令,則進入步驟27,否則,返回步驟11;

27.記錄該托管節(jié)點地址,標記節(jié)點為正常狀態(tài),向網(wǎng)關(guān)發(fā)送待托管節(jié)點入網(wǎng)指令;返回步驟11;

數(shù)據(jù)匯集階段:

28.定時器定時時間達到后,向網(wǎng)關(guān)發(fā)送獲取下次采集數(shù)據(jù)時間指令;

29.收到網(wǎng)關(guān)回復(fù)的通知下次采集數(shù)據(jù)時間指令后,更新定時器定時時間t_collect,定時器定時;

30.讀取第一個節(jié)點的地址和狀態(tài),清零故障節(jié)點總數(shù)n_error和新增故障節(jié)點數(shù)n_error_add;

31.該節(jié)點狀態(tài)是否為正常狀態(tài),進入步驟32,否則,進入步驟36;

32.在使用信道channel_used上向節(jié)點發(fā)送數(shù)據(jù)采集指令;

33.切換至使用信道channel_used接收狀態(tài),開始定時t_wait時間,等待回復(fù),如果定時時間內(nèi)接收到節(jié)點發(fā)送測量數(shù)據(jù)指令,則進入步驟34,否則,進入步驟35;

34.記錄測量數(shù)據(jù),向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器數(shù)據(jù)傳輸指令,等待定時時間到,進入步驟37;

35.標記節(jié)點為故障狀態(tài),更新故障節(jié)點總數(shù)n_error=n_error+1,新增故障節(jié)點數(shù)n_error_add=n_error_add+1,向網(wǎng)關(guān)發(fā)送節(jié)點故障指令,進入步驟37;

36.更新故障節(jié)點總數(shù)n_error=n_error+1;

37.該節(jié)點是否為最后一個節(jié)點,如果是,進入步驟37,否則進入步驟38;

38.向網(wǎng)關(guān)發(fā)送本輪數(shù)據(jù)采集完畢指令,返回步驟11;

39.讀取下一個節(jié)點的地址和狀態(tài),返回步驟31。

相比傳統(tǒng)樹形傳感器網(wǎng)絡(luò),本發(fā)明的優(yōu)點有:

1.規(guī)定傳感器節(jié)點和協(xié)調(diào)器之間廣播時固定使用信道0,與其他階段的兩者之間網(wǎng)絡(luò)通信信道區(qū)分開。這使得需要廣播的協(xié)調(diào)器選擇信道指令和傳感器節(jié)點入網(wǎng)指令只需在單一信道中廣播,而無需掃描多個信道,在降低協(xié)調(diào)器選擇信道過程和傳感器節(jié)點入網(wǎng)過程的復(fù)雜性的同時,又避免傳感器節(jié)點在入網(wǎng)過程中因掃描多個信道而產(chǎn)生的額外能耗,從而延長了網(wǎng)絡(luò)壽命。

2.當(dāng)協(xié)調(diào)器出現(xiàn)故障,短時間掉線時,其連接的傳感器節(jié)點能自動重新接入網(wǎng)絡(luò)。當(dāng)協(xié)調(diào)器出現(xiàn)故障,長時間掉線時,其連接的傳感器節(jié)點能在保留原本網(wǎng)絡(luò)拓撲結(jié)構(gòu)信息的前提下,接入其他協(xié)調(diào)器建立的網(wǎng)絡(luò),這使得用戶得到的傳感器節(jié)點測量數(shù)據(jù)因為協(xié)調(diào)器故障而缺失的情況大大減少,優(yōu)化了測量數(shù)據(jù)的完整性。

3.出現(xiàn)故障的協(xié)調(diào)器重新上線重建新網(wǎng)絡(luò)時,原有節(jié)點能快速回歸到該協(xié)調(diào)器建立的網(wǎng)絡(luò)中,包括已經(jīng)接入其他協(xié)調(diào)器網(wǎng)絡(luò)的傳感器節(jié)點,也能快速退出現(xiàn)有網(wǎng)絡(luò),回歸到原協(xié)調(diào)器建立的網(wǎng)絡(luò)。同時傳感器節(jié)點出現(xiàn)故障后重新上線,也能快速回歸到原網(wǎng)絡(luò)。這兩者保證了網(wǎng)絡(luò)拓撲結(jié)構(gòu)的穩(wěn)定性,使得網(wǎng)絡(luò)的拓撲結(jié)構(gòu)不會因為協(xié)調(diào)器或傳感器節(jié)點故障而遭受破壞。

4.在數(shù)據(jù)匯集過程中采用傳感器節(jié)點接收到協(xié)調(diào)器指令后被動發(fā)送測量數(shù)據(jù)的方法,避免了多節(jié)點并發(fā)情況。同時使用了一種相對簡單且不需要rtc時鐘的動態(tài)時間同步策略,使傳感器節(jié)點在每次數(shù)據(jù)匯集過程中都會動態(tài)地根據(jù)當(dāng)前網(wǎng)絡(luò)的拓撲情況和拓撲變化情況,相應(yīng)地調(diào)整下一次傳感器節(jié)點喚醒時間和無線模塊無線接收等待時長,避免了節(jié)點過早喚醒和無線長時間接收等待造成的能耗浪費,從而延長了網(wǎng)絡(luò)壽命。

附圖說明:

附圖1為傳感器節(jié)點硬件結(jié)構(gòu)圖。

附圖2為協(xié)調(diào)器硬件結(jié)構(gòu)圖。

附圖3為樹形網(wǎng)絡(luò)結(jié)構(gòu)圖。

附圖4為傳感器節(jié)點工作總流程圖。

附圖5為節(jié)點首次接入網(wǎng)絡(luò)階段流程圖。

附圖6為節(jié)點重新入網(wǎng)階段流程圖。

附圖7為節(jié)點數(shù)據(jù)測量發(fā)送階段流程圖。

附圖8為協(xié)調(diào)器工作總流程圖。

附圖9為協(xié)調(diào)器入網(wǎng)流程圖。

附圖10為協(xié)調(diào)器監(jiān)聽廣播階段流程圖。

附圖11為協(xié)調(diào)器處理其他協(xié)調(diào)器信道選擇指令子流程。

附圖12為協(xié)調(diào)器處理節(jié)點請求入網(wǎng)指令子流程圖。

附圖13為協(xié)調(diào)器數(shù)據(jù)匯集階段流程圖。

具體實施方式:

下面結(jié)合實例和附圖對本發(fā)明實現(xiàn)方法和原理進一步說明。

本發(fā)明的傳感器節(jié)點與協(xié)調(diào)器通過433m無線通信,協(xié)調(diào)器與中繼網(wǎng)關(guān)通過串口通訊。

傳感器節(jié)點(簡稱節(jié)點):負責(zé)在現(xiàn)場測量各種環(huán)境數(shù)據(jù),并將數(shù)據(jù)通過433m無線發(fā)送給協(xié)調(diào)器。

傳感器節(jié)點由電源模塊、433m無線模塊、低功耗處理器和傳感器模塊構(gòu)成,硬件結(jié)構(gòu)圖如圖1所示。

其中,電源模塊為其他三個模塊供電,同時低功耗處理器能切斷傳感器模塊供電。低功耗處理器與433m無線模塊之間通過spi總線進行數(shù)據(jù)傳輸,低功耗處理器與傳感器模塊根據(jù)傳感器的不同通過iic總線或adc進行數(shù)據(jù)傳輸。

協(xié)調(diào)器:一方面通過433m無線與傳感器節(jié)點進行通訊,負責(zé)傳感器網(wǎng)絡(luò)的建立,和傳感器節(jié)點測量數(shù)據(jù)的采集。另一方面通過串口與中繼網(wǎng)關(guān)進行通訊,負責(zé)向中繼網(wǎng)關(guān)轉(zhuǎn)發(fā)傳感器節(jié)點測量數(shù)據(jù),和接收中繼網(wǎng)關(guān)的指令。

協(xié)調(diào)器由電源模塊、433m無線模塊、低功耗處理器和傳感器模塊構(gòu)成,硬件結(jié)構(gòu)圖如圖2所示。

其中,電源模塊為其他兩個模塊供電。低功耗處理器與433m無線模塊之間通過spi總線進行數(shù)據(jù)傳輸。

中繼網(wǎng)關(guān)(簡稱網(wǎng)關(guān)):當(dāng)各節(jié)點的測量數(shù)據(jù)在中繼網(wǎng)關(guān)中數(shù)據(jù)匯集后,由網(wǎng)關(guān)對數(shù)據(jù)進行融合,最后通過網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送至監(jiān)測服務(wù)器。

傳感器、協(xié)調(diào)器、中繼網(wǎng)關(guān)和監(jiān)測服務(wù)器主機構(gòu)成的樹型網(wǎng)絡(luò)結(jié)構(gòu)圖如圖3所示。

其中監(jiān)測服務(wù)器主機作為樹型網(wǎng)絡(luò)的第一層,每個中繼網(wǎng)關(guān)對應(yīng)一個協(xié)調(diào)器視為一體作為樹型網(wǎng)絡(luò)的第二層,傳感器節(jié)點作為樹型網(wǎng)絡(luò)的第三層。

名稱解釋:

如果節(jié)點a沒有加入過任何網(wǎng)絡(luò)的節(jié)點,則稱節(jié)點a為新節(jié)點。當(dāng)新節(jié)點a加入到協(xié)調(diào)器a的網(wǎng)絡(luò)中,則稱節(jié)點a為是協(xié)調(diào)器a的現(xiàn)有節(jié)點,協(xié)調(diào)器a是節(jié)點a的現(xiàn)協(xié)調(diào)器。當(dāng)現(xiàn)有節(jié)點a因為故障而脫離網(wǎng)絡(luò),則稱節(jié)點a為協(xié)調(diào)器a的原有節(jié)點,協(xié)調(diào)器a是節(jié)點a的原協(xié)調(diào)器。當(dāng)協(xié)調(diào)器a的原有節(jié)點a加入?yún)f(xié)調(diào)器b網(wǎng)絡(luò),則稱節(jié)點a是協(xié)調(diào)器b的托管節(jié)點,協(xié)調(diào)器b是節(jié)點a的托管協(xié)調(diào)器,節(jié)點a是協(xié)調(diào)器a的被托管節(jié)點(屬于原有節(jié)點范疇)。

將傳感器節(jié)點的運行狀態(tài)分為兩種狀態(tài):一.未組網(wǎng)或者已組網(wǎng)但與協(xié)調(diào)器斷開連接的狀態(tài)(簡稱故障狀態(tài));二.已組網(wǎng)并與協(xié)調(diào)器連接正常狀態(tài)(簡稱正常狀態(tài))。

協(xié)調(diào)器和節(jié)點向外發(fā)送數(shù)據(jù)后等待應(yīng)答時間均為t_wait,超時不再等待。等待應(yīng)答時間t_wait根據(jù)實際應(yīng)用中單次應(yīng)答所需時間決定。

節(jié)點首次接入網(wǎng)絡(luò)階段、重新接入網(wǎng)絡(luò)階段,無線信道為信道0(廣播信道),在數(shù)據(jù)測量發(fā)送階段,無線信道為對應(yīng)網(wǎng)絡(luò)的使用信道。

傳感器節(jié)點工作流程:主要包括節(jié)點首次接入網(wǎng)絡(luò)階段、重新接入網(wǎng)絡(luò)階段、數(shù)據(jù)測量發(fā)送階段。

注1:除了未入網(wǎng)的新節(jié)點接收允許入網(wǎng)指令之外,其余節(jié)點只能接收指令中節(jié)點地址符合自身地址的協(xié)調(diào)器指令。

注2:在監(jiān)聽廣播階段,協(xié)調(diào)器收發(fā)指令都使用信道0(廣播信道);在數(shù)據(jù)匯集階段,協(xié)調(diào)器收發(fā)指令都使用協(xié)調(diào)器入網(wǎng)階段選擇的使用信道channel_used。

注3:在數(shù)據(jù)匯集階段,協(xié)調(diào)器發(fā)出向節(jié)點發(fā)送數(shù)據(jù)采集指令后,無論是否收到回復(fù),都需要等待t_wait時間后,才能進入下一步驟。

1.節(jié)點通電后,初始化硬件配置。

2.讀取控制器片內(nèi)eeprom中的自身節(jié)點地址信息(默認地址為0x0000)。

3.節(jié)點地址是否為0x0000?如果是,則判斷自身為未組網(wǎng)的新節(jié)點,進入節(jié)點首次接入網(wǎng)絡(luò)階段(步驟4-7)。否則判斷不是新節(jié)點,進入步驟8。

首次接入網(wǎng)絡(luò)階段(步驟4-7):

4.在信道0(廣播信道)廣播新節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別)。

5.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,是否收到協(xié)調(diào)器回復(fù)的允許新節(jié)點入網(wǎng)指令(包含分配的節(jié)點地址和使用信道)?如果是,則進入步驟6。否則,返回步驟4。

注1:等待時間t_wait根據(jù)實際采用的433m無線模塊單次應(yīng)答所需時間決定。

注2:節(jié)點地址(2字節(jié))由網(wǎng)關(guān)地址(1字節(jié))和入網(wǎng)序號(1字節(jié))構(gòu)成。這樣的好處在于根據(jù)節(jié)點地址就能知道網(wǎng)絡(luò)結(jié)構(gòu)信息,即連接的網(wǎng)關(guān)地址和網(wǎng)絡(luò)序號。

6.讀取新節(jié)點允許入網(wǎng)指令,記錄協(xié)調(diào)器分配的節(jié)點地址寫入eeprom,記錄使用信道。標記自身狀態(tài)為正常狀態(tài),標記剛?cè)刖W(wǎng)。

注1:節(jié)點地址寫入eeprom是為了保證節(jié)點掉電后仍能保持原網(wǎng)絡(luò)結(jié)構(gòu)信息。

注2:使用信道不寫入eeprom是因為協(xié)調(diào)器故障掉電,重新上電需要重新選擇信道建立網(wǎng)絡(luò),在eeprom中寫入使用信道沒有意義。

7.在信道0向現(xiàn)協(xié)調(diào)器回復(fù)節(jié)點確認入網(wǎng)指令(包含節(jié)點地址)。進入步驟8。

8.自身狀態(tài)是否為故障狀態(tài)?如果是,進入重新接入網(wǎng)絡(luò)階段(步驟9-18),否則進入數(shù)據(jù)測量發(fā)送階段(步驟19-28)。

重新接入網(wǎng)絡(luò)階段(步驟9-18):

(嘗試連接原協(xié)調(diào)器)

9.判斷原有節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別)廣播次數(shù)是否達到規(guī)定次數(shù)(可根據(jù)需要設(shè)置)?如果是,進入步驟14,否則進入步驟10。

10.在通道0廣播原有節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別)。

11.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,是否收到原協(xié)調(diào)器回復(fù)的允許原有節(jié)點入網(wǎng)指令(包含節(jié)點地址和使用信道)?如果是,則進入步驟12。否則,進入步驟13。

12.標記自身為正常狀態(tài),標記剛?cè)刖W(wǎng),記錄指令中的使用信道。返回步驟8。

13.隨機等待一段時間,返回步驟9。

(請求其他協(xié)調(diào)器托管)

14.在通道0廣播待托管節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別)。

15.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,是否收到協(xié)調(diào)器回復(fù)的允許待托管節(jié)點入網(wǎng)指令(包含節(jié)點地址和使用信道)?如果是,則進入步驟16。否則,進入步驟18。

16.讀取指令,記錄使用信道。標記自身狀態(tài)為正常狀態(tài),標記剛?cè)刖W(wǎng)。

17.在信道0向托管協(xié)調(diào)器回復(fù)待托管節(jié)點確認入網(wǎng)指令(包含節(jié)點地址)。返回步驟8。

18.等待30秒(根據(jù)需要設(shè)置),將原有節(jié)點請求入網(wǎng)指令廣播次數(shù)清零。返回步驟9。

數(shù)據(jù)測量發(fā)送階段(步驟19-28):

19.判斷是否剛?cè)刖W(wǎng)?如果是,則進入步驟20,否則進入步驟22。

20.給所有測量數(shù)據(jù)賦值為0。

注:在接入網(wǎng)絡(luò)后的首次數(shù)據(jù)發(fā)送階段僅為了和協(xié)調(diào)器時間同步,不測量環(huán)境數(shù)據(jù)。

21.切換至使用信道接收狀態(tài),一直等待現(xiàn)網(wǎng)絡(luò)中協(xié)調(diào)器發(fā)送的數(shù)據(jù)采集指令(包含節(jié)點地址、下次采集數(shù)據(jù)時間間隔t_collect、故障節(jié)點總數(shù)n_error和新增故障節(jié)點數(shù)n_error_add)。接收到指令后,進入步驟24。

注:一直接收狀態(tài)等待是因為節(jié)點剛接入網(wǎng)絡(luò)和協(xié)調(diào)器之間時間還未同步。

22.打開傳感器模塊供電電源,測量環(huán)境參數(shù)。

23.關(guān)閉傳感器供電電源。喚醒無線模塊。切換至使用信道接收狀態(tài),等待協(xié)調(diào)器指令,等待時間為t_wait_collect,是否接收到協(xié)調(diào)器發(fā)送的數(shù)據(jù)采集指令?如果是,進入步驟24,否則進入步驟28。

24.記錄下次采集數(shù)據(jù)時間間隔t_collect、故障節(jié)點總數(shù)n_error和新增故障節(jié)點數(shù)n_error_add,計算下次低功耗處理器喚醒定時時間t_wake=t_collect-t_measure-(n_error_add*t_wait)。無線模塊喚醒后接收等待時長t_wait_collect=t_wait+n_error*t_wait。定時器定時t_wake。

注1:t_measure為節(jié)點上傳感器測量數(shù)據(jù)所需時間總和,由實際節(jié)點所擁有的傳感器類型和數(shù)目決定。計算t_wake時減去t_measure是因為傳感器模塊測量環(huán)境數(shù)據(jù)需要時間t_measure,所以節(jié)點需要提前t_measure喚醒測量。

注2:計算t_wake時減去n_error_add*t_wait是因為下一次數(shù)據(jù)采集比這一次減少了n_error_add個節(jié)點,導(dǎo)致下一次協(xié)調(diào)器發(fā)送的數(shù)據(jù)采集指令會比這一次提早到達n_error_add*t_wait時間。

注3:計算t_wait_collect時加上n_error*t_wait是因為在到達下一次數(shù)據(jù)采集之前,最多可能會有n_error個節(jié)點從故障狀態(tài)恢復(fù)正常,導(dǎo)致下一次數(shù)據(jù)采集指令最多晚n_error*t_wait時間到達。

25.在使用信道向協(xié)調(diào)器發(fā)送節(jié)點發(fā)送測量數(shù)據(jù)指令(包含節(jié)點地址和測量數(shù)據(jù))。

26.關(guān)閉所有不用資源,進入休眠。

27.定時時間t_wake到后,定時器中斷喚醒低功耗處理器。返回步驟8。

28.標記自身故障狀態(tài),返回步驟8。

協(xié)調(diào)器工作流程:主要包括協(xié)調(diào)器入網(wǎng)階段、監(jiān)聽廣播階段和數(shù)據(jù)匯集階段。

注1:在監(jiān)聽廣播階段,協(xié)調(diào)器收發(fā)指令都使用信道0(廣播信道);在數(shù)據(jù)匯集階段,協(xié)調(diào)器收發(fā)指令都使用協(xié)調(diào)器入網(wǎng)階段選擇的使用信道channel_used。

1.協(xié)調(diào)器通電后,初始化硬件配置。

協(xié)調(diào)器入網(wǎng)階段(步驟2-12):

2.向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器請求入網(wǎng)指令。

3.收到網(wǎng)關(guān)回復(fù)的批準協(xié)調(diào)器入網(wǎng)指令(包含分配的協(xié)調(diào)器地址、原有節(jié)點數(shù)s_node和使用信道)后,記錄協(xié)調(diào)器地址、原有節(jié)點數(shù)和使用信道。標記所有節(jié)點為故障狀態(tài)。

注1:因為該網(wǎng)絡(luò)結(jié)構(gòu)中協(xié)調(diào)器附屬于網(wǎng)關(guān),是一對一關(guān)系,所以設(shè)定分配的協(xié)調(diào)器地址同網(wǎng)關(guān)地址。

注2:網(wǎng)關(guān)只傳輸原有節(jié)點數(shù),而不傳輸具體節(jié)點地址是因為節(jié)點地址(2字節(jié))由協(xié)調(diào)器地址(1字節(jié))和入網(wǎng)序號(1字節(jié))構(gòu)成,協(xié)調(diào)器能根據(jù)原有節(jié)點數(shù)目自動生成原有節(jié)點地址。

4.在信道0廣播協(xié)調(diào)器信道選擇指令(包含協(xié)調(diào)器地址和選用信道)。

5.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,是否收到其他協(xié)調(diào)器回復(fù)的協(xié)調(diào)器信道占用指令(包含協(xié)調(diào)器地址和使用信道)?如果是,判斷該信道被占用,進入步驟6,否則判斷該信道可用,進入步驟9。

6.是否協(xié)調(diào)器選擇信道指令發(fā)送次數(shù)等于信道總數(shù)減1次?如果是,判斷信道選擇失敗,進入步驟7,否則進入步驟8。

7.向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器信道選擇失敗指令,等待一段時間后(根據(jù)需要修改),清空協(xié)調(diào)器選擇信道指令發(fā)送次數(shù),返回步驟4。

8.改變協(xié)調(diào)器選擇信道指令中選用信道,返回步驟4。

9.確定使用信道channel_used向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器信道選擇成功指令(包含協(xié)調(diào)器地址和使用信道)。

10.收到網(wǎng)關(guān)回復(fù)網(wǎng)絡(luò)建立成功指令(包含距下次采集數(shù)據(jù)時間間隔t_collect)后,更新定時器定時時間t_collect,定時器定時。

11.切換至信道0接收狀態(tài),監(jiān)聽廣播。

12.定時器定時時間是否達到?如果沒有到達,進入監(jiān)聽廣播階段(步驟13-27),否則進入數(shù)據(jù)匯集階段(步驟28-39)。

監(jiān)聽廣播階段(步驟13-27):

13.是否收到節(jié)點或其他協(xié)調(diào)器廣播的指令?如果是,進入步驟14,否則返回步驟12。

14.讀取指令,判斷指令類別。如果是協(xié)調(diào)器信道選擇指令(包含協(xié)調(diào)器地址和選用信道),進入步驟15。如果是節(jié)點請求入網(wǎng)指令(包含節(jié)點地址),進入步驟19。

處理其他協(xié)調(diào)器信道選擇指令子流程:

15.協(xié)調(diào)器信道選擇指令中選用信道和自身使用信道是否相同?如果是,判斷信道沖突,進入步驟16。否則進入步驟17。

16.在信道0回復(fù)協(xié)調(diào)器信道占用指令(包含協(xié)調(diào)器地址和使用信道)。

17.自身托管節(jié)點中是否有節(jié)點地址首字節(jié)(即協(xié)調(diào)器地址)同發(fā)送協(xié)調(diào)器信道選擇指令的協(xié)調(diào)器的地址?如果有這樣的節(jié)點,進入步驟18,否則返回步驟11。

18.標記該托管節(jié)點為故障狀態(tài),向網(wǎng)關(guān)發(fā)送節(jié)點故障指令(包含節(jié)點地址),返回步驟11。

注:標記該托管節(jié)點為故障狀態(tài)后,下次數(shù)據(jù)匯集不會詢問該托管節(jié)點,該托管節(jié)點將判斷自身故障狀態(tài),啟動重新入網(wǎng)流程,優(yōu)先加入原協(xié)調(diào)器建立的網(wǎng)絡(luò)。從而實現(xiàn)了原協(xié)調(diào)器重新上線后,被托管節(jié)點回歸原協(xié)調(diào)器建立的網(wǎng)絡(luò)的功能。

處理節(jié)點請求入網(wǎng)指令子流程:

19.讀取指令,判斷指令類型?如果是新節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別),進入步驟20。如果是原有節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別),進入步驟23。如果是原有節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別),進入步驟21。如果是待托管節(jié)點請求入網(wǎng)指令(包含節(jié)點的地址和傳感器類別),進入步驟25。

20.分配節(jié)點地址,在信道0向節(jié)點發(fā)送允許新節(jié)點入網(wǎng)指令(包含節(jié)點地址)。

注:節(jié)點地址(2字節(jié))由協(xié)調(diào)器地址(1字節(jié))和入網(wǎng)序號n(1字節(jié))構(gòu)成。入網(wǎng)序號n=原有節(jié)點數(shù)s_node+1。

21.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,如果接收到節(jié)點確認入網(wǎng)指令(包含節(jié)點地址),則進入步驟22。否則,返回步驟11。

注:等待時間t_wait根據(jù)實際采用的433m無線模塊單次應(yīng)答所需時間決定。

22.更新節(jié)點數(shù)目s_node=s_node+1,標記節(jié)點為正常狀態(tài),向網(wǎng)關(guān)發(fā)送新節(jié)點入網(wǎng)指令(包含節(jié)點的地址和傳感器類別)。返回步驟11。

23.在信道0向節(jié)點發(fā)送允許原有節(jié)點入網(wǎng)指令(包含節(jié)點地址)。

24.標記節(jié)點為正常狀態(tài),向網(wǎng)關(guān)發(fā)送原有節(jié)點入網(wǎng)指令(包含節(jié)點的地址和傳感器類別)。返回步驟11。

25.在信道0向節(jié)點發(fā)送允許待托管節(jié)點入網(wǎng)指令(包含節(jié)點地址和使用信道)。

26.切換至信道0接收狀態(tài),等待回復(fù),等待時間為t_wait,如果接收到待托管節(jié)點確認入網(wǎng)指令(包含節(jié)點地址),則進入步驟27。否則,返回步驟11。

27.記錄該托管節(jié)點地址,標記節(jié)點為正常狀態(tài),向網(wǎng)關(guān)發(fā)送待托管節(jié)點入網(wǎng)指令(包含節(jié)點的地址和傳感器類別)。返回步驟11。

注:相比新節(jié)點入網(wǎng),托管節(jié)點入網(wǎng)時,協(xié)調(diào)器不更新節(jié)點數(shù)目s_node,不分配新地址,使托管節(jié)點能保存原網(wǎng)絡(luò)結(jié)構(gòu)信息。

數(shù)據(jù)匯集階段(步驟28-38):

28.定時器定時時間達到后,向網(wǎng)關(guān)發(fā)送獲取下次采集數(shù)據(jù)時間指令。

29.收到網(wǎng)關(guān)回復(fù)的通知下次采集數(shù)據(jù)時間指令(包含距下次采集數(shù)據(jù)時間間隔t_collect)后,更新定時器定時時間t_collect,定時器定時。

30.讀取第一個節(jié)點的地址和狀態(tài),清零故障節(jié)點總數(shù)n_error和新增故障節(jié)點數(shù)n_error_add。

31.該節(jié)點狀態(tài)是否為正常狀態(tài),進入步驟32。否則,進入步驟36。

32.在使用信道channel_used(協(xié)調(diào)器入網(wǎng)階段確定的使用信道)上向節(jié)點發(fā)送數(shù)據(jù)采集指令(包含節(jié)點地址、下次采集數(shù)據(jù)時間間隔t_collect、故障節(jié)點總數(shù)n_error和新增故障節(jié)點數(shù)n_error_add)。

33.切換至使用信道channel_used接收狀態(tài),開始定時t_wait,等待回復(fù),如果定時時間內(nèi)接收到節(jié)點發(fā)送測量數(shù)據(jù)指令(包含節(jié)點地址和測量數(shù)據(jù)),則進入步驟34。否則,進入步驟35。

34.記錄測量數(shù)據(jù),向網(wǎng)關(guān)發(fā)送協(xié)調(diào)器數(shù)據(jù)傳輸指令(包含節(jié)點地址和測量數(shù)據(jù))。等待定時時間到,進入步驟37。

注:需等待定時時間到達是為了確保在數(shù)據(jù)匯集階段內(nèi)協(xié)調(diào)器用在每一個節(jié)點上的時間相同,從而保障與節(jié)點的時間同步。

35.標記節(jié)點為故障狀態(tài),更新故障節(jié)點總數(shù)n_error=n_error+1,新增故障節(jié)點數(shù)n_error_add=n_error_add+1,向網(wǎng)關(guān)發(fā)送節(jié)點故障指令(包含節(jié)點地址)。進入步驟37。

36.更新故障節(jié)點總數(shù)n_error=n_error+1;

37.該節(jié)點是否為最后一個節(jié)點(包括托管節(jié)點在內(nèi))?如果是,進入步驟37,否則進入步驟38。

38.向網(wǎng)關(guān)發(fā)送本輪數(shù)據(jù)匯集完畢指令,返回步驟11。

39.讀取下一個節(jié)點的地址和狀態(tài),返回步驟31。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1