趙 璇,郭 峰
(武漢理工大學(xué)信息工程學(xué)院,湖北 武漢 430070)
在當(dāng)前環(huán)境下,城市突發(fā)事件的增多和戰(zhàn)場上大規(guī)模沖突事件的減少,對特種小型無人航空器的使用提出了新的要求。傳統(tǒng)的有人駕駛飛行器(直升機(jī)、固定翼飛機(jī))準(zhǔn)備時(shí)間長、開銷大,在城市中面對沖突事件,其響應(yīng)時(shí)間存在明顯滯后,而在野外無人區(qū),無人機(jī)執(zhí)行例行低烈度偵察任務(wù)的效費(fèi)比也較有人駕駛偵察機(jī)高得多。小型無人機(jī)是指有效載荷在5 kg以內(nèi),飛行高度不超過5 000 m(美國FAA規(guī)定普通民用無人機(jī)飛行高度不超過122 m)且飛行距離在5~20 km范圍的無人飛行器。傳統(tǒng)的無人飛行器一直采用集中控制的方式,測試手段只有目視活動(dòng)翼面且無法持續(xù)監(jiān)測,需要操作人員有豐富的使用經(jīng)驗(yàn)?;贑AN總線的分布式系統(tǒng)[1-3],能夠?qū)崟r(shí)地持續(xù)監(jiān)測飛行器上的各節(jié)點(diǎn)模塊,機(jī)載傳感器能夠檢測空中狀態(tài)并進(jìn)行干預(yù),降低了對操作人員的要求。
當(dāng)前航空航天領(lǐng)域最常用的總線主要有ARINC429總線和MIL-STD-1553B總線。前者采用點(diǎn)對點(diǎn)的傳輸方式,數(shù)據(jù)長度固定,總線傳輸速率低,已不能滿足當(dāng)今無人飛行器分布式控制的要求;后者屬于指令/響應(yīng)式總線,數(shù)據(jù)傳輸速率高,抗干擾能力強(qiáng),但由于成本較高,與無人飛行器的基本理念相左。源自汽車工業(yè)的CAN總線技術(shù)已廣泛應(yīng)用于各種陸上交通工具、數(shù)據(jù)采集系統(tǒng)等諸多領(lǐng)域[4-5],是一個(gè)較為理想的、適合無人機(jī)實(shí)時(shí)分布式控制系統(tǒng)要求的總線。
CAN總線(controller area network)即控制器局域網(wǎng),能有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),實(shí)現(xiàn)全分布式多機(jī)系統(tǒng)。其通信速率和距離:直線通信距離最遠(yuǎn)達(dá)10 km(通信速率5 kb/s),通信速率最高1 Mb/s(通信距離40 m);其訪問機(jī)制采用載波監(jiān)聽多路接入(carrier sense multiple access,CSMA)方式,在總線空閑時(shí),網(wǎng)絡(luò)上任意節(jié)點(diǎn)均可主動(dòng)發(fā)送報(bào)文;其仲裁機(jī)制采用基于優(yōu)先級的非破壞性總線仲裁技術(shù),當(dāng)產(chǎn)生總線沖突時(shí),高優(yōu)先級的節(jié)點(diǎn)將獲得總線的使用權(quán)而不是重新等待發(fā)送機(jī)會(huì);仲裁機(jī)制具有出錯(cuò)幀自動(dòng)重發(fā)功能,能自動(dòng)判別暫時(shí)性故障節(jié)點(diǎn)和永久性故障節(jié)點(diǎn),可自動(dòng)關(guān)閉故障節(jié)點(diǎn)。
由于CAN總線本質(zhì)上為事件觸發(fā)系統(tǒng),其總線仲裁技術(shù)只能保證高優(yōu)先級消息的有效發(fā)送,無法估計(jì)低優(yōu)先級消息發(fā)送是否延遲,最惡劣情況下,高優(yōu)先級的消息會(huì)占用全部總線,此時(shí)低優(yōu)先級的消息將被永久地堵塞。這些不足需要在CAN上層應(yīng)用協(xié)議中加以克服,筆者提出的CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議和診斷協(xié)議,較好地解決了低優(yōu)先級消息發(fā)送延遲的問題。
無人機(jī)由于結(jié)構(gòu)緊湊,通常采用非常規(guī)布局,根據(jù)飛行方案的不同,分為固定翼和旋翼兩種。
固定翼飛行器采用倒V型尾翼以兼顧方向調(diào)整和俯仰配平,襟副翼合為一體。而旋翼飛行器多采用雙軸甚至四軸旋翼,以提高升力,同時(shí)降低飛行器在空中保持方向平衡的難度。其中,前者速度快,抗風(fēng)能力較強(qiáng),不能實(shí)現(xiàn)空中懸停,對控制需求高;后者速度慢,可實(shí)現(xiàn)空中懸停,對控制需求稍低,但城市高樓間大風(fēng)對旋翼飛行器的影響非常大。筆者采用固定翼飛行器的系統(tǒng)架構(gòu)。
按照無人飛行器總體設(shè)計(jì)要求,航空電子系統(tǒng)主要由飛行控制計(jì)算機(jī)、無線遙控終端、數(shù)字式伺服控制器、發(fā)動(dòng)機(jī)控制器和姿態(tài)傳感器組件組成。各種模塊/設(shè)備是物理上分開的功能部件,分別由獨(dú)立的MCU和外圍電路組成,設(shè)備間通過波特率為500 k/s的高速CAN總線進(jìn)行連接。其網(wǎng)絡(luò)拓?fù)鋱D[6-7](433 MHz頻率的遙控模塊直接與飛行控制模塊相連,故未標(biāo)出)如圖1所示。
圖1 小型無人飛行器網(wǎng)絡(luò)拓?fù)鋱D
升降舵控制飛行器的俯仰配平,副翼控制飛行器的滾轉(zhuǎn),襟翼用于增加飛行器起降時(shí)的升力,方向舵主要用于飛行方向的微調(diào)。其中,起落架、副翼、發(fā)動(dòng)機(jī)、襟翼、方向舵和升降舵為CANoe模擬節(jié)點(diǎn)。飛行控制模塊為真實(shí)物理節(jié)點(diǎn),以NEC的0893型單片機(jī)為主控,TJA1050為高速CAN收發(fā)器。整個(gè)系統(tǒng)由飛行主控發(fā)起調(diào)度,周期性地請求節(jié)點(diǎn)的狀態(tài)和發(fā)送控制指令。
飛行控制單元可工作于自主飛行模式或無線遙控指定模式,無論哪種模式,飛行器都是由飛控單元通過CAN總線發(fā)送控制指令到各節(jié)點(diǎn)模塊,由各模塊輸出周期為20 ms的PWM信號來驅(qū)動(dòng)伺服機(jī)構(gòu)的電機(jī)并最終完成執(zhí)行動(dòng)作。
網(wǎng)絡(luò)的物理層和數(shù)據(jù)鏈路層遵循CAN2.0B協(xié)議,由于該協(xié)議只定義了數(shù)據(jù)鏈路層中的MAC層和LLC子層的一部分,因此自定義了應(yīng)用層。CANaerospace協(xié)議是下一代通用航空總線協(xié)議之一,主要由小型和中型飛機(jī)制造商采用。但由于小型無人機(jī)的節(jié)點(diǎn)設(shè)備少,網(wǎng)絡(luò)結(jié)構(gòu)相對簡單,因此根據(jù)實(shí)際情況,對 CANaerospace協(xié)議進(jìn)行裁剪,精簡后的協(xié)議實(shí)現(xiàn)難度小,適合于采用單片機(jī)的小型無人機(jī)系統(tǒng)。
經(jīng)過裁剪的協(xié)議規(guī)定節(jié)點(diǎn)間只使用數(shù)據(jù)幀,不使用遠(yuǎn)程幀。數(shù)據(jù)幀的結(jié)構(gòu)遵循CAN2.0標(biāo)準(zhǔn),字節(jié)格式使用Motorola格式,使用11位節(jié)點(diǎn)標(biāo)識符為預(yù)先分配的固定標(biāo)識符[8]。數(shù)據(jù)幀結(jié)構(gòu)如表1所示。
表1 數(shù)據(jù)幀結(jié)構(gòu)
飛行控制單元作為唯一的主節(jié)點(diǎn),負(fù)責(zé)對整個(gè)控制系統(tǒng)進(jìn)行調(diào)度,通過CAN總線與伺服舵機(jī)、動(dòng)力單元進(jìn)行數(shù)據(jù)交換。其工作流程為:該節(jié)點(diǎn)以20 ms為周期向所有控制面舵機(jī)發(fā)送控制指令和自身的狀態(tài)信息;所有控制面舵機(jī)以20 ms為周期向飛行控制單元發(fā)送自己的工作信息及自身的狀態(tài)信息;動(dòng)力節(jié)點(diǎn)以20 ms為周期發(fā)送工作轉(zhuǎn)速,續(xù)航電壓和自身的狀態(tài)信息。該系統(tǒng)中CAN總線上傳輸?shù)臄?shù)據(jù)幀類型分為以下幾種:
(1)普通控制幀。飛控對舵機(jī)的控制指令,所有節(jié)點(diǎn)的工作狀態(tài),時(shí)間觸發(fā)性;
(2)特殊指令幀。關(guān)閉指定節(jié)點(diǎn)的特殊功能指令,事件觸發(fā)性;
(3)診斷測試幀。用于地面自檢測,事件觸發(fā)和時(shí)間觸發(fā)性;
根據(jù)實(shí)際飛行控制時(shí)各操縱機(jī)構(gòu)的使用頻率,規(guī)定系統(tǒng)優(yōu)先級從低到高依次為:起落架、襟翼、方向舵、升降舵、副翼、動(dòng)力單元和飛控單元,同時(shí)把數(shù)據(jù)幀分為3個(gè)等級,并規(guī)定診斷測試幀等級最低,特殊指令幀次之,普通控制幀最高。以該原則具體定義的標(biāo)識符為:升降舵(0x04),副翼(0x08),襟翼(0x20),方向舵(0x10),起落架(0x40),動(dòng)力單元(0x02),飛控單元(0x01)。
基于KWP2000協(xié)議的研究,筆者提出了基于CAN總線的小型無人機(jī)診斷協(xié)議。診斷數(shù)據(jù)幀的格式定義如表2所示。
表2 幀格式 B
格式符定義診斷幀的有效字節(jié)數(shù)B(1~64),目標(biāo)地址為投遞地址,源地址為發(fā)送地址,長度字節(jié)用于支持超幀(有效字節(jié)數(shù)據(jù)大于64時(shí)使用),缺省情況下為0,服務(wù)標(biāo)識為具體診斷的命令(文中通稱為“診斷服務(wù)名稱”),數(shù)據(jù)字節(jié)為命令參數(shù),或者作為診斷的返回信息(無人機(jī)對診斷服務(wù)的響應(yīng))。
診斷協(xié)議支持的診斷服務(wù)如表3所示。
表3 診斷服務(wù)
診斷服務(wù)標(biāo)識即診斷的“命令”,以表3部分內(nèi)容為例,必須先進(jìn)行通信(0x81),診斷儀器與無人機(jī)建立連接后才能進(jìn)行診斷。所有的診斷項(xiàng)目必須先發(fā)起診斷會(huì)話(0x10),涉及到控制參數(shù)調(diào)整的命令還需要經(jīng)過密鑰的驗(yàn)證方可進(jìn)行。若診斷儀建立連接后長時(shí)間無操作,必須持續(xù)地發(fā)送設(shè)備接入狀態(tài)(0x3E),否則無人機(jī)可以自行脫離連接。診斷的結(jié)果通過狀態(tài)(0x18)或標(biāo)識(0x21)兩種方式來讀取。
響應(yīng)代碼屬于診斷幀的數(shù)據(jù)字節(jié)部分,是無人機(jī)設(shè)備對診斷服務(wù)的回應(yīng),診斷服務(wù)響應(yīng)代碼如表4所示。響應(yīng)分為消極響應(yīng)和肯定響應(yīng)兩種。肯定響應(yīng)代碼為相應(yīng)的診斷服務(wù)標(biāo)識加上0x40(如對診斷設(shè)備接入的肯定響應(yīng)為0x7E,即0x3E+0x40),消極響應(yīng)目前分為4種情況。代碼0x78的含義比較復(fù)雜,可以指無人機(jī)設(shè)備沒有準(zhǔn)備好或者設(shè)備尚未完成其他項(xiàng)目的診斷,其他響應(yīng)代碼則按字面含義解釋。
表4 診斷服務(wù)響應(yīng)代碼
當(dāng)診斷儀通過狀態(tài)(0x18)或者標(biāo)識(0x21)方式來讀取診斷信息時(shí),無人機(jī)會(huì)向診斷儀返回診斷結(jié)果,也就是故障信息。故障信息是無人機(jī)向診斷儀返回的數(shù)據(jù)幀中緊挨在服務(wù)響應(yīng)代碼之后的數(shù)據(jù),缺省值為0x0表示無故障。如果存在故障則以表5所示代碼填充。
表5 故障信息表
利用德國VECTOR的CANoe軟件對該無人機(jī)總線控制系統(tǒng)進(jìn)行了仿真測試。使用軟件集成的CANdb數(shù)據(jù)庫工具,把在應(yīng)用層定義的參數(shù)引入到CANoe的開發(fā)環(huán)境中,CANoe規(guī)定每一個(gè)數(shù)據(jù)幀以消息的形式定義,而數(shù)據(jù)幀中的參數(shù)以信號的形式定義,節(jié)點(diǎn)上連接的設(shè)備則以環(huán)境變量的形式定義。圖2為虛擬仿真網(wǎng)絡(luò)節(jié)點(diǎn)拓?fù)鋱D。
圖2 虛擬仿真網(wǎng)絡(luò)節(jié)點(diǎn)拓?fù)鋱D
利用CAPL語言對虛擬節(jié)點(diǎn)進(jìn)行編程,模擬虛擬節(jié)點(diǎn)對飛控單元的響應(yīng)和故障模式,用于檢驗(yàn)整個(gè)協(xié)議的性能[9]。
飛行控制模塊軟件采用C語言編寫,為保證系統(tǒng)的實(shí)時(shí)性,采用時(shí)間片輪轉(zhuǎn)的方式,使飛行控制單元在宏觀上對各個(gè)舵面和動(dòng)力單元的輸入操作是并行處理的,同時(shí)把CAN報(bào)文的發(fā)送和接收放到中斷函數(shù)中進(jìn)行處理,飛行控制操作由按鍵模擬輸入。
NEC78K00893單片機(jī)的CAN模塊配置在數(shù)據(jù)手冊中有非常詳細(xì)的介紹,唯一要注意的是,即使未使用的報(bào)文緩沖也要初始化,即所謂的最小初始化[10]。飛行控制模塊在工作模式下的程序流程如圖3所示。
圖3 飛行控制模塊的程序流程
診斷時(shí)的流程圖與工作模式下的流程圖類似,區(qū)別在于飛行控制單元不會(huì)對接收超時(shí)采取措施,改由診斷儀來判斷飛行控制單元是否發(fā)送超時(shí)。
仿真時(shí)將飛行控制模塊與CANoe連接起來,通過按鍵來對飛行控制模塊進(jìn)行操作,同時(shí)監(jiān)測整個(gè)網(wǎng)絡(luò)的負(fù)載率和報(bào)文的發(fā)送及接收情況。
診斷時(shí),將CANoe與飛行控制模塊連接起來,通過CANoe虛擬一個(gè)診斷節(jié)點(diǎn),與飛控模塊進(jìn)行診斷會(huì)話,由于此時(shí)其他虛擬節(jié)點(diǎn)都設(shè)置為不起作用,因此虛擬診斷節(jié)點(diǎn)收到的是顯示主控制節(jié)點(diǎn)與所有節(jié)點(diǎn)都發(fā)生通信故障的信息。仿真結(jié)果截圖如圖4所示。
圖4 仿真結(jié)果截圖
由仿真結(jié)果可知,該網(wǎng)絡(luò)的峰值負(fù)載率在7.0%左右,平均負(fù)載率約為6.5%,報(bào)文傳輸延時(shí)小于±1 ms,即使增加網(wǎng)絡(luò)節(jié)點(diǎn)(更多任務(wù)負(fù)載)至網(wǎng)絡(luò),可預(yù)見的網(wǎng)絡(luò)負(fù)載率仍然在普遍認(rèn)為的30%范圍內(nèi),滿足飛行控制的需要;若增加一條冗余總線,只需按照協(xié)議規(guī)則安排ID分配,就可以起到備份的作用,提高控制系統(tǒng)的可靠性。
另外,從實(shí)際考慮,由于伺服機(jī)構(gòu)所接受的PWM信號周期一般為20 ms,在這段時(shí)間內(nèi),飛行器空中狀態(tài)的物理量變化也可近似為0,整個(gè)網(wǎng)絡(luò)若選擇更長一點(diǎn)的發(fā)送周期,不僅可保證伺服機(jī)構(gòu)能夠完整地輸出動(dòng)作,還可在一定程度上進(jìn)一步降低系統(tǒng)和網(wǎng)絡(luò)的負(fù)載,增加飛行器的空中滯留時(shí)間。
[1] 熊華鋼.CAN總線及其較高層網(wǎng)絡(luò)協(xié)議在航空航天上的可適用性探討[J].導(dǎo)彈與航天運(yùn)載技術(shù),2004,33(4):47 -49.
[2] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1999:61-82.
[3] 王毅峰,李令奇.基于CAN總線的分布式數(shù)據(jù)采集與控制系統(tǒng)[J].工業(yè)控制計(jì)算機(jī),2000(5):34-38.
[4] 付亮,李偉.CAN總線技術(shù)及其在現(xiàn)代汽車中的應(yīng)用[J].中國汽車制造,2006(7):23-26.
[5] 秦貴和,葛安林.汽車網(wǎng)絡(luò)技術(shù)[J].汽車工程,2008,25(2):1 -4.
[6] 歐陽琰,王貴槐.基于CAN總線的汽車儀表盤電控單元設(shè)計(jì)[J].武漢理工大學(xué)學(xué)報(bào):信息與管理工程版,2009,31(1):78 -80.
[7] 胡思德.汽車車載網(wǎng)絡(luò)(VAN/CAN/LIN)技術(shù)詳解[M].北京:機(jī)械工業(yè)出版社,2006:182-183.
[8] 何進(jìn)進(jìn),肖金生.基于CAN總線的汽車電子標(biāo)識系統(tǒng)[J].武漢理工大學(xué)學(xué)報(bào):信息與管理工程版,2007,29(1):15 -18.
[9] 王正山,顧耀林,戴月明.全自動(dòng)汽車安全性能檢測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].汽車工程,2003,20(3):279 -282.
[10] 田亮,喬弘.LIN總線協(xié)議分析[J].中國儀器儀表,2007,3(12):5-7.