吳一坤
(中國(guó)電子科技集團(tuán)公司第二十研究所,陜西 西安 710068)
當(dāng)前,數(shù)據(jù)總線技術(shù)被廣泛應(yīng)用在飛控系統(tǒng)中,提升了整個(gè)系統(tǒng)的可靠性、靈活性及擴(kuò)展性。CAN作為標(biāo)準(zhǔn)的工業(yè)總線之一,具有獨(dú)特的設(shè)計(jì)思想、優(yōu)良的性能,經(jīng)過(guò)多年發(fā)展已日趨成熟,在眾多領(lǐng)域得到了廣泛應(yīng)用。實(shí)現(xiàn)CAN總線系統(tǒng)通信需要依托標(biāo)準(zhǔn)的CAN協(xié)議規(guī)范,就像用戶使用互聯(lián)網(wǎng)需要依托TCP/IP協(xié)議一樣[1]。CAN總線提出的CAN2.0 A/CAN2.0B協(xié)議標(biāo)準(zhǔn),使它具有物理層和數(shù)據(jù)鏈路層功能。在此基礎(chǔ)上,CAN應(yīng)用層協(xié)議往往需要用戶自行設(shè)計(jì)制定,或采用國(guó)際組織已發(fā)布的成熟應(yīng)用層協(xié)議進(jìn)行剪裁移植。
CANaerospace由德國(guó)Stock航空系統(tǒng)公司制定,是目前應(yīng)用在航空領(lǐng)域較為主流的CAN應(yīng)用層協(xié)議之一,適用于飛行器機(jī)載設(shè)備之間進(jìn)行總線通信。探究其協(xié)議特點(diǎn)、報(bào)文結(jié)構(gòu)、總線調(diào)度機(jī)制等核心技術(shù)規(guī)范,并對(duì)其剪裁移植、優(yōu)化設(shè)計(jì),以實(shí)現(xiàn)應(yīng)用驗(yàn)證,是本文研究的重點(diǎn)。
CANaerospace規(guī)范了航空機(jī)載設(shè)備間總線通信的協(xié)議接口,其主要特點(diǎn)如下[2]:
(1) 總線型網(wǎng)絡(luò)拓?fù)?,如圖1所示。支持3種數(shù)據(jù)傳輸方式:點(diǎn)對(duì)點(diǎn)、多主以及廣播。無(wú)需系統(tǒng)啟動(dòng)過(guò)程,不會(huì)出現(xiàn)因?yàn)橹髡臼《l(fā)的危險(xiǎn)情況。
(2) 針對(duì)應(yīng)用場(chǎng)景高可靠性要求,支持系統(tǒng)冗余。
(3) 總線網(wǎng)絡(luò)可在一定范圍內(nèi)動(dòng)態(tài)調(diào)度,支持節(jié)點(diǎn)熱插拔。
(4) 協(xié)議規(guī)范公開(kāi),用戶可自定義協(xié)議內(nèi)容及報(bào)文類型等,便于擴(kuò)展應(yīng)用。
圖1 CANaerospace總線型拓?fù)浣Y(jié)構(gòu)
1.2.1 報(bào)文類型
CANaerospace協(xié)議定義了7種基本報(bào)文類型,每種類型都具有特定的功能作用和使用規(guī)范,如表1所示。同時(shí),對(duì)每種報(bào)文類型分配了固定的CAN標(biāo)識(shí)符范圍,用來(lái)定義它們的優(yōu)先級(jí),而范圍內(nèi)的標(biāo)識(shí)符可由用戶自行制定分配。
表1 CANaerospace報(bào)文類型及說(shuō)明
該協(xié)議標(biāo)準(zhǔn)保證了總線上所有消息報(bào)文都具有唯一的CAN標(biāo)識(shí)符,即每條報(bào)文具有唯一的優(yōu)先級(jí)。當(dāng)總線多節(jié)點(diǎn)同時(shí)發(fā)送報(bào)文時(shí),高優(yōu)先級(jí)信息先被傳輸,較低優(yōu)先級(jí)信息停止發(fā)送,并等總線空閑時(shí)再次嘗試。
1.2.2 消息格式
CANaerospace協(xié)議規(guī)定采取“大端模式”,基本信息格式如圖2所示,所有報(bào)文數(shù)據(jù)域分為兩部分(共8字節(jié)),用來(lái)表示報(bào)文的標(biāo)題和報(bào)文有效數(shù)據(jù)信息[3]。
圖2 CANaerospace消息數(shù)據(jù)域格式
節(jié)點(diǎn)編號(hào)主要用于標(biāo)識(shí)總線數(shù)據(jù)傳輸中的不同節(jié)點(diǎn),表示范圍為1~255,編號(hào)0表示所有節(jié)點(diǎn)。
數(shù)據(jù)類型標(biāo)明總線報(bào)文的數(shù)據(jù)特征。CANaerospace規(guī)定每條報(bào)文都支持多種數(shù)據(jù)類型(FLOAT、LONG、SHORT、CHAR等),用戶也可在特定標(biāo)識(shí)符范圍內(nèi)自行定義需要的數(shù)據(jù)類型。
服務(wù)代碼即節(jié)點(diǎn)服務(wù)協(xié)議代碼。對(duì)于正常操作數(shù)據(jù),它用來(lái)表征此刻總線數(shù)據(jù)的狀態(tài),使得在任何時(shí)間,都對(duì)節(jié)點(diǎn)單元接收數(shù)據(jù)的有效性已知。
報(bào)文編號(hào)按照總線上報(bào)文傳輸?shù)臄?shù)量增加,超過(guò)255后又歸0,并再次進(jìn)行累加。此編號(hào)用于監(jiān)測(cè)報(bào)文信息傳輸進(jìn)程和正確順序,以驗(yàn)證總線節(jié)點(diǎn)是否正常工作。
CANaerospace協(xié)議規(guī)定數(shù)據(jù)傳輸基于時(shí)間觸發(fā)方式進(jìn)行,正常工作狀態(tài)下,各類報(bào)文信息會(huì)按照協(xié)議預(yù)先分配的周期時(shí)間進(jìn)行傳輸,同時(shí)也在特定情況下接收中斷,傳輸非周期信息。以CANaerospace基準(zhǔn)系統(tǒng)為例,如表2所示,設(shè)定系統(tǒng)信息傳輸頻率為80 Hz,即傳輸周期為12.5 ms,這里將12.5 ms的傳輸時(shí)間稱為最小傳輸間隔。在實(shí)際控制系統(tǒng)應(yīng)用中,并不是所有設(shè)備報(bào)文信息都需要以如此短的周期傳輸,可以根據(jù)設(shè)備信息的具體情況,對(duì)最小傳輸間隔進(jìn)行不同組合,以滿足各類報(bào)文信息的傳輸需求,使總線上能傳輸更多參數(shù)[4]。
表2 基準(zhǔn)系統(tǒng)報(bào)文定時(shí)發(fā)送頻率
基于對(duì)CANaerospace協(xié)議的詳細(xì)探究,本章將對(duì)其進(jìn)行剪裁移植,優(yōu)化設(shè)計(jì)出運(yùn)行在實(shí)驗(yàn)室飛控系統(tǒng)原理樣機(jī)的CAN總線應(yīng)用層協(xié)議。
飛控系統(tǒng)原理樣機(jī)中,飛控計(jì)算機(jī)通過(guò)總線與伺服舵機(jī)進(jìn)行數(shù)據(jù)交互,作為系統(tǒng)的主控節(jié)點(diǎn),它以80 ms為周期向伺服舵機(jī)發(fā)送控制指令,伺服舵機(jī)收到指令后立即響應(yīng),并以20 ms為周期回報(bào)自身舵面角度和舵機(jī)狀態(tài)信息??偩€上可能傳輸?shù)臄?shù)據(jù)幀主要分為2類:飛控計(jì)算機(jī)發(fā)送的控制指令幀和伺服舵機(jī)回報(bào)信息幀,控制指令幀優(yōu)先級(jí)高于回報(bào)信息幀。
CAN總線飛控系統(tǒng)通信模型主要為生產(chǎn)者/消費(fèi)者模型。該通信模型下,在總線非破壞性仲裁中,競(jìng)爭(zhēng)獲勝的節(jié)點(diǎn),成為發(fā)送信息的“生產(chǎn)者”,其余節(jié)點(diǎn)成為接收信息的“消費(fèi)者”。設(shè)置總線通信波特率為500 kbps。數(shù)字舵機(jī)節(jié)點(diǎn)傳輸?shù)膱?bào)文信息種類有限,數(shù)據(jù)量較少,正常工作模式下,協(xié)議中不考慮多幀傳輸?shù)那闆r。
CANaerospace支持CAN2.0B協(xié)議,兼容CAN2.0 A??紤]原理樣機(jī)系統(tǒng)傳輸?shù)臄?shù)據(jù)種類少、總線系統(tǒng)節(jié)點(diǎn)個(gè)數(shù)少以及減小信息延時(shí)等方面的原因,本協(xié)議制定使用11位標(biāo)識(shí)符,并規(guī)定節(jié)點(diǎn)之間數(shù)據(jù)交換只使用數(shù)據(jù)幀,不使用遠(yuǎn)程幀傳輸。
采用標(biāo)識(shí)符靜態(tài)分配方式,將總線上可能傳輸?shù)?類數(shù)據(jù)幀ID設(shè)定在CANaerospace協(xié)議正常操作數(shù)據(jù)范圍(CAN-ID為0x12C至0x707)內(nèi),控制指令和狀態(tài)數(shù)據(jù)根據(jù)傳輸間隔,周期性傳輸或中斷執(zhí)行。
數(shù)據(jù)域中,CANaerospace協(xié)議原理樣機(jī)數(shù)據(jù)幀結(jié)構(gòu)如表3所示。結(jié)合原理樣機(jī)在總線上數(shù)據(jù)傳輸?shù)奶攸c(diǎn),本協(xié)議制定如下:
D0定義為節(jié)點(diǎn)ID,在飛控系統(tǒng)原理樣機(jī)中,存在的節(jié)點(diǎn)包括飛控計(jì)算機(jī)和多個(gè)安裝在不同位置上起不同作用的數(shù)字電動(dòng)舵機(jī),D0就用來(lái)區(qū)分網(wǎng)絡(luò)上所有節(jié)點(diǎn)的位置信息,給每個(gè)節(jié)點(diǎn)都標(biāo)識(shí)出ID號(hào),當(dāng)節(jié)點(diǎn)ID為0x00時(shí),代表“所有節(jié)點(diǎn)”,表明可能會(huì)有廣播幀的發(fā)送;
D1定義為數(shù)據(jù)類型,CANaerospace協(xié)議允許多種數(shù)據(jù)類型在總線上傳輸,并對(duì)不同數(shù)據(jù)類型定義了不同標(biāo)識(shí),對(duì)于數(shù)據(jù)接收者只要分析信息幀數(shù)據(jù)域D1的內(nèi)容便可根據(jù)協(xié)議得出總線數(shù)據(jù)類型,這里制定發(fā)控指令和回報(bào)信息都為SHORT型(0x06);
D2定義為服務(wù)代碼,對(duì)于正常操作數(shù)據(jù),此字節(jié)顯示當(dāng)下的總線數(shù)據(jù)狀態(tài),保證了接收數(shù)據(jù)的有效性,CANaerospace協(xié)議已定義節(jié)點(diǎn)服務(wù)有4類,對(duì)原理樣機(jī)定義為保留狀態(tài)(XXS),供將來(lái)擴(kuò)展使用;
D3定義為報(bào)文編碼,編碼按照數(shù)據(jù)幀發(fā)送數(shù)量而自動(dòng)增加,最大至255后歸0,再?gòu)?開(kāi)始重新計(jì)數(shù)增加,可以通過(guò)報(bào)文編碼來(lái)測(cè)定報(bào)文的進(jìn)程和正確的順序,監(jiān)測(cè)總線收發(fā);
D4~D5定義為舵面偏轉(zhuǎn)角信息,最高1位為符號(hào)位,說(shuō)明舵面偏轉(zhuǎn)的正負(fù)方向,低15位為數(shù)據(jù)有效位,表明具體的偏轉(zhuǎn)角度;
D6~D7定義為其他數(shù)據(jù),例如電動(dòng)舵機(jī)類型等。
表3 CANaerospace協(xié)議原理樣機(jī)數(shù)據(jù)幀結(jié)構(gòu)
本實(shí)驗(yàn)CAN總線網(wǎng)絡(luò)上掛接飛控計(jì)算機(jī)節(jié)點(diǎn)、數(shù)字電動(dòng)舵機(jī)節(jié)點(diǎn)以及PC機(jī)節(jié)點(diǎn),構(gòu)成實(shí)驗(yàn)室飛控系統(tǒng)原理樣機(jī),如圖3所示。實(shí)驗(yàn)方案中,飛控計(jì)算機(jī)作為主控節(jié)點(diǎn),周期性向舵機(jī)節(jié)點(diǎn)發(fā)送舵面偏轉(zhuǎn)控制指令;電動(dòng)舵機(jī)節(jié)點(diǎn)接收并響應(yīng)飛控指令的同時(shí),周期性向飛控計(jì)算機(jī)回報(bào)自身舵面實(shí)時(shí)偏轉(zhuǎn)角度;PC機(jī)節(jié)點(diǎn)作為總線上的第3個(gè)節(jié)點(diǎn),接收并顯示CAN總線上的實(shí)時(shí)收發(fā)數(shù)據(jù)。RS-232串行總線連接飛控計(jì)算機(jī)與PC機(jī),打印飛控計(jì)算機(jī)節(jié)點(diǎn)數(shù)據(jù)收發(fā),有利于后續(xù)實(shí)驗(yàn)數(shù)據(jù)的對(duì)比分析。
圖3 原理樣機(jī)實(shí)驗(yàn)連接原理圖
CAN總線飛控系統(tǒng)原理樣機(jī)測(cè)試實(shí)驗(yàn)中,連接在總線上的PC機(jī)節(jié)點(diǎn)通過(guò)CANTest軟件平臺(tái)記錄所有通信發(fā)生過(guò)程中的數(shù)據(jù)信息。信息主要分為2類:飛控計(jì)算機(jī)每80 ms對(duì)電動(dòng)舵機(jī)發(fā)送周期性控制指令,以及電動(dòng)舵機(jī)每20 ms對(duì)飛控計(jì)算機(jī)回報(bào)周期性角度信息。
依據(jù)實(shí)驗(yàn)的嚴(yán)謹(jǐn)性,隨機(jī)選擇3組由-20°~+20°循環(huán)的實(shí)驗(yàn)數(shù)據(jù),這3組數(shù)據(jù)在時(shí)間上是連續(xù)的,將第1組數(shù)據(jù)的第1幀記為基準(zhǔn)時(shí)間0,后續(xù)數(shù)據(jù)按周期時(shí)間依次增加,如表4所示,對(duì)數(shù)據(jù)匯總解算。
表4 原理樣機(jī)發(fā)控與回報(bào)角度數(shù)據(jù)
對(duì)3組實(shí)驗(yàn)解算數(shù)據(jù)詳細(xì)分析,可得出以下結(jié)論:
(1) 時(shí)間連續(xù)的測(cè)試中,存在兩處角度“跳躍點(diǎn)”,它的出現(xiàn)是為驗(yàn)證舵機(jī)在指令周期內(nèi),響應(yīng)大角度偏轉(zhuǎn)而設(shè)計(jì)的結(jié)果。在每組測(cè)試最后一幀+20°的指令發(fā)送后,依舊等待80 ms,發(fā)送下一組測(cè)試的第1幀-20°的指令,相同周期內(nèi)發(fā)控角度跨度由2°變?yōu)?0°,發(fā)生了跳躍,舵面持續(xù)向目標(biāo)角度偏轉(zhuǎn),但短時(shí)間內(nèi)無(wú)法到達(dá),并繼續(xù)以20 ms為周期回報(bào)實(shí)時(shí)角度信息。
(2) 除去角度“跳躍點(diǎn)”所產(chǎn)生的非穩(wěn)定狀態(tài),計(jì)算每指令周期下發(fā)控角度和回報(bào)角度的誤差,分析3組數(shù)據(jù),可得絕對(duì)值最大誤差為0.207 5°,最小誤差為0.007 5°,所有誤差絕對(duì)值處于0.007 5°~0.207 5°之間,遠(yuǎn)小于±0.5°的誤差范圍,數(shù)據(jù)表現(xiàn)良好穩(wěn)定。
利用MATLAB擬合發(fā)控角度和實(shí)時(shí)回報(bào)角度的數(shù)據(jù)信息,仿真制圖如圖4所示。觀測(cè)角度走勢(shì),分析舵機(jī)回報(bào)角度對(duì)飛控計(jì)算機(jī)發(fā)控角度的跟隨性。
圖4 原理樣機(jī)通信數(shù)據(jù)曲線擬合
分析圖4可得出以下結(jié)果:
(1) 3組飛控計(jì)算機(jī)發(fā)送角度都分別從-20°~20°,爬升斜率一致,出現(xiàn)兩處角度“跳躍點(diǎn)”;
(2) 由結(jié)果走勢(shì)可看出,回報(bào)曲線斜率基本同發(fā)控曲線斜率一致,每次相應(yīng)的發(fā)控行為與回報(bào)行為之間相差一個(gè)指令周期,誤差值極小,可得舵機(jī)對(duì)飛控計(jì)算機(jī)的跟隨性良好,系統(tǒng)性能優(yōu)良。
航空領(lǐng)域方面,CANaerospace是當(dāng)今被廣泛應(yīng)用的機(jī)載設(shè)備之間通信的應(yīng)用層協(xié)議,本文對(duì)它的核心特點(diǎn)、報(bào)文類型、總線信息調(diào)度方式等規(guī)范進(jìn)行了深入探究,并著重應(yīng)用此協(xié)議,進(jìn)行剪裁移植,優(yōu)化設(shè)計(jì)了關(guān)于實(shí)驗(yàn)室飛控原理樣機(jī)的應(yīng)用層協(xié)議。規(guī)范了樣機(jī)的通信模型和總線數(shù)據(jù)交互類型,以及報(bào)文結(jié)構(gòu)內(nèi)每個(gè)字節(jié)的具體定義等。通過(guò)飛控系統(tǒng)原理樣機(jī)的測(cè)試實(shí)驗(yàn),結(jié)果證明CANaerospace應(yīng)用層協(xié)議制定正確、CAN總線無(wú)人機(jī)飛控系統(tǒng)通信性能良好。