陳飛,張天宏
(南京航空航天大學 江蘇省航空動力系統重點實驗室,南京 210016)
?
基于Zynq的TTP/C總線節點備份與再整合
陳飛,張天宏
(南京航空航天大學 江蘇省航空動力系統重點實驗室,南京 210016)
TTP/C總線節點的備份與故障節點的再整合是提高總線可靠性與實用性的有效方法。參考TTP/C總線協議,在自主設計的基于Zynq的TTP/C總線控制器上設計了一種節點備份與再整合的方法,保證節點故障后可以重新整合進入集群,或者啟用備份節點來保證集群的正常功能,最后通過試驗驗證了所設計的節點備份與再整合方法的有效性。
節點備份;再整合;Zynq;TTP/C
時間觸發架構(TTA)是由歐洲委員會資助開發的分布式實時容錯系統架構,大量研究表明,對高可靠性系統而言,TTA架構具有更大的優勢[1]。1993年,在TTA架構的基礎上,TTP/C(時間觸發協議C類標準)被首次提出,其在安全性、可用性和可組合性等方面具有嚴苛的要求,更加適合分布式實時系統[2-3]。
故障是總線不得不面對和處理的情形,TTP/C總線協議采用組成員協議(GMP)這種分布式多機容錯策略來快速探測和隔離故障節點,以維持整個集群的一致性,保證在故障模式下,集群中的每個正常節點都必須對其他節點的運行狀態有相同的判斷,以便采取和其他正常節點協調的容錯行動,同時故障節點也會檢測到自身已被集群踢出而進入凍結狀態[4-5]。
圖1是TTP/C協議規定的分層結構,協議控制器主要包含3層:協議服務層、數據鏈路層和物理層。協議服務層主要實現TTP/C總線集群啟動、故障節點再整合等高級功能。數據鏈路層實現數據組幀、CRC校驗、曼徹斯特編解碼、數據傳輸等底層功能。物理層是通信協議的最底層,為各個節點的數據鏈路層之間提供一條物理的比特流收發通道,TTP/C協議沒有明確規定物理層傳輸介質,可以根據工作環境和傳輸帶寬選擇同軸電纜、雙絞線或者光纖。本文設計的節點備份與再整合位于協議服務層。

圖1 TTP/C協議的功能分層
如圖2所示,TTP/C總線控制器在運行過程中包含可能的6個狀態和15個狀態轉移路徑,其中啟動狀態只有預設的啟動節點才具備。表1為這6個狀態的特征描述,狀態5是節點正常運行的狀態,在這個狀態下的節點和集群中的其他正常節點處于時間同步和成員關系一致狀態,并在MDEL設定的時間槽內發送數據。表2列出了6個狀態之間的狀態轉移條件。

圖2 TTP/C總線控制器的狀態轉移圖

編 號狀 態描 述0凍結等待主機激活1初始化完成控制器參數初始化和MDEL的CRC校驗2偵聽監聽傳輸通道上用于集群同步的I幀3啟動預設的啟動節點在總線上廣播I幀4被動已經實現時間同步,等待獲取發送時間槽5運行已經實現與集群的時間和成員關系同步,并獲取了發送時間槽

表2 狀態轉移描述列表
TTP/C總線集群的正常節點大部分時間處在運行狀態,當節點檢測到內部故障時,立即進入凍結狀態,等待再整合進入集群,如果整合次數超過給定值,說明節點故障無法修復,需啟動備份節點。對于備份節點,正確啟動后進入被動狀態,此時備份節點除了發送功能,其他完全正常,包括正常執行容錯算法、接收其他節點的信息、進行時鐘同步等。備份節點在被動狀態時依據集群中其他節點的成員列表檢測被備份節點的工作狀態,當被備份節點故障后等待其再整合結果,如果再整合失敗,則啟動備份節點,保證集群的正常功能。
2.1 故障節點的再整合
本文設計的故障節點再整合中,當節點隱式確認失效時,同樣認為發生內部故障進入凍結狀態,而不是進入被動狀態,等待獲取發送時間槽。

圖3 節點再整合流程
圖3所示是節點再整合流程,當節點檢測到自身內部故障時,進入凍結狀態,如果此時再整合次數未達到上限,節點可以嘗試進行再整合進入集群。此時節點默認處于未啟動狀態,等待冷啟動幀重新啟動,正確啟動后讀取MDEL列表中的發送時間槽,時間到后,將自身加入成員列表并嘗試發送一個信息,隨后偵聽其他節點的信息,判斷自己是否重新進入集群,如果其他節點的成員列表包含自身,說明成功進入集群,否則再整合失敗,重新進行整合或者永久進入凍結狀態。
2.2 節點的備份

圖4 TTP/C總線備份 節點的運行流程
圖4所示是備份節點的運行流程。備份節點的啟動等功能與正常節點完全相同,不同的地方在于備份節點正常啟動后需長期處于被動狀態,時刻依據集群內其他節點的成員列表信息判斷被備份節點的工作狀態,依據TTP/C總線協議單故障假設,在一個TDMA周期內最多有一個節點故障,如果是被備份節點故障,則集群中其他所有正常節點的成員列表不包含被備份節點,否則集群中其他所有正常節點的成員列表必然包含被備份節點,因此備份節點依據集群內其他節點的成員列表是否全部不包含來判斷被備份節點的工作狀態。如果集群內其他節點的成員列表全部不包含被備份節點,則當前被備份節點不在集群中,處于故障狀態。
備份節點在檢測到被備份節點故障后,等待其進行再整合過程,如果連續多次檢測到被備份節點始終處于故障狀態,說明其故障無法恢復,此時備份節點轉為正常節點,立即進入運行狀態接替對應的故障節點,保持集群的正常功能。具體代碼如下:
if((node_error==1) && (backup==1)){
//backup為是否備份標志位
//1表示當前節點為備份節點,0表示節點目前為正常節點
//被備份節點發生故障,自身為備份節點
//backup_count為被備份節點故障檢測次數
backup_count++;
if(backup_count>=4){
//被備份節點故障檢測次數超過給定值,啟動備份節點
backup_count=4;
backup=2;
}
}
if(backup==2){
//被備份節點故障檢測次數超過給定值
……//初始化各類計數值以使節點進入運行狀態
mode=5;//mode為工作狀態標志位,5表示運行狀態
backup=0;//當前節點轉換為正常節點
}
試驗集群包含4個節點,每個TDMA(靜態時分多路復用)周期分配4個時間段,并通過串口將本地成員列表和接收到的其他節點成員列表一起發送給串口助手進行顯示。成員列表采用一個8位無符號整型數表示,低4位從第0位開始,分別表示1~4號節點的狀態,1表示節點正常,0表示節點故障,高4位暫時未啟用,默認為1。通信協議如下:

012~670x550xAA節點1~4的成員列表校驗
圖5所示是1號節點發送給串口助手的成員列表信息,由于1號節點只能在其他節點發送數據幀之后更新其各節點的成員列表,這會導致串口助手中顯示的各節點成員列表存在滯后,才會出現圖5中各節點的成員列表不同的現象,但這并不會影響集群的正常運行。

圖5 TTP/C總線節點備份與再整合試驗結果
4號節點備份試驗結果中發生永久故障,第一個方框區域中4號節點發生故障,在之后的多個周期內未能再整合進入集群,在第二個方框區域中備份節點成功啟動并進入集群,接替原4號節點的功能繼續運行。4號節點再整合試驗結果中發生瞬發故障,黃色區域中4號節點由一開始的故障狀態經過3個周期后成功再整合進入集群,繼續正常運行。由上述試驗結果可知,當發生瞬發故障后,節點可以成功再整合進入集群,而當節點發生永久故障無法再整合進入集群時,可以成功啟動備份節點,繼續保證集群的正常運行。

[1] 魏婷,張喜民,陳益,等.一種基于TTP/C協議的容錯策略研究[J].航空計算技術,2008,38(3):90-93.
[2] 趙罡,何鋒,王紅春,等.航空電子環境TTP/C總線應用技術研究[J].航空計算技術,2014,44(6):110-115.
[3] 張文豪,張天宏,陳飛,等.基于Zynq的TTP/C分布式控制系統智能節點設計[J].單片機與嵌入式系統應用,2016,16(5):53-56.
[4] 劉冬冬,張天宏,陳建,等.TTP/C協議的關鍵特性研究[J].計算機測量與控制,2012,20(10):2769-2772.
[5] 劉雙與,郭麗娟,張激,等. TTP/C協議的一致性機制研究[J].計算機工程,2006,32(5):119-121.
陳飛(碩士研究生),主要從事航空發動機控制系統設計與仿真;張天宏(教授),研究方向為嵌入式控制系統、系統控制與仿真。
Backup and Integration for TTP/C Bus Based on Zynq
Chen Fei,Zhang Tianhong
(Jiangsu Province Key Laboratory of Aerospace Power System,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China)
The backup and integration are the effective methods to improve the reliability and practicability of the TTP/C bus.A method of backup and integration is designed on the self-designed TTP/C bus controller based on TTP/C bus protocol.The method can make the fault node rejoin the cluster or use the backup node to ensure the normal function of cluster.At last,the experiment results prove the validity of the designed method.
backup;integration;Zynq;TTP/C
V233.7
A
?士然
2016-06-02)