文哲遠(yuǎn),陸宇平
(南京航空航天大學(xué)自動(dòng)化學(xué)院,南京210016)
自20世紀(jì)初美國(guó)的萊特兄弟研制出第一架飛機(jī)試飛成功以來(lái),飛行器的發(fā)展突飛猛進(jìn),不但有了各種各樣的外形,而且也飛得更高、更快、更靈活。即便如此,人類制造的飛行器仍然無(wú)法像鳥(niǎo)兒一樣根據(jù)不同的環(huán)境而靈活改變自身的飛行狀態(tài),在空中自由翱翔。由于現(xiàn)代飛行器普遍采用固定的氣動(dòng)布局,針對(duì)一種飛行條件而優(yōu)化設(shè)計(jì),或者是針對(duì)幾種飛行條件折衷設(shè)計(jì),所以無(wú)法在多種飛行條件下都達(dá)到優(yōu)化的氣動(dòng)性能。變體飛行器作為一種全新的概念,通過(guò)改變自身的外形,能夠在不同飛行條件下執(zhí)行多種飛行任務(wù)[1]。由于機(jī)翼是影響飛機(jī)性能的最重要部件,飛機(jī)的升力特性基本由機(jī)翼確定,因此對(duì)機(jī)翼的變形研究是變體飛行器的研究重點(diǎn)[2]。
采用分布式結(jié)構(gòu)的變體飛行器結(jié)構(gòu)重量輕,變形方式靈活,而且在部分驅(qū)動(dòng)器發(fā)生故障的情況下也能使飛機(jī)具有足夠的可靠性,故魯棒性強(qiáng)[3]。要實(shí)現(xiàn)變體飛行器的控制,需要建立兩層控制系統(tǒng)。位于內(nèi)層的變形控制系統(tǒng)用于控制變形機(jī)構(gòu),實(shí)現(xiàn)變形控制。位于外層的飛行控制系統(tǒng),用于控制飛行器的飛行狀態(tài),實(shí)現(xiàn)飛行控制[4]。
這里首先總結(jié)出分布式驅(qū)動(dòng)的變體飛行器仿真系統(tǒng)的功能需求:①翼型控制功能,需要根據(jù)不同的飛行環(huán)境來(lái)自動(dòng)選擇合適的翼型;②氣動(dòng)數(shù)據(jù)存取需求,由于在線計(jì)算不同翼型在不同飛行環(huán)境下的氣動(dòng)數(shù)據(jù)需要消耗不少時(shí)間,因此需要建立數(shù)據(jù)庫(kù)對(duì)氣動(dòng)數(shù)據(jù)進(jìn)行存儲(chǔ)與讀取;③主程序與MATLAB之間的通信,VC程序需要與MATLAB中的飛行控制程序同時(shí)運(yùn)行,之間有大量的數(shù)據(jù)傳輸;④與底層節(jié)點(diǎn)之間的通信,要將上位機(jī)的指令順利發(fā)送到各個(gè)節(jié)點(diǎn)實(shí)現(xiàn)翼型控制,并能接收各節(jié)點(diǎn)之間的回饋數(shù)據(jù);⑤變形翼形顯示功能,為使用者實(shí)時(shí)顯示變形效果。
根據(jù)以上要求,使用面向?qū)ο蟮能浖_(kāi)發(fā)技術(shù)開(kāi)發(fā)出一套擴(kuò)展性強(qiáng)、易于使用的分布式驅(qū)動(dòng)的變體飛行器仿真系統(tǒng)。重點(diǎn)研究了如何從軟件方面搭建分布式驅(qū)動(dòng)的變形翼系統(tǒng)并進(jìn)行變體飛行器的飛行仿真實(shí)驗(yàn)。
變形機(jī)構(gòu)的設(shè)計(jì)需要達(dá)到兩個(gè)方面的目標(biāo),一個(gè)是翼型控制,主要影響飛機(jī)氣動(dòng)參數(shù),使飛機(jī)能夠在不同的飛行情況下始終具有優(yōu)化的氣動(dòng)參數(shù);另一個(gè)是機(jī)翼后端變形控制,使機(jī)翼后緣能夠具有光滑的弧面形狀,主要用于控制飛機(jī)姿態(tài),用以替換現(xiàn)在飛機(jī)上廣泛采用的舵面。
如圖1所示,用于翼型控制的變形機(jī)構(gòu)由伺服電機(jī)分布式驅(qū)動(dòng)的20個(gè)智能節(jié)點(diǎn)組成的作動(dòng)器數(shù)組。作動(dòng)器安裝在一塊輕質(zhì)薄板(可以將其看成一根梁)上,用以模擬控制機(jī)翼翼型中段部分的變化。翼型前后兩端部分采取另一套機(jī)械機(jī)構(gòu)來(lái)控制其前緣半徑和后緣夾角以及后緣光滑連續(xù)的彎曲變形。
圖1 變形翼系統(tǒng)示意圖
智能節(jié)點(diǎn)之間用CAN總線連接組成網(wǎng)絡(luò)結(jié)構(gòu)。這樣可以減少機(jī)翼中的布線,大大節(jié)省機(jī)翼內(nèi)的空間,使飛機(jī)能攜帶更多燃油,并減輕了線纜重量,從而減輕了飛機(jī)的重量[5]。
飛機(jī)的翼型是由中央計(jì)算機(jī)根據(jù)傳感器回饋回來(lái)的資料計(jì)算出來(lái)的,并由底端的ARM來(lái)對(duì)單個(gè)電機(jī)進(jìn)行控制,同時(shí)用協(xié)同控制算法對(duì)多個(gè)電機(jī)的協(xié)調(diào)進(jìn)行控制。中央計(jì)算機(jī)在實(shí)驗(yàn)情況下由PC機(jī)代替,并需要在PC機(jī)上編寫上位機(jī)程序,實(shí)現(xiàn)半物理仿真系統(tǒng)的搭建。
變體飛行器仿真平臺(tái)可分為四個(gè)部分:MFC框架、翼型控制模塊、數(shù)據(jù)庫(kù)模塊、通信模塊。
選擇MFC(微軟基礎(chǔ)類庫(kù))作為上位機(jī)應(yīng)用程序的基本框架。在此框架下,上位機(jī)程序包含了多個(gè)模塊的功能:對(duì)不同環(huán)境下翼型的選擇、與底層節(jié)點(diǎn)通信、存儲(chǔ)和查詢氣動(dòng)數(shù)據(jù)、與MATLAB程序通信、顯示變形效果等。由于要實(shí)現(xiàn)飛機(jī)機(jī)翼變形的控制指令的發(fā)送以使機(jī)翼變成理想的優(yōu)化形狀,上位機(jī)需要發(fā)送各智能節(jié)點(diǎn)的位置指令;為了使各智能節(jié)點(diǎn)協(xié)同變形,需要發(fā)送同步指令。同時(shí)機(jī)翼上各節(jié)點(diǎn)處傳感器周期性回饋給上位機(jī)的位置信息也需要在上位機(jī)上顯示出來(lái)。
在MATLAB程序中,設(shè)計(jì)人員可以通過(guò)對(duì)各種飛行控制算法的仿真來(lái)驗(yàn)證變體飛行器飛行控制過(guò)程中的穩(wěn)態(tài)性能和動(dòng)態(tài)性能。此處由于機(jī)翼形狀的變化導(dǎo)致飛機(jī)氣動(dòng)參數(shù)的變化,所以飛機(jī)模型設(shè)定為變參數(shù)模型。
不同飛行環(huán)境和狀態(tài)下的模型具有不同的飛機(jī)模型參數(shù),這些參數(shù)通過(guò)離線計(jì)算存入數(shù)據(jù)庫(kù)中,并在仿真過(guò)程中從數(shù)據(jù)庫(kù)讀取出來(lái)。
作為一個(gè)平臺(tái),需要為MATLAB程序的仿真提供飛機(jī)模型的實(shí)時(shí)氣動(dòng)參數(shù),并能將環(huán)境參數(shù)從VC程序中傳遞到MATLAB程序中。
在飛機(jī)起飛和降落階段、跨音速飛行階段、超音速飛行階段,需要不同的翼型彎度和厚度以達(dá)到各階段的氣動(dòng)特性最優(yōu)化[6]。
這就需要作為飛機(jī)控制中樞的機(jī)載計(jì)算機(jī)根據(jù)當(dāng)前飛行環(huán)境和飛行狀況來(lái)決定目標(biāo)翼型。
在翼型控制模塊中,綜合飛機(jī)整體氣動(dòng)外形,根據(jù)當(dāng)前各傳感器回饋回來(lái)的飛行高度、馬赫數(shù)、迎角等飛行環(huán)境和狀態(tài)值來(lái)判定目標(biāo)翼型。
由于在該仿真平臺(tái)中無(wú)法由傳感器得到當(dāng)前飛行環(huán)境,故采取人工輸入環(huán)境參數(shù)值的方式對(duì)當(dāng)前的飛行環(huán)境進(jìn)行設(shè)置。在人機(jī)界面中設(shè)置對(duì)話框來(lái)輸入飛行環(huán)境變量,用于翼型控制模塊對(duì)目標(biāo)翼型進(jìn)行判定。
翼型控制模塊根據(jù)人工設(shè)置的飛行環(huán)境參數(shù)來(lái)判斷最適合該飛行環(huán)境下的目標(biāo)翼型。得到目標(biāo)翼型后再與飛行環(huán)境綜合,計(jì)算當(dāng)前的各項(xiàng)氣動(dòng)參數(shù)以傳遞給MATLAB的變參數(shù)模型,用于飛行控制仿真。
在氣動(dòng)數(shù)據(jù)庫(kù)中存放有各翼型的幾何相對(duì)位置,翼型控制模塊根據(jù)翼型名從氣動(dòng)數(shù)據(jù)庫(kù)中搜索到翼型的幾何相對(duì)位置后,轉(zhuǎn)化成物理模型部分的目標(biāo)絕對(duì)位置。通過(guò)調(diào)用與底層節(jié)點(diǎn)之間的接口函數(shù),實(shí)現(xiàn)對(duì)底層節(jié)點(diǎn)的控制。
在當(dāng)前的氣動(dòng)參數(shù)計(jì)算方法中,無(wú)論是CFD方法還是有限元分析方法都需要消耗大量的時(shí)間,然而機(jī)翼的變形過(guò)程是在較短的時(shí)間內(nèi)完成的。由于當(dāng)前的氣動(dòng)計(jì)算方法無(wú)法滿足實(shí)時(shí)性的要求,又因?yàn)闅鈩?dòng)參數(shù)的計(jì)算本身就存在一定的偏差,所以采用查詢方法來(lái)快速得到近似的飛機(jī)模型氣動(dòng)參數(shù)。
變體飛行器的半物理仿真平臺(tái)采用關(guān)系數(shù)據(jù)庫(kù)SQL Server來(lái)實(shí)現(xiàn)簡(jiǎn)易的數(shù)據(jù)庫(kù)功能。鑒于查詢時(shí)間相較于運(yùn)算時(shí)間較短的優(yōu)勢(shì),最終決定選用數(shù)據(jù)庫(kù)模塊來(lái)獲得實(shí)時(shí)的近似氣動(dòng)數(shù)據(jù)。
需要保存的數(shù)據(jù)有:氣動(dòng)分析信息,氣動(dòng)導(dǎo)數(shù)信息和翼型相對(duì)坐標(biāo)。對(duì)數(shù)據(jù)庫(kù)的操作有:保存、修改、插入、查詢和刪除翼型氣動(dòng)信息。
在SQL Server數(shù)據(jù)庫(kù)中編寫了變體飛行器仿真平臺(tái)的三張表,用于存儲(chǔ)不同飛行環(huán)境變量下的翼型和氣動(dòng)數(shù)據(jù),它們的關(guān)系如圖2所示。其中Aero-DeriID和AirfoilName分別為表AeroDeri和表Airfoil的主鍵,表AeroAnal(氣動(dòng)分析表)具有外鍵Aero-DeriID和AerofoilID,分別引用表AeroDeri(氣動(dòng)導(dǎo)數(shù)表)和表Airfoil(翼型表)。
圖2 氣動(dòng)數(shù)據(jù)庫(kù)關(guān)系圖
表Aerofoil中的數(shù)據(jù)相對(duì)坐標(biāo)是以弦長(zhǎng)為1的機(jī)翼剖面幾何位置數(shù)據(jù)。由于翼型庫(kù)中的幾何位置數(shù)據(jù)不一定含有所需點(diǎn)的位置數(shù)據(jù),需要計(jì)算出所需點(diǎn)的位置數(shù)據(jù),此處選用自然三次樣條插值算法計(jì)算出所需數(shù)據(jù)。翼型控制模塊根據(jù)飛行環(huán)境決策出實(shí)時(shí)翼型后,從該表中查詢到幾何位置參數(shù),并將其轉(zhuǎn)化成絕對(duì)位置數(shù)據(jù)供翼型控制模塊發(fā)送給底端節(jié)點(diǎn)。由于所搭建的平臺(tái)中采用查詢氣動(dòng)數(shù)據(jù)庫(kù)的方式得到飛行器變參數(shù)模型的各項(xiàng)實(shí)時(shí)氣動(dòng)導(dǎo)數(shù),需要先使用其它氣動(dòng)導(dǎo)數(shù)計(jì)算軟件計(jì)算出不同飛行環(huán)境下的氣動(dòng)導(dǎo)數(shù)。此處選用DATCOM軟件對(duì)氣動(dòng)導(dǎo)數(shù)進(jìn)行計(jì)算,并將計(jì)算好的氣動(dòng)導(dǎo)數(shù)連同飛行環(huán)境數(shù)據(jù)一同錄入數(shù)據(jù)庫(kù)。因?yàn)樵谔囟ǖ娘w行環(huán)境下選用特定的翼型,所以數(shù)據(jù)庫(kù)中并不需要存儲(chǔ)每種翼型在各種飛行環(huán)境下的氣動(dòng)導(dǎo)數(shù),這樣大大減少了數(shù)據(jù)庫(kù)中的條目從而減少了數(shù)據(jù)庫(kù)所占空間和查詢時(shí)間。該數(shù)據(jù)庫(kù)在使用過(guò)程中不需要經(jīng)常進(jìn)行插入、更新、刪除記錄操作,所以可以考慮為其創(chuàng)建索引。為數(shù)據(jù)庫(kù)創(chuàng)建復(fù)合聚集索引,可以使數(shù)據(jù)庫(kù)輸入數(shù)據(jù)時(shí)自行為輸入的數(shù)據(jù)進(jìn)行排序,同時(shí)索引可以加速數(shù)據(jù)的檢索。
通信模塊包括平臺(tái)與MATLAB程序之間的通信和與CAN總線之間的通信兩個(gè)部分。
4.3.1 與MATLAB程序的通信
仿真系統(tǒng)是一個(gè)VC程序與MATLAB程序同時(shí)運(yùn)行的系統(tǒng),VC程序作為一個(gè)平臺(tái),需要與MATLAB程序進(jìn)行通信,為MATLAB程序中的飛機(jī)模型提供實(shí)時(shí)變化的模型參數(shù),并將給定的環(huán)境參數(shù)實(shí)時(shí)導(dǎo)入MATLAB中。MATLAB程序利用環(huán)境參數(shù)和變參數(shù)模型,可以實(shí)時(shí)進(jìn)行飛行仿真,得到實(shí)時(shí)飛行狀態(tài),并能判斷變體過(guò)程中飛行器的穩(wěn)定性。為此,在上位機(jī)軟件平臺(tái)中建立了兩個(gè)線程分別用于發(fā)送與接收數(shù)據(jù),并利用臨界區(qū)來(lái)進(jìn)行線程同步。平臺(tái)利用變參數(shù)模型得到的仿真結(jié)果與常值參數(shù)模型下的飛行仿真結(jié)果相比較,可以看到變體飛行器對(duì)飛機(jī)氣動(dòng)性能的改善。
4.3.2 與CAN總線的通信
由于機(jī)翼上的作動(dòng)器數(shù)量眾多,需要設(shè)計(jì)相關(guān)的協(xié)議與CAN之間進(jìn)行通信。CAN總線之間通信的最終目標(biāo)是利用CAN總線的優(yōu)勢(shì)使在通信線路上的數(shù)據(jù)包盡可能的少。這就需要盡可能的利用好CAN總線數(shù)據(jù)包中的數(shù)據(jù)段使其包含多個(gè)結(jié)點(diǎn)的數(shù)據(jù),使一個(gè)數(shù)據(jù)包可以為幾個(gè)智能結(jié)點(diǎn)所用。
表1 CAN標(biāo)準(zhǔn)數(shù)據(jù)幀格式定義
CAN總線協(xié)議僅定義了數(shù)據(jù)鏈路層和部分物理層,需要為其構(gòu)建應(yīng)用層協(xié)議。CAN2.0A協(xié)議規(guī)定標(biāo)準(zhǔn)幀ID為11位,其后還包括1位遠(yuǎn)程發(fā)送請(qǐng)求位RTR(置0),1位標(biāo)識(shí)符擴(kuò)展位 IDE(置0),4位數(shù)據(jù)長(zhǎng)度段和數(shù)據(jù)段。
CAN報(bào)文為短幀報(bào)文,11位標(biāo)準(zhǔn)幀ID被分成了三段:高3位為保留位,接下來(lái)兩位為模式位,低6位為編號(hào)位。數(shù)據(jù)段中的DATA1和DATA2均為雙字?jǐn)?shù)據(jù)類型,最多可以傳送8個(gè)字節(jié)的數(shù)據(jù)。根據(jù)模式的不同,報(bào)文中的數(shù)據(jù)段包含的數(shù)據(jù)長(zhǎng)度也不相同。在模式00中,報(bào)文的數(shù)據(jù)段主要用于傳送上位機(jī)發(fā)送給每個(gè)智能節(jié)點(diǎn)的目標(biāo)位置,此時(shí)需盡量包含多個(gè)節(jié)點(diǎn)的信息。為此將20個(gè)智能節(jié)點(diǎn)分為5組,每組4個(gè)節(jié)點(diǎn)。這樣每個(gè)節(jié)點(diǎn)分配2個(gè)字節(jié)的數(shù)據(jù)長(zhǎng)度,4個(gè)節(jié)點(diǎn)就充分利用了短幀報(bào)文的數(shù)據(jù)段。此外,幀ID為0x00表示同步幀。在模式01中,發(fā)送的是目標(biāo)位置與當(dāng)前位置的差值以及電機(jī)的當(dāng)前速度,為位置和速度信息各分配4個(gè)字節(jié)的數(shù)據(jù)長(zhǎng)度。在模式10中,與模式00對(duì)應(yīng),每個(gè)節(jié)點(diǎn)分配2個(gè)字節(jié)的數(shù)據(jù)長(zhǎng)度用于存儲(chǔ)位置信息分配4個(gè)字節(jié)用于存儲(chǔ)速度信息,由于發(fā)送端是智能節(jié)點(diǎn),所以數(shù)據(jù)段包含6個(gè)字節(jié)的數(shù)據(jù)。在模式11中,數(shù)據(jù)段不攜帶任何數(shù)據(jù),該模式用于在系統(tǒng)初始階段確定智能結(jié)點(diǎn)是否就緒。
基于MFC的人機(jī)界面(如圖3所示)實(shí)現(xiàn)使用者與仿真平臺(tái)之間的交互,采用對(duì)話框的模式。在對(duì)話框中設(shè)置當(dāng)前的飛行高度,馬赫數(shù)以及仰角等飛行環(huán)境參數(shù)和飛行狀態(tài)參數(shù),軟件會(huì)自動(dòng)選擇合適的翼型并計(jì)算各節(jié)點(diǎn)的位置信息,通過(guò)CAN總線發(fā)送給各節(jié)點(diǎn)。智能節(jié)點(diǎn)協(xié)同變形的同時(shí)周期性的將當(dāng)前位置回饋給上位機(jī),上位機(jī)實(shí)時(shí)顯示變形效果。同時(shí),根據(jù)當(dāng)前的翼型和飛行環(huán)境,查詢氣動(dòng)數(shù)據(jù)庫(kù)獲得各項(xiàng)氣動(dòng)參數(shù),通過(guò)與MATLAB間的通信接口傳輸給飛行控制程序,實(shí)現(xiàn)變參數(shù)模型下的飛行仿真。
根據(jù)分布式驅(qū)動(dòng)的變體飛行器仿真平臺(tái)的功能需求,搭建了為滿足需求而開(kāi)發(fā)的四個(gè)重要功能模塊。在由20個(gè)智能體所組成的分布式驅(qū)動(dòng)變形系統(tǒng)的基礎(chǔ)上,建立了底層硬件系統(tǒng)與飛行仿真軟件之間的連接,為不同的飛行控制算法提供了變形翼情況下的軟件支撐。
圖3 機(jī)載計(jì)算機(jī)監(jiān)控接口
[1]桑為民,陳年旭.變體飛行器的研究進(jìn)展及其關(guān)鍵技術(shù)[J].飛行力學(xué),2009,27(6):5 -8.
[2]方寶瑞.飛機(jī)啟動(dòng)布局設(shè)計(jì)[M].北京:航空工業(yè)出版社,1997.
[3]吳俊,陸宇平,何真.基于微系統(tǒng)陣列的變形翼控制研究[J].傳感器與微系統(tǒng),2009,28(2):38 -41.
[4]陸宇平,何真.變體飛行器控制系統(tǒng)綜述[J].航空學(xué)報(bào),2009,30(20):1 -6.
[5]陽(yáng)憲惠.現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用[M].北京:清華大學(xué)出版社,1999.
[6]酈正能,等.飛機(jī)部件與系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2006.