楊 璋
(中國西南電子技術研究所 四川 成都 610036)
CAN總線作為現場總線中的重要代表,最早由Bosch公司提出并應用在汽車領域,CAN總線的組網簡單、性能可靠、實時性好、功耗較低,并自帶校驗機制和糾錯機制,使其逐漸在工業、醫療、航空、航天等諸多行業中得到了廣泛的應用[1-5],小衛星平臺上普遍采用CAN總線作為數據通信的主要手段[6-7]。近年來速率更高的CAN FD被提出用以升級替換CAN[8-10],但由于其兼容性、成本、可靠性等問題仍待完善[11],目前CAN FD還未得到大規模應用,CAN總線依然是各類工程應用的主流。按照網絡分層結構的定義,CAN總線網絡分為三層:物理層、數據鏈路層和應用層,其中標準的CAN網絡架構僅定義了物理層和數據鏈路層,應用層需要用戶自行定義[12]。一些行業標準陸續出臺,如CAN總線應用層協議(CAL)、汽車工程協會協議(SAE)等。各小衛星平臺也根據其系統設計特點,形成了各自獨特的CAN總線應用層協議標準[13-14],開展了星載標準接口的研究[15]。載荷搭載衛星平臺時,其分系統內部的CAN總線協議設計普遍參照平臺協議標準執行。隨著載荷設備低成本、小型化、智能化、快速響應的趨勢,載荷數量急增,系統功能更復雜,數據交互方式更靈活,開發周期更短,完全參照平臺協議很難滿足現有設計需求,本文針對小衛星載荷工作特點,設計了基于PeliCAN模式的載荷CAN總線協議。該協議支持靈活的通信方式,能滿足較為復雜的節點組網方式,具備一定的通用性,網絡負載滿足載荷組網要求。
小衛星平臺普遍選用CAN控制器芯片SJA1000,支持兩種CAN總線模式,一種是BasicCAN模式,支持CAN2.0A協議,采用11 bit報文標識符的標準幀;另一種是PeliCAN模式,支持CAN2.0B協議,可采用29 bit報文標識符的擴展幀。小衛星平臺的通信總線采用分層多級的方式設計,與星務平臺直接通信的設備較少,因此基于BasicCAN模式的CAN總線設計已經能夠滿足需求,各個小衛星平臺均有標準的CAN應用層協議,搭載的載荷總線普遍參照執行。近年來載荷分系統功能復雜度逐漸增加,使載荷分系統內部CAN總線節點數量急增,采用BasicCAN模式進行應用層協議設計,已經不能很好地滿足載荷內部通信組網的需求。
PeliCAN模式作為BasicCAN模式的改進版本,增加了報文標識符的位數,支持雙濾波器設置(屏蔽和驗收濾波器),并增強了對CAN總線錯誤的檢測(可操作的錯誤計數器),使得基于PeliCAN模式擴展幀進行載荷分系統內部CAN總線協議設計支持更多的節點數量,節點之間的通信方式更靈活。本設計選用PeliCAN模式擴展數據幀作為信息傳輸模式。
PeliCAN模式下的擴展數據幀中用戶可編程的數據幀共13字節,分為6部分:幀格式(FF);幀類型(RTR);保留位(XX);幀長度(DLC);報文標識符(ID);數據場(DATE)。本設計中,FF=1表示擴展幀,RTR=0表示數據幀,具體定義如表 1所示,其中用戶主要通過設計報文標識符和濾波器來控制總線各個節點之間的通信方式。

表1 PeliCAN模式擴展數據幀格式
PeliCAN模式下擴展數據幀的報文標識符(ID)共29 bit(ID.28-ID.0),通過對報文標識的分段設計,能夠實現數據幀優先級仲裁,點對點、廣播、組播、子播通信模式。報文分段設計具體格式如表 2所示,分別對標識符各段進行設計。

表2 報文標識分段設計格式
1.3.1信息優先級
信息優先級(PRI)共3 bit,定義數據幀的優先級,最多支持7種信息優先等級(全1不使用),數值越小優先級越高,當多種類型的數據幀同時發送時,優先級高的數據幀最先獲得總線使用權。將指令參數等重要數據類型設為最高優先級,遙測輪詢次之,廣播設為相對低優先級,具體設置如表 3所示。

表3 優先級分類格式
1.3.2源節點ID
源節點ID(SID)共5 bit,定義總線上各節點發送數據幀的優先級,最多支持32種節點優先等級,數值越小優先級越高,當出現總線沖突時,優先級高的節點最先獲得總線使用權。主控機優先級最高,分控機優先級次之,前端機優先級低,測試機優先級最低,分控機、前端機和測試機等同類型多臺設備間按照業務重要等級設置同類設備優先級,源節點優先級格式如表 4所示。

表4 源節點分類格式
1.3.3目標節點ID
目標節點ID(DID)共5 bit,定義節點站地址,最多支持32個節點地址。目標節點ID配合各節點的屏蔽和驗收濾波器參數,實現總線上各節點對數據幀的篩選接收。點對點通信時,用于指示濾波器只接收本節點數據幀,目標節點ID的具體格式定義與源節點ID定義類似。非點對點模式時,用于指示濾波器區分組播內的子播組,最多支持10個子播組,具體定義如表 5所示。

表5 目標節點分類格式(非點對點通信)
1.3.4通信類型
通信類型(BTYPE)共3 bit,定義數據幀是否為點對點通信,最多支持3種通信分類,點對點通信。非組播類型數據幀由節點的濾波器1匹配,組播類型數據幀由節點的濾波器2匹配,能夠實現節點同時篩選多種組播和非組播類型的數據幀。具體定義如表6所示。

表6 通信類型定義
1.3.5數據類型
數據類型(TITLE)共8 bit,定義每個數據幀的信息類型,當總線上進行多主通信時,可能出現不同信息類型幀混合,接收節點可根據幀TITLE區分不同信息類型數據幀,從而分別緩存拼接,實現混合幀解析。
1.3.6幀類型
幀類型(SRE)共2 bit,定義數據幀為多幀還是單幀,節點接收到數據幀后,將多幀或單幀恢復為完整的信息數據包。
總線上各節點在接收數據幀時,使用自身濾波器參數與數據幀報文標識進行匹配,只有通過匹配的數據幀才能被節點接收,從而實現節點對CAN總線上大量數據的選擇性接收。數據幀中的ID.28-ID.13共16 bit作為濾波仲裁位參與篩選。接收濾波包括2種:驗收屏蔽濾波器定義哪些ID位需要進行仲裁;驗收代碼濾波器定義ID位的具體仲裁值。
本設計中為滿足系統要求的多種組合通信方式,總線節點全部采用雙濾波器模式,濾波器1接收點對點的通信數據,濾波器2接收非點對點的通信數據。數據幀中的報文標識符ID只要通過任意1個濾波器的仲裁,就能被節點接收。雙濾波器的配置如圖1所示。

圖1 節點雙濾波器模式配置示意圖
通過各個節點的濾波器配置結合各種數據幀的報文標識符,總線節點之間同時實現點對點、廣播、組播、子播等多種通信模式,系統非點對點的通信模式示意圖如圖 2所示。

圖2 非點對點通信模式示意圖
CAN總線上傳輸的有效數據包設計為單幀數據包和多幀數據包2種,其通用格式設計如表 7、表 8所示。為區分結束幀,多幀數據包的最后一包必須小于8字節,若最后一幀剛好8字節,則需要發送一幀空幀(只包含Index,無數據內容),其中DLC表示幀長度,ID表示報文標識符,Index表示幀序號,Len表示數據長度,Title表示數據類型,W1-Wn表示數據內容,SUM表示校驗位。

表7 單幀數據格式

表8 多幀數據格式
為保證CAN總線上數據通信穩定,總線網絡負載須限制在30%以內,CAN總線的網絡負載表示為:
(1)
式中:Sc表示單位時間實際傳輸數據的位數,Sa表示單位時間理論可傳輸數據的位數,Sstd表示1幀擴展幀的位數,nperiod表示單位時間周期型數據的幀數,nevent表示單位時間事件型數據的幀數,總線采用500 kb/s的速率,多幀間隔200 μs,總線負載情況如表9所示,總線負載峰值為24.05%,滿足設計規范要求。

表9 總線負載情況
隨著小衛星載荷集成化與智能化水平不斷提高,載荷設備數量急劇增加,總線數據交互更加靈活,采用BasicCAN模式的協議設計逐漸不能滿足要求。本文設計了一種基于PeliCAN模式的載荷CAN總線協議,相比于傳統總線協議,能容納更多的網絡節點,能同時實現點對點、廣播、組播和子播多種通信方式。通用幀格式便于實現多主通信和混合幀解析,具有一定通用性。通過對總線網絡負載分析,基于本協議實現的總線網絡負載峰值滿足行業要求,該設計方法已經在小衛星型號項目上得到成功應用。