專利名稱:雙冗余can總線通信系統(tǒng)及其通信方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在分布式控制網(wǎng)絡(luò)中具有高可靠性的雙冗余CAN 總線通信系統(tǒng),及其數(shù)據(jù)的通信方法,屬于通信技術(shù)領(lǐng)域。
背景技術(shù):
總線作為分布式伺服控制系統(tǒng)的"經(jīng)脈",擔負各子系統(tǒng)之間的數(shù)據(jù)交換和 指令傳輸,是分布式控制系統(tǒng)的重要組成部分,它的性能好壞直接決定了整個 分布式控制系統(tǒng)的性能。CAN,全稱為"Controller Area Network",即控制器 局域網(wǎng),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。CAN總線是德國Bosch公司從 80年代初為解決現(xiàn)代汽車中的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種 串行數(shù)據(jù)通信協(xié)議。它是一種多主方式的串行通訊總線,基本設(shè)計規(guī)范要求有 高的位速率,高抗電磁干擾性,檢錯能力非常強。由于其采用了許多新技術(shù)及 獨特的設(shè)計,它不僅在汽車控制系統(tǒng)、醫(yī)療儀器和船舶運輸?shù)确矫嬗袕V泛應(yīng)用, 同樣也在伺服控制領(lǐng)域同樣有出色的表現(xiàn)。與一般的通信總線相比,CAN總 線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性。
雖然CAN總線已經(jīng)具有了較高的可靠性,但它的可靠性是建立在單一的 CAN總線回路中的, 一旦該路總線上的任何部位出現(xiàn)瞬時或永久性的故障, 都會造成一段時間內(nèi)分布式控制網(wǎng)絡(luò)的通信故障。在典型網(wǎng)絡(luò)拓撲結(jié)構(gòu)中, 基本總線網(wǎng)絡(luò)對網(wǎng)絡(luò)節(jié)點故障的容錯能力具有明顯優(yōu)勢,而對通信鏈路的故 障則表現(xiàn)出不足之處。顯見,對于系統(tǒng)可靠性和穩(wěn)定性要求較高的通信系統(tǒng) 而言,有效地提高通信鏈路的容錯能力也是十分必要的。
發(fā)明內(nèi)容
本發(fā)明的發(fā)明目的在于解決現(xiàn)有技術(shù)中存在的問題,提供一種具有 雙冗余鏈路結(jié)構(gòu)的CAN總線通信系統(tǒng),及其通信方法。 本發(fā)明的發(fā)明目的是通過下述技術(shù)方案予以實現(xiàn)的
雙冗余CAN總線通信系統(tǒng),其特征在于該通信系統(tǒng)采用雙總線結(jié)構(gòu);
在所述總線上設(shè)置有若干CAN節(jié)點;
所述CAN節(jié)點中包括一個節(jié)點處理器、兩個總線控制器和兩個總線驅(qū)動 器;所述兩個總線控制器分別通過兩個總線驅(qū)動器與不同的總線相連;所述節(jié)點處理器與所述兩個總線控制器相連,控制總線控制器進行通信。
所述CAN節(jié)點中還包括一個通信登記表;所述通信登記表用以記錄了所 述CAN節(jié)點與其它CAN節(jié)點間的通信鏈路狀態(tài);所述通信登記表中記錄的 通信鏈路狀態(tài)包括初始狀態(tài)、正常狀態(tài)、故障狀態(tài)、脫離狀態(tài)。
雙冗余CAN總線通信系統(tǒng)的通信方法,其特征在于包括下述步驟
1) 在網(wǎng)絡(luò)中啟動節(jié)點1和節(jié)點2;
2) 在節(jié)點1和節(jié)點2之間建立通信登記表;
3) 當節(jié)點1要向節(jié)點2發(fā)送報文時,節(jié)點1根據(jù)所要進行的操作確定報 文的傳輸模式為單幀報文傳輸模式或大批量報文傳輸模式;
4) 若采用單幀報文傳輸模式,則兩節(jié)點間采用返回N自動重傳機制對傳 輸過程進行差錯管理;
5) 若采用大批量報文傳輸模式,則兩節(jié)點間采用選擇拒絕自動重傳機制 對傳輸過程進行差錯管理。
所述步驟2中的通信登記表是通過下述步驟建立的 al)節(jié)點1分別通過兩路總線發(fā)送測試幀給節(jié)點2;
a2)若節(jié)點1收到節(jié)點2的應(yīng)答幀則說明兩節(jié)點間總線通路正常,標記 為正常狀態(tài);
a3)若節(jié)點1通過A路總線發(fā)送報文給節(jié)點2,但計時器超時仍未收到 任何回應(yīng),則節(jié)點1切換到B路傳輸一個測試幀;
a4)當收到節(jié)點2對該測試幀的響應(yīng)幀,則說明兩節(jié)點間B路總線正常, 而A路總線傳輸出現(xiàn)問題,標記兩節(jié)點通過A路總線傳輸狀態(tài)為故障狀態(tài);
a5)節(jié)點1通過A路總線再次發(fā)送測試幀給節(jié)點2;
a6)若節(jié)點1收到節(jié)點2的應(yīng)答幀,則說明兩節(jié)點在A路總線上只是遇 到瞬時故障,該標記總線為正常狀態(tài);
a7)若節(jié)點1仍未收到節(jié)點2的應(yīng)答幀,則重新初始化節(jié)點1的A路總 線控制器,并通過B路總線發(fā)指令給節(jié)點2初始化節(jié)點2的A路總線控制器;
a8)兩節(jié)點的A路總線控制器初始化完成后,節(jié)點l再次通過A路總線 發(fā)送測試幀,若收到應(yīng)答幀則標記為正常狀態(tài),若仍不成功則標記脫離狀態(tài)。
所述步驟4中的返回N自動重傳機制為接收節(jié)點接收到幀會向發(fā)送節(jié)點回 應(yīng)一個確認幀;如果接收節(jié)點檢測到差錯,則會為該差錯幀發(fā)送一個否認幀, 并且丟棄該差錯幀以及所有該差錯幀之后接收到的幀,直至接收到該差錯幀 的正確重傳。所述步驟5中的選擇拒絕自動重傳機制為接收節(jié)點要求發(fā)送節(jié)點重傳的 只有被檢測到差錯的幀。
本發(fā)明的有益效果是提供了一種具有雙總線結(jié)構(gòu)的通信系統(tǒng),并 對其通信過程進行了相應(yīng)的差錯控制,有效地改善了其通信鏈路的容錯能 力,提高了整個系統(tǒng)的可靠性。
圖1為雙冗余CAN總線通信系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步描述。
雖然CAN總線本身已經(jīng)具有了較高的可靠性,但它的可靠性是建立在單 一的CAN總線回路中的, 一旦該路總線上的任何部位出現(xiàn)瞬時或永久性的故 障,都會造成一段時間內(nèi)分布式控制網(wǎng)絡(luò)的通信故障。因此,對于一些對可 靠性和實時性要求比較高的通信系統(tǒng),對其鏈路結(jié)構(gòu)的改造也是必須的。
基于以上原因,本發(fā)明采用了單機雙冗余CAN總線的結(jié)構(gòu)設(shè)計。圖1即 為本發(fā)明所設(shè)計的雙冗余CAN總線通信系統(tǒng)的結(jié)構(gòu)示意圖。如圖所示,雙冗 余CAN總線通信系統(tǒng)中的鏈路結(jié)構(gòu)并非建立在單一的CAN總線回路,而是 采用兩條獨立的并行CAN總線結(jié)構(gòu)。在總線上連接有若干CAN節(jié)點,每個 CAN節(jié)點包括一個節(jié)點處理器、兩個總線控制器和兩個總線驅(qū)動器。兩個總 線控制器和兩個總線驅(qū)動器分為兩組,分別連接于兩條獨立的CAN總線。該 節(jié)點處理器與兩個總線控制器連接,控制兩個總線控制器協(xié)同工作。
這種雙冗余CAN總線通信系統(tǒng)在既繼承了基本總線網(wǎng)絡(luò)所具有的對網(wǎng)絡(luò) 節(jié)點故障的容錯能力的同時,由于采用了兩條獨立的并行CAN總線的雙冗余 結(jié)構(gòu),彌補了基本總線網(wǎng)絡(luò)對通訊鏈路故障無能為力的缺陷,因而具有更高 的可靠性。平時工作時,其中一條總線可以作為備用總線保證系統(tǒng)通信的暢 通和安全。在大量傳輸數(shù)據(jù)時,可以啟用備用總線進行通信,從而大大提高 了整個系統(tǒng)的通信能力,保證了系統(tǒng)的通信效率,非常適合對于實時性要求 較高的系統(tǒng)。但于此同時,也對系統(tǒng)的通信鏈路管理提出了較高的要求。
基于上述雙冗余CAN總線通信系統(tǒng)的結(jié)構(gòu)特點,本發(fā)明設(shè)計了下述通 訊鏈路策略。
通信登記管理
在每個節(jié)點建立一個通信登記表,該表記錄了該節(jié)點的兩路CAN總線與
其它節(jié)點間的通信鏈路狀態(tài),包括如下幾種狀態(tài)1、 初始狀態(tài)系統(tǒng)剛加電或剛加入CAN總線網(wǎng)絡(luò)中,還未證明節(jié)點可 用時處于該種狀態(tài);
2、 正常狀態(tài)處于該種狀態(tài)表明兩個節(jié)點之間可以通過該路總線進行報 文傳送。
3、 故障狀態(tài)處于該種狀態(tài)表明兩個節(jié)點之間該路總線上出現(xiàn)了由于某 種原因出現(xiàn)了報文傳輸失敗的問題,等待故障處理。
4、 脫離狀態(tài)表明兩節(jié)點之間已經(jīng)證明無法通過該路總線完成報文傳送 服務(wù),可能存在線路故障或者總線控制器永久性故障等。
參見圖1,下面以圖中所示節(jié)點1和節(jié)點2之間的通信登記表建立為例,
說明通信登記表的建立流程-
1) 節(jié)點1分別通過兩路總線發(fā)送測試幀給節(jié)點2;
2) 若節(jié)點1收到節(jié)點2的應(yīng)答幀則說明兩節(jié)點間總線通路正常,標記為
正常狀態(tài);
3) 若節(jié)點通過A路總線發(fā)送報文給節(jié)點2,但計時器超時仍未收到任
何回應(yīng),則節(jié)點1切換到B路傳輸一個測試幀;
4) 當收到節(jié)點2對該測試幀的響應(yīng)幀,則說明兩節(jié)點間B路總線正常,
而A路總線傳輸出現(xiàn)問題,標記兩節(jié)點通過A路總線傳輸狀態(tài)為故障狀態(tài);
5) 節(jié)點1通過A路總線再次發(fā)送測試幀給節(jié)點2;
6) 若節(jié)點1收到節(jié)點2的應(yīng)答幀,則說明兩節(jié)點在A路總線上只是遇到 瞬時故障,該標記總線為正常狀態(tài);
7) 若節(jié)點1仍未收到節(jié)點2的應(yīng)答幀,則重新初始化節(jié)點1的A路總線 控制器,并通過B路總線發(fā)指令給節(jié)點2初始化節(jié)點2的A路總線控制器;
8) 兩節(jié)點的A路總線控制器初始化完成后,節(jié)點1再次通過A路總線 發(fā)送測試幀,若收到應(yīng)答幀則標記為正常狀態(tài),若仍不成功則標記脫離狀態(tài)。
通過采用上述通信登記表的建立,可以有效區(qū)分總線瞬時故障和非瞬時 故障,只有遇到出現(xiàn)非瞬時故障的可能時才做總線控制器復(fù)位等處理,有效 提高總線系統(tǒng)穩(wěn)定工作的時間,同時由于在一路總線發(fā)生故障時,節(jié)點可以 幾乎實時的通過另外一路總線維持通信,降低總線故障對兩節(jié)點間通信的影 響。
報文傳輸策略
基于前述對雙冗余CAN總線通信系統(tǒng)的特殊結(jié)構(gòu)的鏈路管理考慮,我們 將我們將報文的傳輸模式分為單幀報文傳輸模式和大批量報文傳輸模式。單 幀報文傳輸模式是指在一般的報文傳輸過程中小批量的報文傳輸。大批量報文傳輸模式是指主要用于伺服控制參數(shù)更新和程序上傳等操作過程中的大批 量報文傳輸,其數(shù)據(jù)長度一般大于8個字節(jié),不可能在一個CAN幀中完成傳 送,需要進行多幀、分組傳輸。
對于單幀報文傳輸模式,我們僅使用一條總線進行傳輸,而另一條總線 作為備用總線,保證傳輸?shù)目煽啃?。同時,我們采用返回N自動重傳機制對 其傳輸過程進行差錯管理。
所謂返回N自動重傳機制使用了滑動窗口的技術(shù),在正常傳輸?shù)那闆r下, 接收節(jié)點接收到幀會向發(fā)送節(jié)點回應(yīng)一個確認幀(RR =接收就緒或捎帶的確 認)。如果接收節(jié)點檢測到差錯,那么它會為這個幀發(fā)送一個否認幀(REJ^拒 絕),并且丟棄這個幀以及所有后來接收到的幀,直至有差錯的幀被正確地接 收到。因此,當發(fā)送節(jié)點接收到一個否認幀后,必須重傳有差錯的幀,以及 這個幀之后的所有已經(jīng)傳輸?shù)膸?br>
參見圖1,以節(jié)點1向節(jié)點2發(fā)送幀為例。在每次傳輸之后,節(jié)點1為剛 才傳輸?shù)膸O(shè)置的幀設(shè)置確認計時器。假設(shè)節(jié)點2已經(jīng)成功接收到前面的幀 (i-l),并且節(jié)點1剛剛傳輸了幀i。對下述異常事件做出如下反映。
1、 損壞的幀
如果接收到的幀是無效的(即節(jié)點2檢測到一個差錯,或者因為損壞情況 嚴重,節(jié)點2甚至不能察覺出它接收到的是一個幀),節(jié)點2丟棄該幀并且不 對該幀做任何進 一 步的動作。這里分兩種情況
a) 在合理的時間范圍內(nèi),節(jié)點1繼續(xù)發(fā)送幀(i+l)。節(jié)點2接收到幀(i+l) 后發(fā)現(xiàn)次序不對,于是發(fā)送一個REJi 。節(jié)點1必須重傳幀i以及所有的后繼 幀。
b) 節(jié)點1并沒有馬上發(fā)送其他幀。節(jié)點2沒有接收到任何幀,并且節(jié)點 2既不返回RR,也不返回REJ。當節(jié)點1的計時器超時,節(jié)點l會傳輸一個 RR幀,并在其中包含一個被置為1的P比特。節(jié)點2將這個RR幀中的P比 特為1解釋為一條命令,該命令要求節(jié)點2必須發(fā)送一個RR響應(yīng)信號,于是 它通過發(fā)送一個表明自己希望接收到的下一個幀的RR來響應(yīng),也就是幀i。 當節(jié)點1接收這個RR后,會重傳幀i。另一種情況是節(jié)點1計時器超時,節(jié) 點1也會重傳幀i。
2、 損壞的RR:分別有兩種情況
a) 節(jié)點2接收到幀i并發(fā)送RR(i+l),而它在傳輸時丟失。由于確認是累 積的(如RR6表示5之前的所有幀都被確認),有可能節(jié)點1會接收到下一個 幀的RR,并且這個RR可能在幀i的計數(shù)器超時之前到達。
b) 如果節(jié)點1的計時器超時,它會傳輸一個RR命令,如1節(jié)點2中的情況。節(jié)點1還會設(shè)置另外一個計時器,稱為P比特計時器。如果節(jié)點2沒有 響應(yīng)這個RR命令,或者如果它的響應(yīng)被損壞,那么節(jié)點1的P比特計時器 會超時。在這種情況下,節(jié)點1將會通過發(fā)送一個新的RR命令重試一次,并 且還要重新啟動P比特計數(shù)器。這一過程將重復(fù)數(shù)次。在重試的次數(shù)超時一 個最大值后,如果節(jié)點1還沒有獲得確認,那么節(jié)點l啟動復(fù)位過程。 3、損壞的REJ:如果REJ被丟失,其情況等同1節(jié)點2。 對于大批量報文傳輸模式,由于在傳輸時將占用大量總線帶寬,因此為了 更好的完成大批量報文的傳送,提高總線利用率,我們充分利用了雙冗余CAN 總線通信系統(tǒng)中的雙總線結(jié)構(gòu),采取兩路總線同時工作的方式傳送報文,把 總線帶寬提高了一倍,加快報文的傳送速度。但是由于采用了雙線傳輸,對 于接收節(jié)點來說不能保證報文按照序號次序到達。這時若仍采用前述返回N 自動重傳機制,當報文丟失時,由于其要求丟失的i幀及以后所有幀都要重 傳,則每次有丟幀都要傳送大量本不必要傳輸?shù)膱笪?,影響了傳送效率。?以,對于大批量報文傳輸模式我們采用選擇拒絕自動重傳機制來進行差錯管 理。
所謂選擇拒絕自動重傳機制,即接收節(jié)點要求發(fā)送節(jié)點重傳的只有那些 被否認或超時的幀(一般稱這樣的否認幀為SREJ。),而不需要重傳這些幀的 后續(xù)幀。例如,當幀5未按順序被接收時,接收節(jié)點發(fā)送SREJ4,表示它還 沒有收到幀4。但接收節(jié)點繼續(xù)接收幀4的后續(xù)幀,并緩存它們,直到收到一 個有效的幀4。這時,接收可以將幀按序排列,并將它們傳遞給高層軟件。
由于重傳幀的數(shù)量降低到了最小,但另一方面接收節(jié)點需要一個足夠大 的緩存,以便保存重傳幀的后續(xù)的幀,直至有差錯的幀被重傳,而且它還必 須具有能夠按照正確的順序插入這些幀的邏輯。
因此,選擇拒絕自動重傳機制對窗口大小的限制比返回N自動重傳機制 更加嚴格。為了克服發(fā)送窗口和接收窗口之間的重疊,最大窗口值必須小于 序號范圍的一半。即如果序號長度為3比特,窗口大小達7個幀,則只允許 有4個未被確認的幀存在,才不會發(fā)生混淆。 一般來說,對于k比特的序號 字段,它提供的序號范圍為24,而最大窗口值則限制在2"'。
根據(jù)以上針對雙冗余CAN總線通信系統(tǒng)的通信方法設(shè)計,可以總結(jié)雙冗 余CAN總線通信系統(tǒng)的通信方法流程如下
1) 在網(wǎng)絡(luò)中啟動節(jié)點1和節(jié)點2;
2) 在節(jié)點1和節(jié)點2之間建立通信登記表;3) 當節(jié)點1要向節(jié)點2發(fā)送報文時,節(jié)點1根據(jù)所要進行的操作確定報 文的傳輸模式為單幀報文傳輸模式或大批量報文傳輸模式;
4) 若采用單幀報文傳輸模式,則兩節(jié)點間采用返回N自動重傳機制對其 傳輸過程進行差錯管理;
5) 若采用大批量報文傳輸模式,則兩節(jié)點間采用選擇拒絕自動重傳機制 對其傳輸過程進行差錯管理。
權(quán)利要求
1. 雙冗余CAN總線通信系統(tǒng),其特征在于該通信系統(tǒng)采用雙總線結(jié)構(gòu);在所述總線上設(shè)置有若干CAN節(jié)點;所述CAN節(jié)點中包括一個節(jié)點處理器、兩個總線控制器和兩個總線驅(qū)動器;所述兩個總線控制器分別通過兩個總線驅(qū)動器與不同的總線相連;所述節(jié)點處理器與所述兩個總線控制器相連,控制總線控制器進行通信。
2、 如權(quán)利要求1所述的雙冗余CAN總線通信系統(tǒng),其特征在于所述 CAN節(jié)點中還包括一個通信登記表;所述通信登記表用以記錄了所述CAN 節(jié)點與其它CAN節(jié)點間的通信鏈路狀態(tài);所述通信登記表中記錄的通信鏈路 狀態(tài)包括初始狀態(tài)、正常狀態(tài)、故障狀態(tài)、脫離狀態(tài)。
3、 雙冗余CAN總線通信系統(tǒng)的通信方法,基于權(quán)利要求2所述的通信系 統(tǒng)實現(xiàn),其特征在于包括下述步驟1) 在網(wǎng)絡(luò)中啟動節(jié)點1和節(jié)點2;2) 在節(jié)點1和節(jié)點2之間建立通信登記表;3) 當節(jié)點1要向節(jié)點2發(fā)送報文時,節(jié)點1根據(jù)所要進行的操作確定報 文的傳輸模式為單幀報文傳輸模式或大批量報文傳輸模式;4) 若采用單幀報文傳輸模式,則兩節(jié)點間采用返回N自動重傳機制對傳 輸過程進行差錯管理;5) 若采用大批量報文傳輸模式,則兩節(jié)點間采用選擇拒絕自動重傳機制 對傳輸過程進行差錯管理。
4、 如權(quán)利要求3所述的雙冗余CAN總線通信系統(tǒng)的通信方法,其特征在 于所述步驟2中的通信登記表是通過下述步驟建立的al)節(jié)點1分別通過兩路總線發(fā)送測試幀給節(jié)點2;a2)若節(jié)點1收到節(jié)點2的應(yīng)答幀則說明兩節(jié)點間總線通路正常,標記 為正常狀態(tài);a3)若節(jié)點1通過A路總線發(fā)送報文給節(jié)點2,但計時器超時仍未收到 任何回應(yīng),則節(jié)點1切換到B路傳輸一個測試幀;a4)當收到節(jié)點2對該測試幀的響應(yīng)幀,則說明兩節(jié)點間B路總線正常, 而A路總線傳輸出現(xiàn)問題,標記兩節(jié)點通過A路總線傳輸狀態(tài)為故障狀態(tài);a5)節(jié)點1通過A路總線再次發(fā)送測試幀給節(jié)點2;a6)若節(jié)點l收到節(jié)點2的應(yīng)答幀,則說明兩節(jié)點在A路總線上只是遇到瞬時故障,該標記總線為正常狀態(tài);a7)若節(jié)點1仍未收到節(jié)點2的應(yīng)答幀,則重新初始化節(jié)點1的A路總 線控制器,并通過B路總線發(fā)指令給節(jié)點2初始化節(jié)點2的A路總線控制器; a8)兩節(jié)點的A路總線控制器初始化完成后,節(jié)點1再次通過A路總線 發(fā)送測試幀,若收到應(yīng)答幀則標記為正常狀態(tài),若仍不成功則標記脫離狀態(tài)。
5、 如權(quán)利要求3所述的雙冗余CAN總線通信系統(tǒng)的通信方法,其特征在 于所述步驟4中的返回N自動重傳機制為接收節(jié)點接收到幀會向發(fā)送節(jié)點 回應(yīng)一個確認幀;如果接收節(jié)點檢測到差錯,則會為該差錯幀發(fā)送一個否認 幀,并且丟棄該差錯幀以及所有該差錯幀之后接收到的幀,直至接收到該差 錯幀的正確重傳。
6、 如權(quán)利要求3所述的雙冗余CAN總線通信系統(tǒng)的通信方法,其特征在 于所述歩驟5中的選擇拒絕自動重傳機制為接收節(jié)點要求發(fā)送節(jié)點重傳的 只有被檢測到差錯的幀。
全文摘要
本發(fā)明提供了一種雙冗余CAN總線通信系統(tǒng),其特征在于該通信系統(tǒng)采用雙總線結(jié)構(gòu);在所述總線上設(shè)置有若干CAN節(jié)點;所述CAN節(jié)點中包括一個節(jié)點處理器、兩個總線控制器和兩個總線驅(qū)動器;所述兩個總線控制器分別通過兩個總線驅(qū)動器與不同的總線相連;所述節(jié)點處理器與所述兩個總線控制器相連,控制總線控制器進行通信。該通信系統(tǒng)特殊的雙總線結(jié)構(gòu),有效地改善了其通信鏈路的容錯能力,提高了整個系統(tǒng)的可靠性。
文檔編號H04L1/22GK101286940SQ20081010634
公開日2008年10月15日 申請日期2008年5月12日 優(yōu)先權(quán)日2008年5月12日
發(fā)明者濤 馮, 平 葉, 孫漢旭, 曹紅玉, 賈慶軒 申請人:北京郵電大學(xué)