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