麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

冗余CAN總線通信系統的數據通信方法與流程

文檔序號:12492089閱讀:1128來源:國知局
冗余CAN總線通信系統的數據通信方法與流程

本發明涉及現場總線通信技術,尤其涉及冗余CAN總線通信系統的數據通信方法。



背景技術:

目前,CAN總線技術已被廣泛應用于工業控制領域。CAN總線分為物理層、數據鏈路層和應用層。其中,物理層和數據鏈路層遵循CAN2.0協議規范。1992年,CIA組織成立,其首要任務之一就是制定CAN應用層協議。目前,通過的協議規范包括DeviceNet、CANOpen等。CANOpen規范是工業控制領域權威的規范,其包括系列文檔。其中,最基本的為CANOpen301,已正式發布并應用。此外,CANOpen302是針對浮動主節點的規范,CANOpen307是海事規范。對于安全等級要求較高的系統而言,尤其是硬實時嵌入式系統而言(海事領域、航空航天等領域),對傳輸數據的可靠性要求較高,因此通常會采用冗余CAN總線通信系統。冗余CAN總線通信系統的物理層結構如圖1所示,其中,節點100包括兩個CAN控制器101、102以及兩個CAN收發器103、104。目前的冗余CAN總線系統主要有以下幾種通信方式:

1、雙CAN通信系統的簡單冗余:

這種方式簡單地將雙CAN冗余通訊系統作為單CAN系統的重復,在兩條CAN總線上發送和接收數據。其通信方式過于簡單,如果在數據通信過程出現阻塞狀況,同一幀報文將會在不同的時間到達接收方,從而導致數據的反復震蕩,數據一致性差。對于實時系統而言,將會很大程度影響系統的功能和可靠性。

2、冗余系統的冷備份:

所謂冷備份即數據首先在一條CAN總線上進行傳輸,當使用的這一條CAN總線出現故障時,再使用另外一條CAN總線代替故障的CAN總線,進行數據的傳輸。該種傳輸機制由于任一時刻只有一條CAN總線在傳輸數據,也即可以保證數據的一致性問題。但是,其存在下面問題:(1)在總線切換的過程中會出現數據的丟失以及數據的延時傳輸;(2)當使用的那一條CAN總線出現短暫的干擾或故障時,該機制失去冗余的含義,因此,對于實時系統而言,冷備份系統并不適合。

3、CANOpen307規范中使用的熱備份:

針對單CAN總線網絡而言,CIA組織提出了CANOpen301規范。而海事電子產品由于其安全等級較高,因此采用冗余CAN總線,并在CANOpen301基礎上提出了CANOpen307規范。目前,CANOpen307規范仍然是草稿版,未正式發布。

CANOpen307規范中也是采用熱冗余,即兩條CAN總線都進行過程數據(PDO)的發送,其從源端保證數據的一致性。即:待發送的CAN報文,從請求發送開始,到放入CAN控制器進行發送,會分別在兩條CAN總線上進行計時,如果超過設定的時間窗口,會將報文舍棄,從而保證數據的一致性。但是,這種通信方式存在以下問題:(1)時間窗口的設置不能無限的大,要小于報文的禁止時間,否則仍然會出現亂序的問題;(2)在有限的時間窗口內,可能出現下面情況:當兩條CAN總線都收到干擾時,會導致總線報文發送延遲,兩條CAN總線上的報文都超過設定的時間窗口,將報文舍棄。那么,對于實時嵌入式系統來講,丟棄了重要的報文,延遲了報文的接收時間,將會對系統產生不可預估,甚至是破壞性的影響。(3)在代碼實現機制上復雜。



技術實現要素:

本發明所要解決的技術問題在于提供一種制造成本低的冗余CAN總線通信系統的數據通信方法,其能充分保證接收數據的一致性,并最大程度避免接收端產生新舊數據的震蕩。

為解決上述技術問題,本發明所采取的技術方案是:

冗余CAN總線通信系統的數據通信方法,包括以下步驟:

發送端將包含滾動計數值a的PDO報文在兩條CAN總線上發送;發送端發送具有同一個報文ID的PDO報文時,每發送一幀PDO報文,PDO報文的滾動計數值a加1,滾動計數值a的初始值為0,滾動計數值的上限值為N,當滾動計數值a達到其上限值N時,重新從1開始計數;

在接收端設置期望計數器,期望計數器的計數值b用于表示期望接收到的PDO報文的滾動計數值;接收端每接收到發送端發送的一幀PDO報文時,先判斷該幀PDO報文是否有效,其中: 當期望計數器的計數值b為0、接收到的PDO報文的滾動計數值a為0、或者是接收到的PDO報文的滾動計數值a等于期望計數器的計數值b時,判斷接收的PDO報文有效,否則,判斷接收到的PDO報文為無效報文;

接收端在接收到滾動計數值a為0的有效報文時,將期望計數器的計數值b設為1,在接收到滾動計數值a不為0的有效報文、且期望計數器的計數值b小于所述的上限值N時,將期望計數器的計數值b更新為該有效報文的滾動計數值加1,在接收到滾動計數值a不為0的有效報文、且期望計數器的計數值b等于所述的上限值N時,將期望計數器的計數值b更新為1;

接收端在接收到無效報文時,丟棄該無效報文,并維持當前期望計數器的計數值b不變。

本發明的冗余CAN總線通信系統的數據通信方法易于實現、可靠性高,在熱冗余傳輸的前提下,即保證了接收數據的一致性,又避免了數據的震蕩,提高了實時系統的性能。與現有技術相比,本發明至少具有以下優點和特點:

1、與雙CAN通信系統的簡單冗余相比,解決了數據通信的亂序和數據一致性問題;

2、相比冗余系統的冷備份而言,可以實現兩條CAN總線同時進行數據的傳輸,不存在CAN總線切換帶來的丟幀和數據通信延時問題;

3、相比CANOpen307機制而言,本發明不在發送端進行報文的過濾,而采用接收端進行報文的比較判斷,解決了由于時間窗口設置時導致丟失報文的問題,而且軟件實現簡單可靠;

4、本發明的發送端在兩條CAN總線上都進行數據的傳輸,從源頭上避免了丟幀的問題,而接收端可區分出新舊報文,對新報文進行接收,將舊報文進行舍棄,在保證數據一致性的同時,又避免了數據的震蕩。

附圖說明

圖1示出了冗余CAN總線通信系統的物理層結構示意圖。

圖2示出了發送端所采用的滾動計數機制的原理示意圖。

圖3示出了根據本發明一實施例的冗余CAN總線通信系統的數據通信方法的接收端流程示意圖。

具體實施方式

下面結合附圖和具體實施例對本發明進行詳細說明。

請參閱圖2。根據本發明一實施例的一種冗余CAN總線通信系統的數據通信方法為了防止接收方接收到的數據產生新舊數據的震蕩,在發送端采用了滾動計數(Rolling Counter)的機制,在接收端進行數據的篩選。在本實施例中,對于同一個ID的PDO報文而言,在報文的數據場中取第一個字節進行滾動計數,該滾動計數值最大值可以靈活設置。發送端每發送一幀報文,滾動計數值就加1,包含該滾動計數值的報文在兩條總線(即圖2中的默認總線和冗余總線)上發送。發送端在上電或復位后首先發送滾動計數值為0的報文,之后的計數從1開始,如果超過數據字典中定義的最大值,則從1開始重新計數。

請結合圖3所示。根據本發明一實施例的一種冗余CAN總線通信系統的數據通信方法,包括以下步驟:

發送端將包含滾動計數值a的PDO報文在兩條CAN總線上發送;發送端發送具有同一個報文ID的PDO報文時,每發送一幀PDO報文,PDO報文的滾動計數值a加1,滾動計數值a的初始值為0,滾動計數值的上限值為N,當滾動計數值a達到其上限值N時,在發送下一幀PDO報文時,重新從1開始計數;在本實施例中,N=255,發送端發送的第一幀PDO報文的a為1,第二幀PDO報文為2,依次類推,當發送端發送完a=255的那一幀PDO報文之后,接下來的發送的那一幀PDO報文的滾動計數值a=1;

在接收端設置期望計數器,期望計數器的計數值b用于表示期望接收到的PDO報文的滾動計數值;接收端每接收到發送端發送的一幀PDO報文時,先判斷該幀PDO報文是否有效,其中: 當期望計數器的計數值b為0、接收到的PDO報文的滾動計數值a為0、或者是接收到的PDO報文的滾動計數值a等于期望計數器的計數值b時,判斷接收的PDO報文有效,否則,判斷接收到的PDO報文為無效報文;也就是說,如果接收到的PDO報文的滾動計數值a大于或小于當前期望計數器的計數值b時則都將該PDO報文視為無效;

接收端在接收到滾動計數值a為0的有效報文時,將期望計數器的計數值b強制設為1;接收端在接收到滾動計數值a不為0的有效報文、且期望計數器的計數值b小于上限值N時,將期望計數器的計數值b更新為該有效報文的滾動計數值加1,即,b=a+1;接收端在接收到滾動計數值a不為0的有效報文、且期望計數器的計數值b等于上限值N時,則將期望計數器的計數值b更新為1;

接收端在接收到無效報文時,丟棄該無效報文,并維持當前期望計數器的計數值b不變。

在此要說明的是,圖3所示的接收端工作流程圖僅為示意性的,并不應當視為對本申請限制。例如,接收端也可以先判斷a是否為0,而后判斷b是否為0。

本實施例中,接收方端對接收到的報文進行了過濾,從而能充分保證接收數據的一致性,并最大程度避免接收端產生新舊數據的震蕩。

舉例來說,假設發送端發送的第一幀PDO報文在兩條CAN總線上同時進行傳輸,該PDO報文的滾動計數值a=0。如果接收端通過其中一條CAN總線先接收到該幀報文,因a=0會判斷該PDO報文為有效報文,并使b=1,也就是說,接收端期望接收到的下一幀PDO報文的滾動計數值為1。當在另一條CAN總線上傳輸的、滾動計數值為0的PDO報文后傳輸到接收端時,因a=0,仍然會被接收端判斷為有效報文,同時期望計數器的計數值b仍然為1。接下來,假設發送端又將第二幀PDO報文同時在兩條CAN總線上進行傳輸,此時第二幀PDO報文的滾動計數值a=1。如果接收端又通過其中一條CAN總線先接收到該幀報文,由于b=a=1,接收端會判斷該PDO報文為有效報文,并使b=1+1=2。而當在另一條CAN總線上傳輸的、滾動計數值為1的PDO報文后傳輸到接收端時,因1<2,會被接收端判斷為無效報文而被舍棄。依此類推,假設接收端通過其中一條CAN總線先接收到了a=255的這一幀有效報文,因此時期望計數器的計數值b也等于255,則會使b=1。而當在另一條CAN總線上傳輸的、滾動計數值為255的PDO報文后傳輸到接收端時,因255≠1,還是會被接收端判斷為無效報文而被舍棄。

顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 杭锦旗| 周口市| 宁武县| 屏东县| 伊宁市| 博湖县| 满城县| 安岳县| 新田县| 读书| 如皋市| 五家渠市| 荥阳市| 贵阳市| 云安县| 麟游县| 大名县| 乾安县| 渝中区| 瑞安市| 兴山县| 剑阁县| 民乐县| 慈溪市| 松原市| 长春市| 徐州市| 长兴县| 响水县| 江西省| 邵东县| 博乐市| 秦安县| 开平市| 万宁市| 白朗县| 金塔县| 堆龙德庆县| 东丰县| 鄂伦春自治旗| 博野县|