一種can總線冗余通信方法及系統的制作方法
【技術領域】
[0001]本發明涉及工業總線控制技術領域,尤其涉及一種CAN總線冗余通信方法及系統。
【背景技術】
[0002]控制器局域網(CAN,Controller Area Network)總線是國際上應用最廣泛的現場總線之一。由于CAN總線支持多主、總線利用率高、節點在錯誤嚴重的情況下具有自動退出總線的功能、支持按優先級通信、抗電磁干擾性強、檢錯能力強等優點,在工業和汽車等領域廣泛使用。
[0003]雖然CAN總線已經具備較高的可靠性,但單條總線上的任何部位出現故障,仍將可能引起整條總線的通信異常。因此,在工業控制領域,一般采用冗余的方法進一步提高CAN總線的可靠性。
[0004]現有技術中CAN總線的冗余通信主要有以下三種情況:
[0005]第一種,發送設備在兩條冗余CAN總線上同時發送相同的數據幀,接收設備在過濾重復的數據幀后完成數據接收。這種方法首先在重復數據幀過濾時,由于網絡延時、總線沖突等原因存在一定技術難點和風險,也增加了節點處理負荷;其次雖然使用兩條CAN總線,但實際有效的通信帶寬并沒有增加到兩倍。
[0006]第二種,兩條CAN總線分別作為工作通道和備用通道,各節點僅在工作通道上發送數據;當工作通道發生故障后,切換到備用通道上發送數據。這種方法雖然實現較簡單,不存在過濾重復數據幀的問題,但當兩條CAN總線各有一個節點故障時,就無法維持完整的通信鏈路;其次,這種方法也沒有增加實際有效的通信帶寬。
[0007]第三種,采用通信登記表的方法選擇一條CAN總線進行數據傳輸,但該通信登記表是在每次數據通信前,通過兩個節點之間的測試幀臨時建立的,這樣就在每次通訊前增加了多余的報文和通道選擇時間。另外,該將數據按長度分為單幀報文和大批量報文,并在通信異常時采用不同的重傳機制。但在很多實際情況中,長度并非數據的最重要特征,數據所要實現的功能更能夠代表其本質。
[0008]因此,本領域技術人員提供一種CAN總線冗余通信方法及系統,能夠保證數據傳輸的可靠性,并且提高CAN總線的利用率。
【發明內容】
[0009]為了解決現有技術,本發明提供一種CAN總線冗余通信方法及系統,能夠保證數據傳輸的可靠性,并且提高CAN總線的利用率。
[0010]本實施例提供一種CAN總線冗余通信方法,應用于CAN總線系統,該系統包括:兩條CAN總線和多個節點,所述兩條CAN總線分別為第一條CAN總線和第二條CAN總線,每個節點包括:處理器、第一 CAN收發器和第二 CAN收發器;所述第一 CAN收發器連接所述第一條CAN總線,所述第二 CAN收發器連接所述第二條CAN總線;包括以下步驟:
[0011]源節點通過自身處理器中保存的鏈路狀態表判斷與目標節點之間CAN總線的鏈路狀態是否正常;每個所述節點的處理器中均保存所述鏈路狀態表,所述鏈路狀態表用來表征該節點與其他節點之間CAN總線的鏈路狀態;每個節點按照預定周期將節點狀態數據廣播到所述兩條CAN總線上,其他節點按照接收的所述節點狀態數據更新自身處理器中的鏈路狀態表;
[0012]如果判斷所述源節點與目標節點之間的兩條CAN總線的鏈路狀態均正常,則選擇其中一條CAN總線將數據發送至所述目標節點;所述數據包括實時數據和非實時數據,所述實時數據是指周期性傳輸,用于節點輸入輸出或實時處理的數據;所述非實時數據是指非周期性傳輸,用于節點管理和節點配置的數據;
[0013]如果判斷所述源節點與目標節點之間僅有一條CAN總線的鏈路狀態正常,則選擇正常的CAN總線將數據發送至所述目標節點;
[0014]如果判斷所述源節點與目標節點之間的兩條CAN總線的鏈路狀態均故障,則丟棄發送的數據。
[0015]優選地,當所述源節點發送給目標節點的數據為非實時數據時,所述源節點將數據發送至所述目標節點之前還包括:
[0016]步驟a:所述源節點通過選擇的CAN總線向所述目標節點發送鏈接請求幀;
[0017]步驟b:當所述源節點在預定時間內接收到所述目標節點發送的鏈接應答幀時,才將數據發送至所述目標節點。
[0018]優選地,當所述源節點在預定時間內沒有收到所述目標節點發送的鏈接應答幀時,所述源節點重復執行所述步驟a ;
[0019]當所述源節點重復執行步驟a預定次數后還沒有收到所述目標節點發送的鏈接應答幀時,丟棄發送的數據;
[0020]當所述源節點重復執行步驟a預定次數的過程中,收到所述目標節點發送的鏈接應答幀時,則發送數據至所述目標節點。
[0021 ] 優選地,所述源節點重復執行所述步驟a的過程中,如果第一條CAN總線和第二條CAN總線均正常時,則更換選擇的CAN總線。
[0022]優選地,還包括:所述源節點將需要發送的數據全部發送至所述目標節點后,所述源節點向所述目標節點發送斷開請求幀,如果所述源節點在預定時間內接收到所述目標節點發送的斷開應答幀,則停止發送數據。
[0023]本發明還提供一種CAN總線冗余通信系統,包括:兩條CAN總線和多個節點,所述兩條CAN總線分別為第一條CAN總線和第二條CAN總線,每個節點包括:處理器、第一 CAN收發器和第二 CAN收發器;所述第一 CAN收發器連接所述第一條CAN總線,所述第二 CAN收發器連接所述第二條CAN總線;每個所述節點的處理器中均保存所述鏈路狀態表,所述鏈路狀態表用來表征該節點與其他節點之間CAN總線的鏈路狀態;每個節點按照預定周期將節點狀態數據廣播到所述兩條CAN總線上,其他節點按照接收的所述節點狀態數據更新自身處理器中的鏈路狀態表;
[0024]源節點的處理器查詢自身保存的鏈路狀態表判斷與目標節點之間CAN總線的鏈路狀態是否正常;如果判斷所述源節點與目標節點之間的兩條CAN總線的鏈路狀態均正常,則選擇其中一條CAN總線將數據發送至所述目標節點;所述數據包括實時數據和非實時數據,所述實時數據是指周期性傳輸,用于節點輸入輸出或實時處理的數據;所述非實時數據是指非周期性傳輸,用于節點管理和節點配置的數據;如果判斷所述源節點與目標節點之間僅有一條CAN總線的鏈路狀態正常,則選擇正常的CAN總線將數據發送至所述目標節點;如果判斷所述源節點與目標節點之間的兩條CAN總線的鏈路狀態均故障,則丟棄發送的數據。
[0025]優選地,當所述源節點發送給目標節點的數據為非實時數據時,所述源節點的處理器包括:控制單元、鏈接請求單元和應答接收單元;所述CAN收發器包括發送單元;
[0026]所述鏈接請求單元,用于將數據發送至所述目標節點之前,通過選擇的CAN總線向所述目標節點發送鏈接請求幀;
[0027]所述應答接收單元,用于判斷所述源節點在預定時間內是否接收到所述目標節點發送的鏈接應答幀;
[0028]所述控制單元,用于在所述應答接收單元判斷所述源節點在預定時間內接收到所述目標節點發送的鏈接應答幀時,控制所述發送單元將數據發送至所述目標節點。
[0029]優選地,所述源節點的處理器還包括:計時單元;
[0030]所述應答接收單元,還用于在所述計時單元計時達到預定時間沒有收到所述目標節點發送的鏈接應答幀,則所述鏈接請求單元重復向所述目標節點發送鏈接請求幀;當重復發送鏈接請求幀預定次數后還沒有收到所述目標節點發送的鏈接應答幀時,所述發送單元丟棄發送的數據;當所述鏈接請求單元重復發送所述鏈接請求幀預定次數的過程中,所述應答接收單元收到所述目標節點發送的鏈接應答幀時,則所述發送單元發送數據至所述目標節點。
[0031]優選地,所述鏈接請求單元重復發送所述鏈接請求幀預定次數的過程中,如果第一條CAN總線和第二條CAN總線均正常時,則更換選擇的CAN總線。
[0032]優選地,所述源節點的CAN收發器還包括:斷開請求單元和斷開應答接收單元;
[0033]所述斷開請求單元,用于所述發送單元將需要發送的數據全部發送至所述目標節點后,向所述目標節點發送斷開請求幀;
[0034]所述斷開應答接收單元,用于判斷是否在預定時間內接收到所述目標節點發送的斷開應答幀;
[0035]所述控制單元,還用于所述斷開應答接收單元在預定時間內接收到所述目標節點發送的斷開應答幀時,控制所述發送單元停止發送數據。
[0036]與現有技術相比,本發明至少具體以下優點:
[0037]將數據分為實時數據、非實時數據和節點狀態數據,其中,節點狀態數據用來維護鏈路狀態表,每個節點周期性地廣播