楊 璋
(中國(guó)西南電子技術(shù)研究所 四川 成都 610036)
CAN總線作為現(xiàn)場(chǎng)總線中的重要代表,最早由Bosch公司提出并應(yīng)用在汽車領(lǐng)域,CAN總線的組網(wǎng)簡(jiǎn)單、性能可靠、實(shí)時(shí)性好、功耗較低,并自帶校驗(yàn)機(jī)制和糾錯(cuò)機(jī)制,使其逐漸在工業(yè)、醫(yī)療、航空、航天等諸多行業(yè)中得到了廣泛的應(yīng)用[1-5],小衛(wèi)星平臺(tái)上普遍采用CAN總線作為數(shù)據(jù)通信的主要手段[6-7]。近年來速率更高的CAN FD被提出用以升級(jí)替換CAN[8-10],但由于其兼容性、成本、可靠性等問題仍待完善[11],目前CAN FD還未得到大規(guī)模應(yīng)用,CAN總線依然是各類工程應(yīng)用的主流。按照網(wǎng)絡(luò)分層結(jié)構(gòu)的定義,CAN總線網(wǎng)絡(luò)分為三層:物理層、數(shù)據(jù)鏈路層和應(yīng)用層,其中標(biāo)準(zhǔn)的CAN網(wǎng)絡(luò)架構(gòu)僅定義了物理層和數(shù)據(jù)鏈路層,應(yīng)用層需要用戶自行定義[12]。一些行業(yè)標(biāo)準(zhǔn)陸續(xù)出臺(tái),如CAN總線應(yīng)用層協(xié)議(CAL)、汽車工程協(xié)會(huì)協(xié)議(SAE)等。各小衛(wèi)星平臺(tái)也根據(jù)其系統(tǒng)設(shè)計(jì)特點(diǎn),形成了各自獨(dú)特的CAN總線應(yīng)用層協(xié)議標(biāo)準(zhǔn)[13-14],開展了星載標(biāo)準(zhǔn)接口的研究[15]。載荷搭載衛(wèi)星平臺(tái)時(shí),其分系統(tǒng)內(nèi)部的CAN總線協(xié)議設(shè)計(jì)普遍參照平臺(tái)協(xié)議標(biāo)準(zhǔn)執(zhí)行。隨著載荷設(shè)備低成本、小型化、智能化、快速響應(yīng)的趨勢(shì),載荷數(shù)量急增,系統(tǒng)功能更復(fù)雜,數(shù)據(jù)交互方式更靈活,開發(fā)周期更短,完全參照平臺(tái)協(xié)議很難滿足現(xiàn)有設(shè)計(jì)需求,本文針對(duì)小衛(wèi)星載荷工作特點(diǎn),設(shè)計(jì)了基于PeliCAN模式的載荷CAN總線協(xié)議。該協(xié)議支持靈活的通信方式,能滿足較為復(fù)雜的節(jié)點(diǎn)組網(wǎng)方式,具備一定的通用性,網(wǎng)絡(luò)負(fù)載滿足載荷組網(wǎng)要求。
小衛(wèi)星平臺(tái)普遍選用CAN控制器芯片SJA1000,支持兩種CAN總線模式,一種是BasicCAN模式,支持CAN2.0A協(xié)議,采用11 bit報(bào)文標(biāo)識(shí)符的標(biāo)準(zhǔn)幀;另一種是PeliCAN模式,支持CAN2.0B協(xié)議,可采用29 bit報(bào)文標(biāo)識(shí)符的擴(kuò)展幀。小衛(wèi)星平臺(tái)的通信總線采用分層多級(jí)的方式設(shè)計(jì),與星務(wù)平臺(tái)直接通信的設(shè)備較少,因此基于BasicCAN模式的CAN總線設(shè)計(jì)已經(jīng)能夠滿足需求,各個(gè)小衛(wèi)星平臺(tái)均有標(biāo)準(zhǔn)的CAN應(yīng)用層協(xié)議,搭載的載荷總線普遍參照?qǐng)?zhí)行。近年來載荷分系統(tǒng)功能復(fù)雜度逐漸增加,使載荷分系統(tǒng)內(nèi)部CAN總線節(jié)點(diǎn)數(shù)量急增,采用BasicCAN模式進(jìn)行應(yīng)用層協(xié)議設(shè)計(jì),已經(jīng)不能很好地滿足載荷內(nèi)部通信組網(wǎng)的需求。
PeliCAN模式作為BasicCAN模式的改進(jìn)版本,增加了報(bào)文標(biāo)識(shí)符的位數(shù),支持雙濾波器設(shè)置(屏蔽和驗(yàn)收濾波器),并增強(qiáng)了對(duì)CAN總線錯(cuò)誤的檢測(cè)(可操作的錯(cuò)誤計(jì)數(shù)器),使得基于PeliCAN模式擴(kuò)展幀進(jìn)行載荷分系統(tǒng)內(nèi)部CAN總線協(xié)議設(shè)計(jì)支持更多的節(jié)點(diǎn)數(shù)量,節(jié)點(diǎn)之間的通信方式更靈活。本設(shè)計(jì)選用PeliCAN模式擴(kuò)展數(shù)據(jù)幀作為信息傳輸模式。
PeliCAN模式下的擴(kuò)展數(shù)據(jù)幀中用戶可編程的數(shù)據(jù)幀共13字節(jié),分為6部分:幀格式(FF);幀類型(RTR);保留位(XX);幀長(zhǎng)度(DLC);報(bào)文標(biāo)識(shí)符(ID);數(shù)據(jù)場(chǎng)(DATE)。本設(shè)計(jì)中,F(xiàn)F=1表示擴(kuò)展幀,RTR=0表示數(shù)據(jù)幀,具體定義如表 1所示,其中用戶主要通過設(shè)計(jì)報(bào)文標(biāo)識(shí)符和濾波器來控制總線各個(gè)節(jié)點(diǎn)之間的通信方式。
表1 PeliCAN模式擴(kuò)展數(shù)據(jù)幀格式
PeliCAN模式下擴(kuò)展數(shù)據(jù)幀的報(bào)文標(biāo)識(shí)符(ID)共29 bit(ID.28-ID.0),通過對(duì)報(bào)文標(biāo)識(shí)的分段設(shè)計(jì),能夠?qū)崿F(xiàn)數(shù)據(jù)幀優(yōu)先級(jí)仲裁,點(diǎn)對(duì)點(diǎn)、廣播、組播、子播通信模式。報(bào)文分段設(shè)計(jì)具體格式如表 2所示,分別對(duì)標(biāo)識(shí)符各段進(jìn)行設(shè)計(jì)。
表2 報(bào)文標(biāo)識(shí)分段設(shè)計(jì)格式
1.3.1信息優(yōu)先級(jí)
信息優(yōu)先級(jí)(PRI)共3 bit,定義數(shù)據(jù)幀的優(yōu)先級(jí),最多支持7種信息優(yōu)先等級(jí)(全1不使用),數(shù)值越小優(yōu)先級(jí)越高,當(dāng)多種類型的數(shù)據(jù)幀同時(shí)發(fā)送時(shí),優(yōu)先級(jí)高的數(shù)據(jù)幀最先獲得總線使用權(quán)。將指令參數(shù)等重要數(shù)據(jù)類型設(shè)為最高優(yōu)先級(jí),遙測(cè)輪詢次之,廣播設(shè)為相對(duì)低優(yōu)先級(jí),具體設(shè)置如表 3所示。
表3 優(yōu)先級(jí)分類格式
1.3.2源節(jié)點(diǎn)ID
源節(jié)點(diǎn)ID(SID)共5 bit,定義總線上各節(jié)點(diǎn)發(fā)送數(shù)據(jù)幀的優(yōu)先級(jí),最多支持32種節(jié)點(diǎn)優(yōu)先等級(jí),數(shù)值越小優(yōu)先級(jí)越高,當(dāng)出現(xiàn)總線沖突時(shí),優(yōu)先級(jí)高的節(jié)點(diǎn)最先獲得總線使用權(quán)。主控機(jī)優(yōu)先級(jí)最高,分控機(jī)優(yōu)先級(jí)次之,前端機(jī)優(yōu)先級(jí)低,測(cè)試機(jī)優(yōu)先級(jí)最低,分控機(jī)、前端機(jī)和測(cè)試機(jī)等同類型多臺(tái)設(shè)備間按照業(yè)務(wù)重要等級(jí)設(shè)置同類設(shè)備優(yōu)先級(jí),源節(jié)點(diǎn)優(yōu)先級(jí)格式如表 4所示。
表4 源節(jié)點(diǎn)分類格式
1.3.3目標(biāo)節(jié)點(diǎn)ID
目標(biāo)節(jié)點(diǎn)ID(DID)共5 bit,定義節(jié)點(diǎn)站地址,最多支持32個(gè)節(jié)點(diǎn)地址。目標(biāo)節(jié)點(diǎn)ID配合各節(jié)點(diǎn)的屏蔽和驗(yàn)收濾波器參數(shù),實(shí)現(xiàn)總線上各節(jié)點(diǎn)對(duì)數(shù)據(jù)幀的篩選接收。點(diǎn)對(duì)點(diǎn)通信時(shí),用于指示濾波器只接收本節(jié)點(diǎn)數(shù)據(jù)幀,目標(biāo)節(jié)點(diǎn)ID的具體格式定義與源節(jié)點(diǎn)ID定義類似。非點(diǎn)對(duì)點(diǎn)模式時(shí),用于指示濾波器區(qū)分組播內(nèi)的子播組,最多支持10個(gè)子播組,具體定義如表 5所示。
表5 目標(biāo)節(jié)點(diǎn)分類格式(非點(diǎn)對(duì)點(diǎn)通信)
1.3.4通信類型
通信類型(BTYPE)共3 bit,定義數(shù)據(jù)幀是否為點(diǎn)對(duì)點(diǎn)通信,最多支持3種通信分類,點(diǎn)對(duì)點(diǎn)通信。非組播類型數(shù)據(jù)幀由節(jié)點(diǎn)的濾波器1匹配,組播類型數(shù)據(jù)幀由節(jié)點(diǎn)的濾波器2匹配,能夠?qū)崿F(xiàn)節(jié)點(diǎn)同時(shí)篩選多種組播和非組播類型的數(shù)據(jù)幀。具體定義如表6所示。
表6 通信類型定義
1.3.5數(shù)據(jù)類型
數(shù)據(jù)類型(TITLE)共8 bit,定義每個(gè)數(shù)據(jù)幀的信息類型,當(dāng)總線上進(jìn)行多主通信時(shí),可能出現(xiàn)不同信息類型幀混合,接收節(jié)點(diǎn)可根據(jù)幀TITLE區(qū)分不同信息類型數(shù)據(jù)幀,從而分別緩存拼接,實(shí)現(xiàn)混合幀解析。
1.3.6幀類型
幀類型(SRE)共2 bit,定義數(shù)據(jù)幀為多幀還是單幀,節(jié)點(diǎn)接收到數(shù)據(jù)幀后,將多幀或單幀恢復(fù)為完整的信息數(shù)據(jù)包。
總線上各節(jié)點(diǎn)在接收數(shù)據(jù)幀時(shí),使用自身濾波器參數(shù)與數(shù)據(jù)幀報(bào)文標(biāo)識(shí)進(jìn)行匹配,只有通過匹配的數(shù)據(jù)幀才能被節(jié)點(diǎn)接收,從而實(shí)現(xiàn)節(jié)點(diǎn)對(duì)CAN總線上大量數(shù)據(jù)的選擇性接收。數(shù)據(jù)幀中的ID.28-ID.13共16 bit作為濾波仲裁位參與篩選。接收濾波包括2種:驗(yàn)收屏蔽濾波器定義哪些ID位需要進(jìn)行仲裁;驗(yàn)收代碼濾波器定義ID位的具體仲裁值。
本設(shè)計(jì)中為滿足系統(tǒng)要求的多種組合通信方式,總線節(jié)點(diǎn)全部采用雙濾波器模式,濾波器1接收點(diǎn)對(duì)點(diǎn)的通信數(shù)據(jù),濾波器2接收非點(diǎn)對(duì)點(diǎn)的通信數(shù)據(jù)。數(shù)據(jù)幀中的報(bào)文標(biāo)識(shí)符ID只要通過任意1個(gè)濾波器的仲裁,就能被節(jié)點(diǎn)接收。雙濾波器的配置如圖1所示。
圖1 節(jié)點(diǎn)雙濾波器模式配置示意圖
通過各個(gè)節(jié)點(diǎn)的濾波器配置結(jié)合各種數(shù)據(jù)幀的報(bào)文標(biāo)識(shí)符,總線節(jié)點(diǎn)之間同時(shí)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、廣播、組播、子播等多種通信模式,系統(tǒng)非點(diǎn)對(duì)點(diǎn)的通信模式示意圖如圖 2所示。
圖2 非點(diǎn)對(duì)點(diǎn)通信模式示意圖
CAN總線上傳輸?shù)挠行?shù)據(jù)包設(shè)計(jì)為單幀數(shù)據(jù)包和多幀數(shù)據(jù)包2種,其通用格式設(shè)計(jì)如表 7、表 8所示。為區(qū)分結(jié)束幀,多幀數(shù)據(jù)包的最后一包必須小于8字節(jié),若最后一幀剛好8字節(jié),則需要發(fā)送一幀空幀(只包含Index,無數(shù)據(jù)內(nèi)容),其中DLC表示幀長(zhǎng)度,ID表示報(bào)文標(biāo)識(shí)符,Index表示幀序號(hào),Len表示數(shù)據(jù)長(zhǎng)度,Title表示數(shù)據(jù)類型,W1-Wn表示數(shù)據(jù)內(nèi)容,SUM表示校驗(yàn)位。
表7 單幀數(shù)據(jù)格式
表8 多幀數(shù)據(jù)格式
為保證CAN總線上數(shù)據(jù)通信穩(wěn)定,總線網(wǎng)絡(luò)負(fù)載須限制在30%以內(nèi),CAN總線的網(wǎng)絡(luò)負(fù)載表示為:
(1)
式中:Sc表示單位時(shí)間實(shí)際傳輸數(shù)據(jù)的位數(shù),Sa表示單位時(shí)間理論可傳輸數(shù)據(jù)的位數(shù),Sstd表示1幀擴(kuò)展幀的位數(shù),nperiod表示單位時(shí)間周期型數(shù)據(jù)的幀數(shù),nevent表示單位時(shí)間事件型數(shù)據(jù)的幀數(shù),總線采用500 kb/s的速率,多幀間隔200 μs,總線負(fù)載情況如表9所示,總線負(fù)載峰值為24.05%,滿足設(shè)計(jì)規(guī)范要求。
表9 總線負(fù)載情況
隨著小衛(wèi)星載荷集成化與智能化水平不斷提高,載荷設(shè)備數(shù)量急劇增加,總線數(shù)據(jù)交互更加靈活,采用BasicCAN模式的協(xié)議設(shè)計(jì)逐漸不能滿足要求。本文設(shè)計(jì)了一種基于PeliCAN模式的載荷CAN總線協(xié)議,相比于傳統(tǒng)總線協(xié)議,能容納更多的網(wǎng)絡(luò)節(jié)點(diǎn),能同時(shí)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、廣播、組播和子播多種通信方式。通用幀格式便于實(shí)現(xiàn)多主通信和混合幀解析,具有一定通用性。通過對(duì)總線網(wǎng)絡(luò)負(fù)載分析,基于本協(xié)議實(shí)現(xiàn)的總線網(wǎng)絡(luò)負(fù)載峰值滿足行業(yè)要求,該設(shè)計(jì)方法已經(jīng)在小衛(wèi)星型號(hào)項(xiàng)目上得到成功應(yīng)用。