一種適於多主通信的星載can總線通信方法
2023-06-13 06:29:36 1
專利名稱:一種適於多主通信的星載can總線通信方法
技術領域:
本發明涉及一種星載CAN總線通信方法,特別是一種適於多主通信的星載CAN總 線通信方法,屬於星載CAN總線技術領域。
背景技術:
CAN (Controller Area Network)總線是一種串行通信的現場總線,具有可靠性 高、實時性好、抗幹擾能力強、通信方式靈活、組網簡單等優點,因此國內外均已將其引入衛 星上電子系統,甚至作為星上骨幹網絡來完成星上設備間的信息傳遞。在CAN總線協議方面,德國B0SCH公司的「CAN Specification Version2. 0,1991」 對CAN總線通信協議進行了詳細說明,即我們現在使用的CAN2. 0A標準規範。該協議後經 國際標準化組織(ISO)採用開放系統互聯(0SI)模型標準化後得到IS011898和IS011519 兩個標準,分別對高、低速CAN總線的物理層和數據鏈路層作出了規定。由於CAN的0SI模 型標準沒有對數據鏈路層以上的協議進行規定,因此增強了 CAN總線應用的靈活性。多個 行業根據應用特點在CAN底層協議的基礎上形成了高層應用標準,如Rockwell公司針對工 業自動化建立基於CAN總線的開放式現場總線標準DeviceNet ;CiA組織針對工業應用建立 的CANopen規範;德國Stock Flight System公司針對航空飛行器應用建立的新型航空機 載設備通信總線協議CANaerospace ;美國航空無線電公司ARI NC針對航空飛行器應用建 立了 ARI NC-825 標準。在衛星應用領域,目前還沒有代表性的針對CAN總線的應用協議規範。現有星上 使用的CAN總線應用協議普遍是基於CAN2. 0A標準規範建立的僅適於主從通信或準多主通 信的方法,不能適用星上多個通信節點間自主數據交換的多主通信需求。滿足星載CAN總 線多個通信節點間自主數據交換的多主通信方法還未見有專利及文獻報導
發明內容
本發明的技術解決問題是克服現有技術的不足,提供了一種適於多主通信的星 載CAN總線通信方法,解決星載CAN總線網絡上多個通信節點間自主數據交換的問題。本發明的技術解決方案是一種適於多主通信的星載CAN總線通信方法,基於衛星CAN總線通信協議的 CAN2. 0A標準規範,按照如下方法進行節點間通信將CAN2. 0A協議中的libit標識符區域劃分為三個部分,依次是源地址、目的地址 和幀類型,其中源地址表示發起數據傳輸的節點自身地址,分配4bit ;目的地址表示發送 目標節點的地址,分配4bit;幀類型分配3bit,包括單幀數據、多幀數據起始幀、多幀數據 中繼幀和多幀數據結束幀;所述節點為衛星上使用CAN總線連接起來的各個分系統中具有 CAN通信接口的設備或傳感器;單幀數據的數據場長度為8位元組,第一個字節表示數據類型,後面七個字節全部 為應用數據;多幀數據起始幀數據場長度為4個字節,第一個字節為數據幀數,表示實際傳送的數據幀的數目,第二個字節為數據長度,第三個字節為數據類型,第四個字節為保留字 節;多幀數據的中繼幀數據場長度為8位元組,全部為應用數據,不足8位元組的中繼幀補足8 字節;多幀數據結束幀數據場長度為1位元組,該字節為應用數據的校驗和;節點地址設計為兩類,第一類節點僅接收發給自己的數據,即數據幀中的目的地 址與接收節點的本地地址一致,第二類節點可以接收發給自己的數據,即數據幀中的目的 地址與接收節點的本地地址一致,同時還可以接收網絡廣播數據,即數據幀的目的地址為 設定的廣播地址;網絡中廣播地址設置為「1111」,其餘地址的分配依據網絡中第二類地址數目需求 來定,分為三種情況1)當第二類節點數目需求為0時,廣播地址以外的其餘地址可全部分配為第一類 地址,共計15個;2)當第二類節點數目需求為1 4時,4bit節點地址中「1」的數目為3的組合分 配作為第二類地址,即「1110」、「1101」、「1011」和「0111」,共計4個;4bit節點地址中「1」 的數目為0、1和2的組合均可以分配作為第一類地址,共計11個;3)當第二類節點數目需求為5 6時,4bit節點地址中「1」的數目為2的組合分 配作為第二類地址,即「1100」、「1001」、「0011」、「1010」、「0110」和「0101」,共計 6 個;4bit 節點地址中「1」的數目為0和1的組合均可以分配作為第一類地址,共計5個,4bit節點地 址中「 1 」的數目為3的節點地址禁用;對第一類節點的4bit目的地址全部進行接收濾波設置,僅當接收數據幀中的目 的地址與本節點本地地址完全一致時接收,即本地節點僅僅接收發給自己的數據,所述進 行接收濾波設置是指在節點所對應的CAN總線控制器中設置接收代碼寄存器和接收屏蔽 寄存器的數值;對第二類節點的4bit目的地址進行選擇性濾波,即對本地4bit地址中為「1」的位 進行濾波,對接收到的數據幀,只要目的地址的相應位為「1」,即與本地4bit地址中為「1」 對應的位為「1」,則進行接收,否則不接收;對於第一類和第二類節點的4bit源地址進行濾波設置,以屏蔽掉非約定節點發 來的非法數據;所述濾波設置是指在節點所對應的CAN總線控制器中設置接收代碼寄存器 和接收屏蔽寄存器的數值,使得本地節點拒絕接收非約定節點發過來的錯誤數據;根據上述方法設置完所有節點所對應的CAN總線控制器中的接收濾波寄存器並 且根據上述方法編寫發送模塊和接收模塊,最後衛星上各個通信節點之間通過發送模塊和 接收模塊進行通信本發明與現有技術相比的有益效果是(1)本發明通信方法中的每幀數據中都包含了數據的源地址和目的地址,因此,連 接在星載CAN總線上的多個通信節點都可以作為主節點的方式自主在網絡上發送數據,接 收節點可以根據接收到數據幀中的目的節點地址來判斷該數據幀是否是發送給自己的,同 時可以通過接收到數據幀中的源地址判斷該幀數據是從總線上哪個節點發送的,從而確保 了總線上多個通信節點多主通信的實現,增強了節點間通信的靈活性。(2)現有星載CAN總線所採用的主從式通信模式是主節點通過輪詢的方式(逐個 向從節點發送數據請求)要求從節點返回所需的數據,主節點需要等待前一個從節點返回所需的數據後才能向下一個節點發送數據請求,而每個接收到數據請求的從節點從收到數 據請求到將數據通過CAN總線發送給主節點都有一個不確定的時間延遲(該延遲主要由從 節點處理器的性能、總線接收數據中斷優先級、數據準備時間等因素決定),因此導致主節 點在輪詢到每個從節點時都存在一個不確定的時間等待,進而使得主節點不能在確定時間 內完成與當前從節點及後續從節點的通信,基於本發明通信方法的星載CAN總線上的多個 節點由於都可以以主節點的方式根據自己的時序自主安排向其他通信節點發送數據或廣 播數據,各個節點的通信彼此獨立,多個節點可以實現同時對CAN總線的訪問(向總線上發 送數據),利用CAN總線自身的總線仲裁機制可以確保多個節點在同一時刻發送的數據依 據優先級依次在總線上傳輸,因此可以大幅提高總線傳輸的利用率,消除主從通信方式中 的通信時間延遲及時間不確定性,提升數據傳輸的實時性;(3)採用基於本發明通信方法的節點地址分配及屏蔽策略,可實現多個通信節點 間在不影響數據幀接收的同時根據需要屏蔽掉無關節點發送的全部數據,通過目的節點地 址屏蔽設置可以確保總線上某通信節點只接收事先約定的總線上其它通信節點發送來的 數據幀(即以數據接收通信節點為目的地址的數據幀),通過源節點地址屏蔽設置可以避 免總線上非約定通信節點在故障情況下以錯誤的以某節點的地址為目的地址而向該節點 發送數據幀。
圖1為本發明的適於多主通信的星載CAN總線通信方法的協議格式;圖2為本發明的適於多主通信的星載CAN總線通信方法的流程。
具體實施例方式採用CAN總線實現星上多個通信節點間的數據交換是目前小衛星上常用的節點 間通信方式,星載CAN總線通信節點通常為星上某分系統中具有CAN通信接口的設備或傳 感器,通信節點的基本構成是CAN總線收發器,CAN總線控制器、微處理器等,連接關係是通 信節點的處理器和CAN總線控制器連接,CAN總線控制器和CAN收發器連接,CAN收發器連 接CAN總線通信線纜。CAN總線連接的多個通信節點的通信方式有兩種基本形式,即主從式通信和多主 通信。CAN總線的主從式通信方式指CAN總線上只能有一個主節點,該節點可以主動向總線 上發送數據,其它節點(從節點)不能主動向總線上發送數據,只能在接收到主節點的數據 請求後向主節點發送數據。CAN總線的多主通信是指CAN總線上可以有多個可以自主向總 線上發送數據的通信節點,多個主節點間可以自主的發起數據通信。現在普遍使用的CAN2. OA協議定義的數據幀結構可以參考德國B0SCH公司的「CAN Specification Version2. 0,1991 」,數據幀由7個位域構成,包括幀起始、仲裁域(12bit, 含libit的標識符和lbit的遠程發送請求位)、控制域、數據場(0 8位元組)、CRC校驗域、 應答域和幀結尾。下面結合附圖對本發明的具體實施方式
進行進一步的詳細描述。本發明基於CAN總線通信協議的CAN2. OA標準規範,結合圖1和圖2,按照如下方 式實現星上通信節點之間的多主通信
1)將現有的CAN2.0A協議中的libit標識符區域劃分為三個部分,依次是源地址 (4bit)、目的地址(4bit)和幀類型(3bit),幀類型「000」表示單幀數據、「001」表示多幀起 始幀、「010」表示多幀中間幀、「011」表示多幀結束幀,其餘保留;2)將CAN2. OA協議中的數據段針對單幀和多幀數據傳送進行區別設計。單幀數據 的數據場長度設計為8位元組,第一個字節表示數類型,後面七個字節全部為應用數據。多幀 數據起始幀數據場長度設計為4個字節,第一個字節為數據幀數,表示實際傳送的數據幀 的數目,第二個字節為數據長度,第三個字節為數據類型,第四個字節為保留字節。多幀數 據的中間幀數據場長度為8位元組,全部為應用數據,不足8位元組的中間幀補足8位元組。多幀 數據結束幀數據場長度設計為1位元組,該字節為應用數據的校驗和。進行通信節點間地址編排及設置接收濾波具體如下節點地址設計為兩類,第一類節點僅接收發給自己的數據,即數據幀中的目的地 址與接收節點的本地地址一致,稱為A類節點地址;第二類節點可以接收發給自己的數據, 即數據幀中的目的地址與接收節點的本地地址一致,同時還可以接收網絡廣播數據,即數 據幀的目的地址為設定的廣播地址,稱為B類節點地址;網絡中廣播地址設置為「1111」,其餘地址的分配依據網絡中B類節點數目需求來 定,分為三種情況1)當B類節點數目需求為0時,廣播地址以外的其餘地址可全部分配為第一類地 址,共計15個;2)當B類節點數目需求為1 4時,4bit節點地址中「1」的數目為3的組合分配 作為B類地址,即「 1110」、「 1101」、「 1011」和「0111 」,共計4個;4bit節點地址中「 1 」的數 目為0、1和2的組合均可以分配作為A類地址,共計11個;3)當B類節點數目需求為5 6時,4bit節點地址中「 1 」的數目為2的組合分配 作為 B 類地址,S卩「 1100」、「1001」、「0011」、「1010」、「0110」和「0101」,共計 6 個;4bit 節點 地址中「1」的數目為0和1的組合均可以分配作為A類地址,共計5個,4bit節點地址中 「1」的數目為3的節點地址禁用;對A類節點的4bit目的地址全部進行接收濾波設置,僅當接收數據幀中的目的地 址與本節點本地地址完全一致時接收,即本地節點僅僅接收發給自己的數據,所述進行接 收濾波設置是指在節點所對應的CAN總線控制器中設置接收濾波寄存器的數值;對B類節點的4bit目的地址進行選擇性濾波,即對本地4bit地址中為「 1 」的位進 行濾波,對接收到的數據幀,只要其目的地址的相應位為「1」,即與本地4bit地址中為「1」 對應的位為「 1 」,則進行接收,否則不接收。對於A類和B類節點的4bit源地址進行濾波設置,以屏蔽掉非約定節點發來的 非法數據;所述濾波設置是指在節點所對應的CAN總線控制器中設置接收濾波寄存器的數 值,使得本地節點拒絕接收非約定節點發過來的錯誤數據。根據上述方法設置完所有節點所對應的CAN總線控制器中的接收濾波寄存器並 且根據上述方法編寫發送模塊和接收模塊,最後衛星上各個通信節點之間通過發送模塊和 接收模塊進行通信。實施例1 1)如表1所示,B類節點地址需求為6個,設定廣播地址為「1111」,B類節點的地
6址設置為 「0011」、「0101」、「0110」、「1001」、「1010」、「1100」,A 類節點地址設置為 「0000」、 「 0001 」、「 0010」、「0100 」、「 1000 」,其餘地址禁用;表 1
站地址 編排屏蔽碼設置地址類型節點類型目的地址屏蔽 ID6-ID3源地址屏蔽 ID10-ID7000000000XXXX節點地址A
100010000XXXX節點地址A200100000XXXX節點地址A300111100XXXX節點地址B401000000XXXX節點地址A501011010XXXX節點地址B601101001XXXX節點地址B70111——枯田—810000000XXXX節點地址A910010110XXXX節點地址B1010100101XXXX節點地址B111011—— 田一1211000011XXXX節點地址B131101——赫ffl—141110——禁用—151111——廣播地址注XXXX為可根據應用需要定義的屏蔽碼2)對A類節點的4bit目的地址全部進行接收濾波設置,即僅當接收數據幀中的 目的地址數據與本節點地址完全一致時接收;該過程可以通過設置CAN控制器的接收代碼 寄存器和接收屏蔽寄存器的相應位來實現。比如採用CAN總線控制器SJA1000,設置方式 為配置寄存器ACR的(bit3 BitO)為本節點地址的4bit數值,其餘為任意;配置寄存器 AMR 的(bit7 BitO)為 「11110000」。3)對B類節點的4bit目的地址進行選擇性濾波,即對本地地址(4bit)中為「 1 」 的位進行濾波設置,對接收到數據幀,只要其目的地址的相應位(與本地地址(4bit)中為 「1」對應的位)為「1」,則進行接收,否則不接收。對於CAN總線控制器SJA1000,設置方式 為配置寄存器ACR的(bit3 BitO)為本節點地址的4bit數值,其餘為任意;配置寄存器 AM R的(bit7 Bit4)為「1111」,配置寄存器AM R的(bit3 BitO)為本節點地址的按 位取反,如本節點地址為「1100」,則AM R的(bit3 BitO)配置為「0011」。4)對A類和B類節點的4bit源地址,根據應用需要進行濾波設置,以屏蔽掉非約 定節點發來的非法數據;該過程可以通過設置CAN控制器的接收代碼寄存器和接收屏蔽寄 存器的相應位來實現,方法同上。
7
5)單幀數據的數據場長度設計為8位元組,第一個字節表示數類型,後面七個字節 全部為應用數據;6)多幀數據起始幀數據場長度設計為4個字節,第一個字節為數據幀數,表示實 際傳送的數據幀的數目;7)多幀數據的中間幀數據場長度為8位元組,全部為應用數據,不足8位元組的中間幀 補足8位元組;8)多幀數據結束幀數據場長度設計為1位元組,該字節為應用數據的校驗和。3.依據節點地址編排及接收濾波策略進行各個通信節點相應參數的設置,可採用 配置CAN總線控制器寄存器的方式實現。4.依據本發明的CAN總線通信方法完成通信節點發送和接收函數模塊的代碼實 現,其中發送模塊的代碼實現包括以下步驟1)將要發送數據的指針、數據長度、本節點地址、目的節點地址、幀類型作為函數 模塊的輸入參數;2)通過讀取CAN控制器的狀態寄存器的狀態位來判斷是否為可發送狀態,如果是 可發送狀態則繼續,否則等待;3)設置CAN控制器中表示libit標識符的寄存器的值,分別是將前4bit設置為源 地址,即函數模塊輸入參數的本節點地址,緊接著的4bit為目的地址,即函數模塊輸入參 數的目的節點地址,最後3bit為幀類型;4)向CAN控制器的發送緩衝區中寫入要發送的數據,0 8個字節;5)通過向CAN控制器的發送使能寄存器寫入使能數據啟動發送;6)函數返回;其中接收模塊的代碼實現包括以下步驟1)接收函數模塊無輸入參數;2)讀取CAN控制器狀態寄存器的相應狀態位來判斷是否有接收到的數據幀,有則 依次從CAN控制器接收緩衝區讀出數據,無則繼續;3)通過向CAN控制器的命令寄存器寫入釋放緩衝區指令來清除接收緩衝區;4)函數返回;5.通信節點間通過發送和接收函數模塊進行發送和接收通信。接收函數模塊和發送函數模塊均是現有技術中比較成熟的應用模式。實施例2本發明的實現步驟如下1.基於CAN總線通信協議的CAN2. OA標準規範,進行節點間通信應用協議約定,具 體如下1)將CAN2. OA協議中的1 lbit標識符區域劃分為三個部分,依次是源地址 (4bit)、目的地址(4bit)和幀類型(3bit),幀類型「000」表示單幀數據、「001」表示多幀起 始幀、「010」表示多幀中間幀、「011」表示多幀結束幀,其餘保留;2)將CAN2. OA協議中的數據段針對單幀和多針數據傳送進行區別設計。單幀數據 的數據場長度設計為8位元組,第一個字節表示數類型,後面七個字節全部為應用數據。多幀 數據起始幀數據場長度設計為4個字節,第一個字節為數據幀數,表示實際傳送的數據幀的數目。多幀數據的中間幀數據場長度為8位元組,全部為應用數據,不足8位元組的中間幀補 足8位元組。多幀數據結束幀數據場長度設計為1位元組,該字節為應用數據的校驗和。2.進行通信點間地址編排及設置接收濾波策略,具體如下1)如表2所示,B類節點地址需求為4個,設定廣播地址為「1111」,B類節點的地 址設置為「0111」、「 1011 」、「 1101」、「 1110,,,其餘為A類節點地址;表權利要求
一種適於多主通信的星載CAN總線通信方法,基於衛星CAN總線通信協議的CAN2.0A標準規範,其特徵在於按照如下方法進行節點間通信將CAN2.0A協議中的11bit標識符區域劃分為三個部分,依次是源地址、目的地址和幀類型,其中源地址表示發起數據傳輸的節點自身地址,分配4bit;目的地址表示發送目標節點的地址,分配4bit;幀類型分配3bit,包括單幀數據、多幀數據起始幀、多幀數據中繼幀和多幀數據結束幀;所述節點為衛星上使用CAN總線連接起來的各個分系統中具有CAN通信接口的設備或傳感器;單幀數據的數據場長度為8位元組,第一個字節表示數據類型,後面七個字節全部為應用數據;多幀數據起始幀數據場長度為4個字節,第一個字節為數據幀數,表示實際傳送的數據幀的數目,第二個字節為數據長度,第三個字節為數據類型,第四個字節為保留字節;多幀數據的中繼幀數據場長度為8位元組,全部為應用數據,不足8位元組的中繼幀補足8位元組;多幀數據結束幀數據場長度為1位元組,該字節為應用數據的校驗和;節點地址設計為兩類,第一類節點僅接收發給自己的數據,即數據幀中的目的地址與接收節點的本地地址一致,第二類節點可以接收發給自己的數據,即數據幀中的目的地址與接收節點的本地地址一致,同時還可以接收網絡廣播數據,即數據幀的目的地址為設定的廣播地址;網絡中廣播地址設置為「1111」,其餘地址的分配依據網絡中第二類地址數目需求來定,分為三種情況1)當第二類節點數目需求為0時,廣播地址以外的其餘地址可全部分配為第一類地址,共計15個;2)當第二類節點數目需求為1~4時,4bit節點地址中「1」的數目為3的組合分配作為第二類地址,即「1110」、「1101」、「1011」和「0111」,共計4個;4bit節點地址中「1」的數目為0、1和2的組合均可以分配作為第一類地址,共計11個;3)當第二類節點數目需求為5~6時,4bit節點地址中「1」的數目為2的組合分配作為第二類地址,即「1100」、「1001」、「0011」、「1010」、「0110」和「0101」,共計6個;4bit節點地址中「1」的數目為0和1的組合均可以分配作為第一類地址,共計5個,4bit節點地址中「1」的數目為3的節點地址禁用;對第一類節點的4bit目的地址全部進行接收濾波設置,僅當接收數據幀中的目的地址與本節點本地地址完全一致時接收,即本地節點僅僅接收發給自己的數據,所述進行接收濾波設置是指在節點所對應的CAN總線控制器中設置接收代碼寄存器和接收屏蔽寄存器的數值;對第二類節點的4bit目的地址進行選擇性濾波,即對本地4bit地址中為「1」的位進行濾波,對接收到的數據幀,只要目的地址的相應位為「1」,即與本地4bit地址中為「1」對應的位為「1」,則進行接收,否則不接收;對於第一類和第二類節點的4bit源地址進行濾波設置,以屏蔽掉非約定節點發來的非法數據;所述濾波設置是指在節點所對應的CAN總線控制器中設置接收代碼寄存器和接收屏蔽寄存器的數值,使得本地節點拒絕接收非約定節點發過來的錯誤數據;根據上述方法設置完所有節點所對應的CAN總線控制器中的接收濾波寄存器並且根據上述方法編寫發送模塊和接收模塊,最後衛星上各個通信節點之間通過發送模塊和接收模塊進行通信。
全文摘要
本發明涉及一種適於多主通信的星載CAN總線通信方法,該方法通過合理利用現有CAN2.0A協議中規定的數據幀中的11bit標識符,將11bit標識符劃分為三個部分,依次是源地址(4bit)、目的地址(4bit)和幀類型(3bit),同時通過採用合理的節點地址分配及屏蔽策略,使得基於本發明通信方法的CAN總線上的多個通信節點間可以進行自主的點對點或廣播發送數據,實現多主通信,且在不影響數據幀接收的同時可以根據需要屏蔽掉無關節點發送的全部數據,本發明一方面增強了星上通信節點間通信的靈活性,另一方面可以大幅提高星上CAN總線傳輸的利用率,並且提升數據傳輸的實時性。
文檔編號H04L12/40GK101977094SQ201010517678
公開日2011年2月16日 申請日期2010年10月18日 優先權日2010年10月18日
發明者劉思遠, 李國軍, 楊芳, 蒙薇, 謝松 申請人:航天東方紅衛星有限公司