本發明涉及總線式系統的軟件領域,尤其涉及一種總線式拓撲結構的設備自適應尋址的方法。
背景技術:
目前,總線式是最為普及的網絡拓撲結構之一,連接形式簡單、易于安裝部署、成本低,增加和刪除終端設備都比較靈活,不影響網絡的正常運行,系統的擴充性能好。總線型拓撲結構中存在一個主設備,一個或多個從設備,主設備和從設備之間只有一條雙向的通信線路,通信連路上同一時間內只允許一個設備發送數據信息,否則將造成消息混亂,數據通信依靠地址進行一對一或廣播傳送。
原有技術方案,通過人工記錄總線上的主從設備關系即相關地址信息,通過人工錄入到服務器中或主設備存儲區內,耗時長、人力需求大、不準確率高、操作繁瑣,特別是在從設備新接入或離線后,系統無法自適應更新存儲的從設備信息,造成系統故障頻發的問題。
技術實現要素:
為了解決現有技術存在的問題,本發明基于總線式拓撲結構的主從設備數據自適應獲取問題的解決方法,提供一種總線式拓撲結構的設備自適應尋址的方法。
本發明的技術方案為:一種總線式拓撲結構的設備自適應尋址的方法,主設備選擇三種指令對從設備進行操控,所述三種指令為設備注銷、設備預注冊和設備注冊;廣播發送設備注銷指令后,總線上接收到指令的從設備均需重置設備狀態,將原有的已注冊或未注冊或其他狀態均重置為未注冊狀態;廣播發送設備預注冊指令后,總線上的從設備接收到指令,將根據相關流程進行操作;廣播發送設備注冊指令后,進入等待流程,等待接收從設備發送來的設備注冊信息,接收到之后根據從設備的地址信息,一對一發送確認信息,然后繼續進入等待流程,除非在一段時間內未接收到任何從設備信息,即超時時間已到,默認總線上的從設備已完成設備注冊,主設備退出等待流程,結束操作。
所述主設備對從設備進行設備注冊,步驟包括:
步驟1,主設備廣播發送設備注冊指令;
步驟2,主設備進入等待流程,等待接收從設備發送來的設備注冊信息;
步驟3,如果主設備接收到從設備信息,則轉步驟4,否則轉步驟5;
步驟4,主設備記錄從設備信息,回復確認信息,轉步驟2;
步驟5,判斷是否超時,如果未超時,則轉步驟2,否則轉步驟6;
步驟6,默認總線上的從設備已完成設備注冊,主設備退出等待流程,結束操作。
所述連接到總線上的從設備,可能有以下三種狀態:未注冊、已注冊、已注冊;1)所述從設備未注冊狀態:可能是從未接入過任何總線的設備,即從未注冊過;也可能是被主設備注銷過的設備,即未注冊狀態設備;2)所述從設備已注冊狀態:可能是已注冊過其他主設備,已離線的設備,即已注冊且不匹配現有主設備;3)所述從設備已注冊狀態:也可能是已接入總線,從設備已注冊且匹配現有主設備。
所述主設備的兩種狀態為:從未記錄過任何從設備信息和記錄了部分從設備信息;
所述的主設備從未記錄過任何從設備信息的狀態指的是,新接入的主設備;
所述的主設備記錄了部分從設備信息的狀態指的是,記錄過部分從設備信息,而因從設備的新接入或離線導致現有記錄信息未更新。
所述從設備被動式接收主設備的指令信息,所述三種指令為設備注銷、設備預注冊和設備注冊;
從設備接收到主設備發送的設備注銷指令后,從設備重置自身設備狀態,將狀態更改為未注冊狀態;
所述從設備接收到主設備發送的設備注銷指令后,具體步驟包括:
步驟a,判斷從設備是否接收到設備注銷指令,若接收到指令,則轉步驟b,否則轉步驟c;步驟b,從設備清除設備狀態,狀態更改為未注冊狀態,結束操作;步驟c,從設備結束操作;
從設備接收到主設備發送的設備預注冊指令,從設備開始校對自身的原有注冊信息,若自身設備已注冊且注冊主設備為當前主設備,則維持現有狀態,結束操作;
所述從設備接收到主設備發送的設備預注冊指令之后,具體步驟包括:
步驟1,判斷從設備是否接收到設備預注冊指令,若接收到指令,則轉步驟2,否則轉步驟3;
步驟2,從設備校對自身原有主設備ID信息,若自身設備已注冊,則轉步驟4,否則轉步驟6;
步驟3,從設備結束操作;
步驟4,判斷與原注冊主設備是否相同,若相同則轉步驟5,否則轉步驟6;
步驟5,從設備保持設備已注冊狀態,結束操作;
步驟6,重置從設備狀態為未注冊,并根據自身ID換算出唯一注冊窗口期,結束操作;
從設備接收到設備注冊指令后,從設備進入窗口期等待流程,等待自身設備的窗口期到來,一旦窗口期到來,退出等待流程,開始向主設備發送注冊信息,之后再次進入等待流程,等待主設備確認回復,接收到主設備確認回復后,更改從設備狀態為已注冊,退出流程;若一段時間后依舊沒有接收到回復信息,即超時時間到,注冊失敗,結束流程,具體步驟包括:
步驟a,判斷從設備是否接收到設備注冊指令,若接收到指令,則轉步驟b,否則轉步驟;
步驟b,從設備進入窗口期等待流程,等待自身設備的窗口期到來;
步驟c,判斷窗口期是否到來,若窗口期到來則轉步驟d,否則轉步驟b;
步驟d,從設備向主設備發送注冊信息,再次進入等待流程;
步驟e,判斷等待是否超時,若超時則注冊失敗,結束操作;否則轉步驟d;
步驟f,等待主設備確認回復,判斷是否接收到主設備確認回復,若接收到回復則轉步驟g,否則轉步驟d;
步驟g,更改從設備狀態為已注冊,退出流程,結束操作。
所述窗口期指的是設備根據自身ID編號計算出來的不同于其他主設備的唯一發射時間點,在此時間點發送數據不會和其他從設備發生數據沖突。
相對于現有技術,本發明提出了基于總線式拓撲結構的主從設備數據自適應獲取問題的解決方法,僅需三條指令就可以完成整個總線的設備信息獲取和更新工作,便捷高效,減少了人為記錄注冊的繁瑣環節,也提高了準確率,進而提升整個數據采集總線的工作效率。
附圖說明
圖1是本發明的流程圖一;
圖2是本發明的流程圖二。
具體實施方式
下面結合附圖1和附圖2,對本發明進一步進行說明。
在總線式拓撲結構中,由于主從設備之間共用數據通訊線路,命令的發起都是由主設備主導,從設備被動接收主設備的指令信息,同一時間內只能有一個從設備進行回復,否則信息將產生亂碼,導致數據紊亂、無法解析。主從設備都是以微控制器MCU為平臺的嵌入式設備,具有一定的非易失性存儲空間用于存儲設備狀態信息和設備地址信息等相關信息。
如附圖1所示,本發明一種總線式拓撲結構的設備自適應尋址的方法包括主設備選擇三種指令對從設備進行操控,所述三種指令為設備注銷、設備預注冊和設備注冊;廣播發送設備注銷指令后,總線上接收到指令的從設備均需重置設備狀態,將原有的已注冊或未注冊或其他狀態均重置為未注冊狀態;廣播發送設備預注冊指令后,總線上的從設備接收到指令,將根據相關流程進行操作;廣播發送設備注冊指令后,進入等待流程,等待接收從設備發送來的設備注冊信息,接收到之后根據從設備的地址信息,一對一發送確認信息,然后繼續進入等待流程,除非在一段時間內未接收到任何從設備信息,即超時時間已到,默認總線上的從設備已完成設備注冊,主設備退出等待流程,結束操作。
所述主設備對從設備進行設備注冊,步驟包括:
步驟1,主設備廣播發送設備注冊指令;
步驟2,主設備進入等待流程,等待接收從設備發送來的設備注冊信息;
步驟3,如果主設備接收到從設備信息,則轉步驟4,否則轉步驟5;
步驟4,主設備記錄從設備信息,回復確認信息,轉步驟2;
步驟5,判斷是否超時,如果未超時,則轉步驟2,否則轉步驟6;
步驟6,默認總線上的從設備已完成設備注冊,主設備退出等待流程,結束操作。
所述連接到總線上的從設備,可能有以下三種狀態:未注冊、已注冊、已注冊;1)所述從設備未注冊狀態:可能是從未接入過任何總線的設備,即從未注冊過;也可能是被主設備注銷過的設備,即未注冊狀態設備;2)所述從設備已注冊狀態:可能是已注冊過其他主設備,已離線的設備,即已注冊且不匹配現有主設備;3)所述從設備已注冊狀態:也可能是已接入總線,從設備已注冊且匹配現有主設備。
所述主設備的兩種狀態為:從未記錄過任何從設備信息和記錄了部分從設備信息;所述的主設備從未記錄過任何從設備信息的狀態指的是,新接入的主設備;所述的主設備記錄了部分從設備信息的狀態指的是,記錄過部分從設備信息,而因從設備的新接入或離線導致現有記錄信息未更新。
本發明一種總線式拓撲結構的設備自適應尋址的方法包括還包括所述從設備被動式接收主設備的指令信息,所述三種指令為設備注銷、設備預注冊和設備注冊。
從設備接收到主設備發送的設備注銷指令后,從設備重置自身設備狀態,將狀態更改為未注冊狀態;所述從設備接收到主設備發送的設備注銷指令后,具體步驟包括:步驟a,判斷從設備是否接收到設備注銷指令,若接收到指令,則轉步驟b,否則轉步驟c;步驟b,從設備清除設備狀態,狀態更改為未注冊狀態,結束操作;步驟c,從設備結束操作。
從設備接收到主設備發送的設備預注冊指令,從設備開始校對自身的原有注冊信息,若自身設備已注冊且注冊主設備為當前主設備,則維持現有狀態,結束操作;所述從設備接收到主設備發送的設備預注冊指令之后,具體步驟包括:
步驟1,判斷從設備是否接收到設備預注冊指令,若接收到指令,則轉步驟2,否則轉步驟3;
步驟2,從設備校對自身原有主設備ID信息,若自身設備已注冊,則轉步驟4,否則轉步驟6;
步驟3,從設備結束操作;
步驟4,判斷與原注冊主設備是否相同,若相同則轉步驟5,否則轉步驟6;
步驟5,從設備保持設備已注冊狀態,結束操作;
步驟6,重置從設備狀態為未注冊,并根據自身ID換算出唯一注冊窗口期,結束操作;
從設備接收到設備注冊指令后,從設備進入窗口期等待流程,等待自身設備的窗口期到來,一旦窗口期到來,退出等待流程,開始向主設備發送注冊信息,之后再次進入等待流程,等待主設備確認回復,接收到主設備確認回復后,更改從設備狀態為已注冊,退出流程;若一段時間后依舊沒有接收到回復信息,即超時時間到,注冊失敗,結束流程,具體步驟包括:
步驟a,判斷從設備是否接收到設備注冊指令,若接收到指令,則轉步驟b,否則轉步驟;
步驟b,從設備進入窗口期等待流程,等待自身設備的窗口期到來;
步驟c,判斷窗口期是否到來,若窗口期到來則轉步驟d,否則轉步驟b;
步驟d,從設備向主設備發送注冊信息,再次進入等待流程;
步驟e,判斷等待是否超時,若超時則注冊失敗,結束操作;否則轉步驟d;
步驟f,等待主設備確認回復,判斷是否接收到主設備確認回復,若接收到回復則轉步驟g,否則轉步驟d;
步驟g,更改從設備狀態為已注冊,退出流程,結束操作。
所述窗口期指的是設備根據自身ID編號計算出來的不同于其他主設備的唯一發射時間點,在此時間點發送數據不會和其他從設備發生數據沖突。
以上所述的僅是本發明的優選實施方式,應當指出,對于本領域的技術人員來說,在不脫離本發明整體構思前提下,還可以作出若干改變和改進,這些也應該視為本發明的保護范圍。