一種雙冗余can總線數(shù)據(jù)接收處理方法
【專利摘要】本發(fā)明為了解決現(xiàn)有技術(shù)無法簡單、有效地處理兩個通道接收到重復(fù)數(shù)據(jù)的問題,提供了一種雙冗余CAN總線數(shù)據(jù)接收處理方法,包括如下步驟:(1)在雙冗余CAN總線的第一通道和第二通道上同時發(fā)送數(shù)據(jù)幀組成的數(shù)據(jù);(2)接收雙冗余CAN總線的第一通道的數(shù)據(jù),同時接收雙冗余CAN總線的第二通道的數(shù)據(jù);(3)判斷在兩個通道中接收到的數(shù)據(jù)的數(shù)據(jù)幀中是否需要區(qū)分重復(fù)數(shù)據(jù);(4)對不需區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀內(nèi)的數(shù)據(jù)直接使用,對需要區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀進行區(qū)分:對經(jīng)過區(qū)分處理的數(shù)據(jù)幀中的非重復(fù)數(shù)據(jù)進行使用,對其中的重復(fù)數(shù)據(jù)則拋掉。本發(fā)明利用簡單的方法規(guī)避了軟件延遲、線路延遲等對雙冗余CAN總線數(shù)據(jù)接收的影響。
【專利說明】一種雙冗余CAN總線數(shù)據(jù)接收處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)處理方法,更具體地,涉及一種雙冗余CAN總線數(shù)據(jù)接收處
理方法。
【背景技術(shù)】
[0002]采用傳統(tǒng)的單CAN總線的控制網(wǎng)絡(luò),會存在某些失效環(huán)節(jié),比如主干線故障、分支線故障、驅(qū)動電路故障等。因此,現(xiàn)有技術(shù)中,為了提高數(shù)據(jù)傳輸?shù)姆€(wěn)定性和安全性,通常使用雙冗余CAN總線網(wǎng)絡(luò)。
[0003]現(xiàn)有技術(shù)中確保通信可靠性和差錯控制的方法例如中國專利申請(申請?zhí)枮镃N200810106342.6),其公開了一種雙冗余CAN總線通信系統(tǒng)的通信方法,包括下述步驟:I)在網(wǎng)絡(luò)中啟動節(jié)點I和節(jié)點2 ;2)在節(jié)點I和節(jié)點2之間建立通信登記表;3)當(dāng)節(jié)點I要向節(jié)點2發(fā)送報文時,節(jié)點I根據(jù)所要進行的操作確定報文的傳輸模式為單幀報文傳輸模式或大批量報文傳輸模式;4)若采用單幀報文傳輸模式,則兩節(jié)點間采用返回N自動重傳機制對傳輸過程進行差錯管理;5)若采用大批量報文傳輸模式,則兩節(jié)點間采用選擇拒絕自動重傳機制對傳輸過程進行差錯管理。所述步驟5中的選擇拒絕自動重傳機制為接收節(jié)點要求發(fā)送節(jié)點重傳的只有被檢測到差錯的幀。但是,上述方法不適于采用雙冗余通道熱切換技術(shù)和雙冗余通道數(shù)據(jù)同發(fā)同收技術(shù)時的可靠通信。
[0004]其中,雙冗余通道熱切換技術(shù)是雙CAN總線的一個通道作為工作通道,另外一個通道熱備份,當(dāng)工作通道出現(xiàn)故障時,切換到備份通道,備份通道作為工作通道繼續(xù)工作,原來的通道如果修復(fù)好則作為備份通道,如果不能修復(fù)好則標(biāo)識故障。
[0005]雙冗余通道數(shù)據(jù)同發(fā)同收技術(shù)是雙CAN總線的兩個通道都作為工作通道,數(shù)據(jù)在兩個通道上同時傳送,只要有一個通道數(shù)據(jù)傳送通暢,則認(rèn)為工作正常。
[0006]但是,現(xiàn)有技術(shù)尚無簡單、有效地解決兩個通道接收到重復(fù)數(shù)據(jù)時的處理的技術(shù)方案。雙冗余CAN總線系統(tǒng)的接收節(jié)點會在雙總線上分別收到相同的數(shù)據(jù),并且受軟件延遲、線路延遲等影響,兩個通道上收到的數(shù)據(jù)間隔時間會有所不同,如何能區(qū)分接收到的數(shù)據(jù)為重復(fù)數(shù)據(jù)成為接收處理的關(guān)鍵。
【發(fā)明內(nèi)容】
[0007]為了解決現(xiàn)有技術(shù)中存在的上述問題,本發(fā)明提供了一種雙冗余CAN總線數(shù)據(jù)接收處理方法是為雙冗余通道數(shù)據(jù)同發(fā)同收技術(shù)而提出來的。
[0008]根據(jù)本發(fā)明的一方面,提供了一種雙冗余CAN總線數(shù)據(jù)接收處理方法,包括如下步驟:
[0009](I)在雙冗余CAN總線的第一通道和第二通道上同時發(fā)送數(shù)據(jù)幀組成的數(shù)據(jù);
[0010](2)接收雙冗余CAN總線的第一通道的數(shù)據(jù),同時接收雙冗余CAN總線的第二通道的數(shù)據(jù);
[0011](3)判斷在兩個通道中接收到的數(shù)據(jù)的數(shù)據(jù)幀中是否需要區(qū)分重復(fù)數(shù)據(jù);[0012](4)對不需區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀內(nèi)的數(shù)據(jù)直接使用,對需要區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀進行區(qū)分:對經(jīng)過區(qū)分處理的數(shù)據(jù)幀中的非重復(fù)數(shù)據(jù)進行使用,對其中的重復(fù)數(shù)據(jù)則拋掉。
[0013]在步驟(I)中,在數(shù)據(jù)幀中存放消息序號,且在每個通道內(nèi),各數(shù)據(jù)幀的消息序號在每次發(fā)送以后發(fā)生變化。
[0014]進一步地,在步驟(3)中,根據(jù)數(shù)據(jù)幀的消息標(biāo)識符確定是否需要區(qū)分重復(fù)數(shù)據(jù)。
[0015]進一步地,在步驟(4)中,根據(jù)所述消息序號進行區(qū)分。
[0016]進一步地,步驟(4)包括如下步驟:
[0017](a)獲得新的數(shù)據(jù)幀的消息序號與上次消息序號,其中,新的數(shù)據(jù)幀的消息序號是從其中一個通道接收到的當(dāng)前數(shù)據(jù)幀的消息序號,上次消息序號是在接收所述當(dāng)前數(shù)據(jù)幀之前、通過任意通道接收到的、與所述當(dāng)前數(shù)據(jù)幀具有相同的數(shù)據(jù)幀的消息標(biāo)識符的數(shù)據(jù)中貞的消息序號;
[0018](b)判斷新的數(shù)據(jù)幀的消息序號是否等于上次消息序號:如果相等,則拋掉所述接收的當(dāng)前數(shù)據(jù)幀;否則將所述接收的當(dāng)前數(shù)據(jù)幀的消息序號賦給所述上次消息序號并使用當(dāng)前數(shù)據(jù)幀。
[0019]進一步地,在兩個通道上發(fā)送的同一個數(shù)據(jù)的消息序號相同,發(fā)送的不同數(shù)據(jù)的消息序號每一巾貞不相同。
[0020]進一步地,消息序號占用一個字節(jié)長度,在0-255的數(shù)據(jù)范圍內(nèi)循環(huán)變化。
[0021]本發(fā)明的有宜效果如下:采用這種雙冗余CAN總線數(shù)據(jù)接收處理方法,僅僅增加一個字節(jié)的傳輸信息,就可以解決重復(fù)指令的處理問題,也規(guī)避了軟件延遲、線路延遲等對雙冗余CAN總線數(shù)據(jù)接收的影響。
【專利附圖】
【附圖說明】
[0022]圖1是根據(jù)本發(fā)明的一個實施例的雙冗余CAN總線網(wǎng)絡(luò)結(jié)構(gòu)示意圖;
[0023]圖2是根據(jù)本發(fā)明的一個實施例的CAN接口擴展示意圖;
[0024]圖3示出了根據(jù)本發(fā)明的一個實施例的需要區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀格式;
[0025]圖4示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)接收處理流程圖。
【具體實施方式】
[0026]下面結(jié)合【專利附圖】
【附圖說明】本發(fā)明的具體實施例。
[0027]如圖1-2所示,為雙冗余CAN總線網(wǎng)絡(luò)的結(jié)構(gòu)示意圖和CAN接口擴展示意圖。
[0028]在硬件上,雙冗余CAN總線同時使用兩條CAN總線、兩個CAN總線驅(qū)動器和兩個CAN總線控制器和一個CPU。CPU通過不同的端口和中斷同時控制兩個CAN控制器。在一個實施例中,雙冗余CAN總線BUS A、BUS B要求使用相同兩套CAN設(shè)備,從而實現(xiàn)物理介質(zhì)。BUS A的CAN設(shè)備包括獨立的總線電纜、總線驅(qū)動器1-2和總線控制器1_1,BUS B的CAN設(shè)備包括獨立的總線電纜、總線驅(qū)動器2-2和總線控制器2-1。CPUl由FPGA實現(xiàn)。
[0029]在工作中,發(fā)送時可以通過兩條總線BUS A、BUS B發(fā)送同一組數(shù)據(jù)。接收時CPU控制器1-1和2-1可以同時處理兩路總線BUS A、BUS B上發(fā)來的數(shù)據(jù),接收并進行適當(dāng)處理。[0030]在一個實施例中,雙冗余CAN接口卡1-1和1-2分別為SJA1000,它們提供兩路獨立的CAN接口、每片芯片的8位地址/數(shù)據(jù)總線和讀寫控制信號。SJA1000輸出信號經(jīng)過光耦連接CAN收發(fā)器PCA82C250,PCA82C250供電電源為隔離電源,由隔離電源轉(zhuǎn)換模塊提供。CAN總線的復(fù)位信號由FPGA芯片提供,CAN控制器SJA1000的中斷信號輸出到FPGA。
[0031]軟件設(shè)計上,采用VxWorks操作系統(tǒng)開發(fā)驅(qū)動。VxWorks操作系統(tǒng)是風(fēng)河公司(Wind River SyStem)推出的一款運行在目標(biāo)機上的高性能、可裁減的嵌入式強實時操作系統(tǒng),它包括進程管理、存儲管理、設(shè)備管理、文件系統(tǒng)管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等幾個部分,只占用了很小的存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運行。它以其良好的可靠性和卓越的實時性被廣泛地應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中。
[0032]Vxfforks操作系統(tǒng)提供幾種標(biāo)準(zhǔn)驅(qū)動模型,如串行設(shè)備驅(qū)動、塊設(shè)備驅(qū)動、網(wǎng)絡(luò)接口驅(qū)動、總線控制器驅(qū)動等。根據(jù)設(shè)備不同,可選擇相應(yīng)的標(biāo)準(zhǔn)驅(qū)動模型或自定CAN模塊是串行設(shè)備,設(shè)計選擇了標(biāo)準(zhǔn)串行設(shè)備驅(qū)動模型。
[0033]如圖2所示,根據(jù)本發(fā)明的一個實施例,待發(fā)送的數(shù)據(jù)以數(shù)據(jù)幀的形式同時被CAN通道A和CAN通道B發(fā)送,并且在上述兩個通道被發(fā)送的數(shù)據(jù)被同時接收。在待發(fā)送的數(shù)據(jù)幀中,均存放有幀消息標(biāo)識符以及消息序號。
[0034]在每個通道內(nèi),每次發(fā)送數(shù)據(jù)幀以后,下一幀待發(fā)送的數(shù)據(jù)幀的消息序號將較上一次本通道發(fā)送的數(shù)據(jù)幀的幀序號發(fā)生變化。在一個優(yōu)選的實施例中,該消息序號占用一個字節(jié),且將在0-255的范圍內(nèi)循環(huán)增加。如圖3所示,該消息序號被放在幀數(shù)據(jù)的數(shù)據(jù)場。
[0035]圖3還示出了待發(fā)送的各幀數(shù)據(jù)的幀格式。每一幀數(shù)據(jù)均包括:幀頭(I字節(jié))、仲裁場(I字節(jié))、控制場(I字節(jié))、數(shù)據(jù)場(8字節(jié))、幀尾及其他(I字節(jié))這五部分。其中,數(shù)據(jù)場包括DAT AO-DAT A7這8個字節(jié),且DAT AO用于存放消息序號。
[0036]下面結(jié)合圖4,詳細(xì)說明本發(fā)明的雙冗余CAN總線數(shù)據(jù)接收處理方法。
[0037]根據(jù)本發(fā)明的一個優(yōu)選的實施例,在兩個CAN通道A和CAN通道B上分別發(fā)送的相同數(shù)據(jù)的消息序號相同,發(fā)送的不同數(shù)據(jù)的消息序號每一幀不相同。消息序號在0-255的數(shù)據(jù)范圍內(nèi)循環(huán)變化,其變化的條件是:針對不同的消息,則消息序號發(fā)生改變。在一個優(yōu)選的實施例中,該消息序號針對不同的消息自增I。
[0038]當(dāng)在CAN通道A和CAN通道B上分別同時發(fā)送數(shù)據(jù)幀組成的數(shù)據(jù)以后,雙冗余CAN總線的數(shù)據(jù)接收端同時接收兩個通道發(fā)送來的數(shù)據(jù)幀組成的數(shù)據(jù),其接收是按照逐幀接收實現(xiàn)的。其中,雙冗余CAN總線的數(shù)據(jù)接收端使用現(xiàn)有技術(shù)中的各種雙冗余CAN總線的數(shù)據(jù)接收模塊,其具體實現(xiàn)是本領(lǐng)域技術(shù)人員的公知常識,并不作為本發(fā)明的發(fā)明點。在某些實施例中,可以使用Intel的8XC196CA/CB、飛利浦的TJA1040、82C250、LPC2292、西門子的81C90/91 等。
[0039]在從CAN通道A和CAN通道B分別接收到兩個數(shù)據(jù)幀以后,需要判斷在這兩個數(shù)據(jù)幀中是否需要區(qū)分重復(fù)數(shù)據(jù)。所謂的重復(fù)數(shù)據(jù),被定義為具有相同幀消息標(biāo)識符的兩個分別屬于不同CAN通道的數(shù)據(jù)幀。因此,判斷時,根據(jù)數(shù)據(jù)幀的消息標(biāo)識符確定是否需要區(qū)分重復(fù)數(shù)據(jù)。其中,對不需區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀內(nèi)的數(shù)據(jù),直接使用即可;而對需要區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀進行區(qū)分。
[0040]上述區(qū)分的具體操作為:根據(jù)所述消息序號將上述分別屬于不同的通道的數(shù)據(jù)幀加以區(qū)分。在一個優(yōu)選的實施例中,這種區(qū)分包括下面兩個步驟:
[0041](a)獲得新的數(shù)據(jù)幀的消息序號與上次消息序號,其中,新的數(shù)據(jù)幀的消息序號是從其中一個通道接收到的當(dāng)前數(shù)據(jù)幀的消息序號,上次消息序號是在接收所述當(dāng)前數(shù)據(jù)幀之前、通過任意通道接收到的、與所述當(dāng)前數(shù)據(jù)幀具有相同的幀的消息標(biāo)識符的數(shù)據(jù)幀的消息序號;
[0042](b)判斷新的數(shù)據(jù)幀的消息序號是否等于上次消息序號:如果相等,則拋掉所述接收的當(dāng)前數(shù)據(jù)幀;否則將所述接收的當(dāng)前數(shù)據(jù)幀的消息序號賦給所述上次消息序號并使用當(dāng)前數(shù)據(jù)幀。
[0043]以此類推,接收到的多個數(shù)據(jù)幀就組成了發(fā)送時的原始數(shù)據(jù)。
[0044]以上的各實施例僅僅是對本發(fā)明的優(yōu)選實施方式進行描述,并非對本發(fā)明的范圍進行限定,在不脫離本發(fā)明設(shè)計精神的前提下,本領(lǐng)域普通工程技術(shù)人員對本發(fā)明的技術(shù)方案做出的各種變形和改進,均應(yīng)落入本發(fā)明的權(quán)利要求書確定的保護范圍內(nèi)。
【權(quán)利要求】
1.一種雙冗余CAN總線數(shù)據(jù)接收處理方法,其特征在于,包括如下步驟: (1)在雙冗余CAN總線的第一通道和第二通道上同時發(fā)送數(shù)據(jù)幀組成的數(shù)據(jù); (2)接收雙冗余CAN總線的第一通道的數(shù)據(jù),同時接收雙冗余CAN總線的第二通道的數(shù)據(jù); (3)判斷在兩個通道中接收到的數(shù)據(jù)的數(shù)據(jù)幀中是否需要區(qū)分重復(fù)數(shù)據(jù); (4 )對不需區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀內(nèi)的數(shù)據(jù)直接使用,對需要區(qū)分重復(fù)數(shù)據(jù)的數(shù)據(jù)幀進行區(qū)分:對經(jīng)過區(qū)分處理的數(shù)據(jù)幀中的非重復(fù)數(shù)據(jù)進行使用,對其中的重復(fù)數(shù)據(jù)則拋掉。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)接收處理方法,其特征在于,在步驟(I)中,在數(shù)據(jù)幀中存放消息序號,且在每個通道內(nèi),各數(shù)據(jù)幀的消息序號在每次發(fā)送以后發(fā)生變化。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)接收處理方法,其特征在于,在步驟(3)中,根據(jù)數(shù)據(jù)幀的消息標(biāo)識符確定是否需要區(qū)分重復(fù)數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)接收處理方法,其特征在于,在步驟(4)中,根據(jù)所述消息序號進行區(qū)分。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)接收處理方法,其特征在于,步驟(4)進一步包括如下步驟: (a)獲得新的數(shù)據(jù)幀的消息序號與上次消息序號,其中,新的數(shù)據(jù)幀的消息序號是從其中一個通道接收到的當(dāng)前數(shù)據(jù)幀的消息序號,上次消息序號是在接收所述當(dāng)前數(shù)據(jù)幀之前、通過任意通道接收到的、與所述當(dāng)前數(shù)據(jù)幀具有相同的幀消息標(biāo)識符的數(shù)據(jù)幀的消息序號; (b)判斷新的數(shù)據(jù)幀的消息序號是否等于上次消息序號:如果相等,則拋掉所述接收的當(dāng)前數(shù)據(jù)幀;否則將所述接收的當(dāng)前數(shù)據(jù)幀的消息序號賦給所述上次消息序號并使用當(dāng)前數(shù)據(jù)幀。
6.根據(jù)權(quán)利要求3所述的數(shù)據(jù)接收處理方法,其特征在于,在兩個通道上發(fā)送的同一個數(shù)據(jù)的消息序號相同,發(fā)送的不同數(shù)據(jù)的消息序號每一幀不相同。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)接收處理方法,其特征在于,消息序號占用一個字節(jié)長度,在0-255的數(shù)據(jù)范圍內(nèi)循環(huán)變化。
【文檔編號】H04L12/40GK103490966SQ201310470785
【公開日】2014年1月1日 申請日期:2013年10月10日 優(yōu)先權(quán)日:2013年10月10日
【發(fā)明者】李向陽, 梁財海, 李 榮, 王小軍, 孫招鳳, 張洪彬 申請人:北京航天發(fā)射技術(shù)研究所, 中國運載火箭技術(shù)研究院