本發明涉及一種單控制器主從式網絡總線控制器在線切換方法,可以用于解決采用主從式總線架構的分布式系統在運行過程中總線動態切換的問題。
背景技術:
隨著模塊設計和分布式技術的發展和普及,利用總線來構建系統解決方案的方法變得越來越普遍,大型工業設備控制系統,多點布控的智能監測系統以及航空航天領域等都會用到總線。總線技術按照拓撲結構可以分為星型總線、菊花鏈結構總線、環形結構總線,按照總線控制權的分布可以分為主從式總線、仲裁式總線、對等式總線等。其中主從式總線在穩定性要求較高的系統中應用較為廣泛。
在以主從式總線網絡為邏輯拓撲結構的系統中,系統運行過程中根據系統功能和狀態的轉換,常常希望能夠自適應優化網絡負載量及局部化負載分布,適時分布網絡數據交換量分布。根據功能轉換動態切換主從式總線的總線控制器是實現這個目標的一種方式。
單控制器主從式總線的控制器的切換通常會影響正常通信,為了避免通信過程中的異常消息造成系統中各個設備的異常動作,甚至對系統造成危害,通常需要斷電,然后通過更換配置軟件的方式重新配置新的總線控制器后再重新加電。
為了提高系統工作的效率,少數更加先進的系統方案實現了總線控制器的自動切換技術。目前現有的自動切換方案往往采用“命令后下崗”模式,即當前總線控制器通知備選總線控制器切換后,自己切換為總線從屬站點的身份,備選總線控制器在收到總線控制器切換請求后,將自己切換為總線控制器,然后切換過程結束。而這個過程通常是不能容錯的,如通信,控制器站點屬性切換過程等都可能會引起切換的不成功。在切換失敗時,通常會導致總線上無控制器,總線靜默,而在這種情況下,由于總線上無任何信息傳輸,造成設計者無法對系統的故障狀態進行進一步的診斷。更進一步的方案是通過備保發送將通信的可靠性增加,但這種方案并不能解決站點切換失敗的情況,因此也沒有避免總線靜默的問題。
技術實現要素:
本發明的技術解決問題是:克服現有技術的不足,提出了一種總線控制器切換失敗時不會進入靜默狀態的高可靠的總線控制器在線切換方法。
本發明的技術解決方案是:一種單控制器主從式網絡總線控制器在線切換方法,該方法包括以下步驟:
(1)、當前總線控制器Ctrlorcurrent向將要切換為總線控制器的站點Ctrlorcandidate發送控制器切換請求消息;
(2)、Ctrlorcandidate在收到Ctrlorcurrent發來的控制器切換請求消息后,向Ctrlorcurrent回復控制器切換請求應答消息,然后等待tdelay1后,將自身切換為總線控制器;
(3)、Ctrlorcurrent在收到Ctrlorcandidate發送的控制器切換請求應答消息后,將自己切換為從屬站點;
(4)、Ctrlorcandidate在切換為總線控制器后,向已切換為從屬站點的Ctrlorcurrent發送切換好消息,并等待tdelay2后,讀取Ctrlorcurrent回復消息,若回復標志有效,則切換成功,結束切換過程,否則,Ctrlorcandidate重新將自己切回從屬站點;
(5)、Ctrlorcurrent在將自己切為從屬站點后,在預設的Tswitch時間段內,若收到Ctrlorcandidate作為總線控制器發來的總線控制器切換好消息,則置位回復消息中的回復標志,發送回復消息后等待總線控制器來取,若預設的Tswitch時間之后,還未收到Ctrlorcandidate作為總線控制器發來的總線控制器切換好消息且切換次數小于等于N,則重新將自己切換為總線控制器,記錄切換次數加1,重復步驟(1)~步驟(5),當切換次數大于N時,報警總線故障,結束切換過程。
在總線控制器切換過程中,控制器切換請求消息,控制器切換請求應答消息,切換好消息均通過多次發送以避免通信誤差引起的控制器切換失敗。
所述tdelay1為Ctrlorcurrent從總線控制器切換為總線從屬站點的基準時長;所述Tswitch為Ctrlorcandidate由總線從屬站點切換為總線控制器的基準時長;所述tdelay2為已經切換為總線從屬站點的Ctrlorcurrent置好總線從屬站點切換好狀態標志的基準時長。
所述Ctrlorcurrent從總線控制器切換為總線從屬站點的基準時長、Ctrlorcandidate由總線從屬站點切換為總線控制器的基準時長、已經切換為總線從屬站點的Ctrlorcurrent置好總線從屬站點切換好狀態標志的基準時長均通過統計測試得到的實際執行時間得到,所述測試次數大于5000次。
所述各基準時長具體統計方法為:以測試得到的實際執行時間作為樣本,取基準時長對應的樣本數據的中位數作為該基準時長待定值,在基準時長待定值的基礎上增加各自統計樣本標準差的3倍值得到各個基準時長的最終值。
本發明與現有技術相比的有益效果是:
(1)、本發明采用切換失敗自檢測并重試的功能大大增加了總線切換的穩定性和可靠性,而其可以在保持系統總線功能正常運轉的情況下完成總線控制器的切換過程,使整個切換過程對總線中的其他站點透明化,基于主從式總線的特點,在主從式總線上的所有從屬站點在需要通信時,無需知道總線上的哪個站點是總線控制器,只需有總線控制器為其服務即可,大大提高了其可用性。
(2)、本發明通過對主從式總線上的控制器切換問題過程邏輯化處理后,盡可能獲得一個在邏輯上可以對故障自愈合、避免總線靜默的總線控制器切換方法,當總線控制器切換失敗時,總線并不會進入靜默狀態。
(3)、本發明通過請求確認、失敗回滾重試等手段避免了由于切換動作執行時序錯位,總線控制器切換失敗等而導致的總線上多控制器競爭或無控制器等異常狀態的產生。
(4)、本發明通過測試切換結果、重新切換等方法實現在出現切換失敗的情況下,可以進行重新切換以及在重試失敗后及時報警,在這個過程中不會產生額外的噪聲通信消息或錯誤通信消息,降低了系統在總線切換過程中出現故障的概率。
(5)、本發明通過多次、備保發送總線控制器切換過程中所涉及到的控制器切換請求消息,控制器切換請求應答消息,切換好消息,以避免通信誤差引起的控制器切換失敗,提高控制器切換的成功率。
(6)、本發明通過對tdelay1的設計避免了總線上出現兩個控制器競爭而導致通信失敗造成的功能虛警問題;
(7)、本發明通過對Tswitch的設計避免了總線長時間處于靜默狀態,影響其他站點通信的實時性,保持了其他站點在切換過程中依然在線的特點;
(8)、本發明通過tdelay2的設計包容了原總線控制器因初始化內存,任務調度等其他功能帶來的狀態標志置位延時,從而保證了最終應答時序的順序,避免了新總線控制器再次誤切回總線從屬站點。
(9)、本發明根據大數定理及正態分布理論,本發明的各個基準時間獲取方法在理論上可以保證實際數據的99.7%落在估計范圍內,提高了估計時間的準確性,從而解決了由于預估時間不準確導致的時序偏差,引起故障和虛警的問題。
附圖說明
圖1為本發明的處理過程示意圖;
具體實施方式
以下以MILSTD1553B總線系統為例,結合附圖和具體實施方式對本發明進行詳細說明。
MILSTD1553B數據總線具有雙向輸出特性,實時性和可靠性高,廣泛應用于當代的運輸機和相當數量的民航客機以及軍用飛機上,航天系統也廣泛的應用這一總線。1553B總線系統主要由3部分組成:總線控制器BC;遠程終端RT;總線監視器BM。1553B總線的工作頻率是1Mb/s。采用曼徹斯特II碼,半雙工工作方式。主要硬件部分為總線控制器(BC)和遠程終端(RT),總線監控器(BM)作為可選設備。一般情況下,這3部分通過1個多路總線接口(MBI)來完成。可把MBI嵌在計算機內。該總線有10中消息格式。每個消息至少包含2個字(命令字和狀態字,不帶數據字),每個消息可以包含32個數據字。消息的每個字有16個消息位,1個奇偶校驗位和3各位長的同步頭。1553B總線是典型的時分制命令/響應式多路復用數據總線,即主從式網絡總線,總線上傳輸的數據均由BC來調度,每個遠程終端站點RT將要發送的消息準備好后,放入固定的發送緩沖區中,由BC來決定什么時候發送以及發送到哪個信宿,BC會將信源RT站點的發送緩沖區中將消息取出后,放入到信宿RT的接受緩沖區中,或者BC直接作為信宿直接獲得消息,從而實現一次通信過程。本發明將選取1553B總線構建的系統中,總線控制器BC的切換過程來進一步說明本發明所述方法的實施過程。
實施例選擇兼容61580芯片功能的微處理器作為1553B總線站點的實現芯片,包括BC和RT,總線中不含BM站點。將總線中的每個RT站點接收當前總線控制器BC發送的總線控制器切換請求的子地址設計為5,每個站點回復BC總線控制器切換請求消息的子地址設計為4,每個站點標示自身已從BC狀態切換到RT狀態的確認消息發送子地址設計為9,每個站點接收其他站點發送的標示自身已經完成由RT切換到BC的確認消息的接收子地址設計為10,如此,在任意時刻均可將總線中的任意RT站點切換為BC。定義總線控制器切換消息格式為:
下面將具體描述在工作過程中,將總線控制器BC切換為RT5,而將原總線中的RT10切換為新的總線控制器BC的過程。該切換過程將包含如下步驟:
(1)、當前總線控制器BC向將要切換為總線控制器的站點RT10的接收子地址5發送控制器切換請求消息,消息的數據字包括{0xA5F0,0xAAAA,0x0005,0x5438},然后通過循環查詢RT10的子地址4來檢查RT10是否發送確認收到控制器切換請求的應答消息;
(2)、RT10通過1553B總線芯片中斷的方式接收到BC發來的控制器切換請求消息后,識別BC將要切換的目標RT站點地址為5,然后將控制器切換請求應答消息{0xA5F0,0x5555,0x0000,0x8214}放在發送子地址4等待BC來取,待BC取走應答消息后,將該發送子地址清零,等待tdelay1=3s,將自身切換為總線控制器BC。
(3)、BC在收到RT10發送的控制器切換請求應答消息后,開始將自己的1553B芯片初始化為RT5,到此處的上述步驟的設計方式避免了RT10由于沒有收到切換請求而未切換成BC站點的故障;
(4)、RT10在切換為BC后,向RT5的子地址10發送切換好消息{0xA5F0,0xF0F0,0x0000,0x4556},并等待tdelay2=500ms后讀取RT5發送子地址9中RT5確認已由BC切換為RT的回復消息{0xA5F0,0xFF00,0x0000,0x1568},若回復標志有效,則切換成功,否則重新將自己切為RT10;tdelay2為已經切換為總線從屬站點的Ctrlorcurrent置好總線從屬站點切換好狀態標志的基準時間長度。此基準時間長度根據控制器的處理速度和當前軟件的任務調度量來確定,此處取100ms。此步驟主要用于RT10告知原BC站點,此時自己已經成功切換為總線控制站點,當原BC站點(即現在的RT5站點)收到現任BC站點(原RT10)發出的確認消息后,即可確認原RT10站點已經成功切換到BC站點,這個過程避免了由于RT10執行BC站點切換的過程中發生故障導致BC站點切換不成功的問題。若由于通信故障,導致原BC站點(即現在的RT5站點)未收到現任BC站點(原RT10)發出的確認消息時,則需將自身重新切換RT10站點狀態,等待原BC站點來再次重新完成BC站點切換功能。
(5)、原BC在將自己切為RT5后,延時Tswitch=3s,在延時時間段內,同樣以1553B芯片中斷的方式等待接收BC發送的總線控制器切換好消息{0xA5F0,0xF0F0,0x0000,0x4556},若收到BC發來的總線控制器切換好消息,則置將自己的發送子地址10緩沖區中填寫表示自身已完成從BC切換到RT的狀態的回復消息{0xA5F0,0xFF00,0x0000,0x1568},等待BC來取,若超過Tswitch=3s時間后,還未收到Ctrlorcandidate作為總線控制器發來的總線控制器切換好消息且切換次數小于等于N,則重新將自己切換為總線控制器,記錄切換次數加1,重復步驟(1)~步驟(5);當切換次數大于N時,N≥1,如:N取3,N報警總線故障,結束切換過程。本步驟的意義在于,若未收到現任BC站點(即原RT10站點)發送的BC切換好確認消息時,則認為原RT10在向BC站點切換的過程中發生了問題,此時總線處于無BC狀態,因此將自己重新切換回BC站點,再次執行總線的調度工作,重新嘗試完成總線BC的切換功能。此過程若重試N次后依然存在故障,即認為系統故障無法恢復,輸出報警,等待排故。
所述tdelay1為Ctrlorcurrent從總線控制器切換為總線從屬站點的基準時長;所述Tswitch為Ctrlorcandidate由總線從屬站點切換為總線控制器的基準時長;所述tdelay2為已經切換為總線從屬站點的Ctrlorcurrent置好總線從屬站點切換好狀態標志的基準時長。
所述Ctrlorcurrent從總線控制器切換為總線從屬站點的基準時長、Ctrlorcandidate由總線從屬站點切換為總線控制器的基準時長、已經切換為總線從屬站點的Ctrlorcurrent置好總線從屬站點切換好狀態標志的基準時長均通過統計測試得到的實際執行時間得到,所述測試次數大于5000次,具體統計方法為:以測試得到的實際執行時間作為樣本,取基準時長對應的樣本數據的中位數作為該基準時長待定值,在基準時長待定值的基礎上增加各自統計樣本標準差的3倍值得到各個基準時長的最終值。
上述各個基準時長獲取統計方法建立在大數定理及正態分布理論基礎上,可以保證實際數據的99.7%落在估計范圍內,提高了估計時間的準確性,從而解決了由于預估時間不準確導致的時序偏差,引起故障和虛警的問題。
為了提高控制器切換的成功率,在總線控制器切換過程中,控制器切換請求消息,控制器切換請求應答消息,切換好消息均可以通過多次發送以避免偶然的總線通信干擾故障引起的控制器切換失敗。
本發明未詳細描述內容為本領域技術人員公知技術。