單琦
摘? 要: 為了解決航空機(jī)務(wù)與異地專(zhuān)家關(guān)于維護(hù)信息的溝通問(wèn)題,基于TCP協(xié)議,利用Unity引擎、SOLIDWORKS及3ds Max等工具,開(kāi)發(fā)出可用于A(yíng)ndroid\Windows平臺(tái)的A320起落架遠(yuǎn)程維修輔助系統(tǒng),詳細(xì)描述了系統(tǒng)各項(xiàng)功能、關(guān)鍵技術(shù)及開(kāi)發(fā)流程。最后以一個(gè)典型案例介紹了系統(tǒng)如何對(duì)起落裝置的維護(hù)起到輔助作用。
關(guān)鍵詞: 遠(yuǎn)程維修; TCP協(xié)議; 跨平臺(tái)通信; 航空維修
中圖分類(lèi)號(hào):TP399? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ?文章編號(hào):1006-8228(2019)05-46-04
Abstract: In order to solve the problem of communication of maintenance information between maintenance personnel and other experts, an A320 landing gear remote maintenance assistant system for Android and/or Windows based on TCP protocol is developed with tools such as Unity engine, SOLIDWORKS and 3ds Max. The functions, key technologies and development process of the system are described in detail. Finally, a typical case is given to illustrate the system how to play an auxiliary role in the maintenance of landing gear.
Key words: remote maintenance; TCP protocol; cross-platform communication; aviation maintenance
0 引言
隨著民用航空器的發(fā)展,航空器械的集成度、復(fù)雜度越來(lái)越高,所以擁有豐富一線(xiàn)維修經(jīng)驗(yàn)的航空機(jī)務(wù)人員越來(lái)越成為稀缺的優(yōu)質(zhì)資源。我國(guó)民航業(yè)快速擴(kuò)張,優(yōu)秀機(jī)務(wù)人員的培訓(xùn)速度不可避免地落后于新增航線(xiàn)的擴(kuò)張速度。在一些關(guān)鍵維修業(yè)務(wù)上,欠缺經(jīng)驗(yàn)的新手機(jī)務(wù)人員需要技術(shù)專(zhuān)家的指導(dǎo)與支持,而現(xiàn)有的電子工卡系統(tǒng)和一般通訊方式無(wú)法提供直觀(guān)明了的維修操作步驟,難以滿(mǎn)足工況需要。因此,遠(yuǎn)程維修的概念在航空器維修領(lǐng)域的提出,為快速提升維修人員的技能熟練度與排故障能力,提供了新的思路。
遠(yuǎn)程維修是一種基于無(wú)線(xiàn)通信和移動(dòng)終端的新型維修支援方式,具有高便攜性、高即時(shí)性、可擴(kuò)展性等特點(diǎn)。近年來(lái),許多研究機(jī)構(gòu)將網(wǎng)路通信技術(shù)引入航空維修工程之中。汪誠(chéng)等認(rèn)為跨地域、多領(lǐng)域?qū)<业暮献髑蠼鈫?wèn)題,是網(wǎng)絡(luò)故障診斷和維修中所面臨的一個(gè)重要課題[1],且將診斷結(jié)果、維修方案等通過(guò)網(wǎng)絡(luò)反饋給外場(chǎng)維修人員,能夠幫助其理解診斷過(guò)程,積累經(jīng)驗(yàn)[2]。宋維嘉列舉了航空維修數(shù)據(jù)遠(yuǎn)程傳輸?shù)南拗婆c瓶頸[3];耿汝光提出了使用虛擬專(zhuān)用網(wǎng)構(gòu)建航空維修服務(wù)的數(shù)據(jù)通道的設(shè)想[4]。
空客A320是一款在我國(guó)各大航空公司都有引進(jìn)的機(jī)型,保有數(shù)量較大,因此決定以該機(jī)型的起落裝置作為技術(shù)驗(yàn)證方案的對(duì)象。本文將網(wǎng)絡(luò)通信技術(shù)應(yīng)用于民航維修領(lǐng)域,搭建了一個(gè)遠(yuǎn)程維修輔助系統(tǒng),目的是讓身處一線(xiàn)的機(jī)務(wù)和異地的技術(shù)專(zhuān)家能進(jìn)行高效的溝通,并獲取正確、直觀(guān)、易懂的維修步驟指示,以提高維修勤務(wù)與故障排除的效率。
1 系統(tǒng)方案
A320起落架遠(yuǎn)程維修輔助系統(tǒng)是一個(gè)跨平臺(tái)系統(tǒng),按照服務(wù)對(duì)象不同分為3個(gè)獨(dú)立的部分:一線(xiàn)維修人員使用的Android端軟件、異地工程師與技術(shù)支持人員使用的Windows客戶(hù)端以及架設(shè)在云服務(wù)器上的通信處理伺服程序。三者的關(guān)系及主要職能概述如圖1所示。
1.1 系統(tǒng)功能
運(yùn)行在A(yíng)ndroid系統(tǒng)上的機(jī)務(wù)端軟件一般安裝在智能手機(jī)、平板電腦或其他合適的移動(dòng)設(shè)備上,其擁有在線(xiàn)和離線(xiàn)兩種工作狀態(tài),在線(xiàn)狀態(tài)下有電子工卡瀏覽、維修手冊(cè)查看、起落架零部件拆解演示和遠(yuǎn)程呼叫工程師支持四個(gè)主要功能,離線(xiàn)狀態(tài)下無(wú)法獲取當(dāng)日工卡及與工程師實(shí)時(shí)通訊,但仍可使用其他功能。
工程師端軟件安裝在Windows計(jì)算機(jī)上,必須在登陸后保持在線(xiàn)狀態(tài)才可以使用,有查詢(xún)?cè)诰€(xiàn)機(jī)務(wù)名單、分發(fā)電子工卡、瀏覽維修手冊(cè)、接收機(jī)務(wù)端呼叫并提供技術(shù)支持等功能,比機(jī)務(wù)端功能更強(qiáng),權(quán)限更高。
運(yùn)行在云計(jì)算平臺(tái)的通信伺服程序用于實(shí)現(xiàn)機(jī)務(wù)端和工程師端的通信,由于在遠(yuǎn)程維修過(guò)程中,系統(tǒng)使用者之間有大量較為機(jī)密的信息通過(guò)網(wǎng)絡(luò)傳輸,如結(jié)構(gòu)維修記錄、零部件故障率、機(jī)務(wù)人員工作情況等,云服務(wù)器需要確保以上信息順利傳輸同時(shí)避免出現(xiàn)非法訪(fǎng)問(wèn)、數(shù)據(jù)泄露的可能。
1.2 三維模型制作
本文使用SOLIDWORKS軟件建立三維模型,完成零件形狀的建模后導(dǎo)出為STEP格式文件,并導(dǎo)入3ds Max軟件進(jìn)行零件表面的材質(zhì)編輯與貼圖渲染等工作,最終以FBX格式文件導(dǎo)出作為遠(yuǎn)程維修輔助系統(tǒng)的預(yù)置模型文件。
1.3 軟件開(kāi)發(fā)
遠(yuǎn)程維修輔助系統(tǒng)的交互式軟件界面主要采用Unity引擎進(jìn)行開(kāi)發(fā)。我們選用該引擎的主要理由是其具有優(yōu)秀的跨平臺(tái)特性,使得開(kāi)發(fā)人員只需要完成一次功能代碼的編寫(xiě),就能幾乎無(wú)修改地發(fā)布到Unity支持的各個(gè)平臺(tái)上運(yùn)行,滿(mǎn)足了本系統(tǒng)的多平臺(tái)開(kāi)發(fā)需求。
Unity引擎支持多種語(yǔ)言編寫(xiě)邏輯腳本,本文選用c#語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,其優(yōu)點(diǎn)在于Windows上的Visual Studio集成開(kāi)發(fā)環(huán)境功能強(qiáng)大,對(duì)c#特性支持完備,且能與Unity進(jìn)行交互調(diào)試,比引擎自帶的Mono編輯器擁有更多功能。
主要開(kāi)發(fā)流程見(jiàn)圖2所示,在系統(tǒng)開(kāi)發(fā)中的首要任務(wù)是實(shí)現(xiàn)功能模塊的分別建立。本文借助于Unity中場(chǎng)景(Scene)的概念,將不同的功能模塊放置在不同的場(chǎng)景中,彼此相互獨(dú)立而又能通過(guò)場(chǎng)景管理器(Scene Manager)進(jìn)行切換,以實(shí)現(xiàn)各項(xiàng)功能的相互調(diào)用。在所有場(chǎng)景建完畢立后,本文使用引擎內(nèi)置的UI編輯器分別為Android和Windows上的兩個(gè)終端程序制作了各個(gè)場(chǎng)景的交互界面。
完成了功能分類(lèi)和UI設(shè)計(jì)的工作后,主要工作集中在三維模型的導(dǎo)入和功能邏輯代碼的編寫(xiě)上。在三維模型制作階段完成的FBX格式的模型可以便捷且無(wú)損失地導(dǎo)入U(xiǎn)nity中。而借助于Unity的對(duì)象(GameObject)組件系統(tǒng),原有需要數(shù)百上千行代碼才能實(shí)現(xiàn)邏輯功能可以被拆散為許多獨(dú)立的代碼腳本,通過(guò)掛載組件的方式使腳本生效,最終實(shí)現(xiàn)設(shè)計(jì)中的邏輯功能。
2 關(guān)鍵技術(shù)介紹
2.1 底層通訊架構(gòu)
由于本系統(tǒng)涉及的通訊必須保證可靠的連接,由于現(xiàn)有無(wú)線(xiàn)通信方式(Wi-Fi或蜂窩網(wǎng)絡(luò))所支持的TCP協(xié)議具有傳輸可靠、遺漏重發(fā)的特點(diǎn)[5],因此將其作為主要通訊協(xié)議是最佳的選擇。軟件的基本架構(gòu)為Client/Server模式,即典型的客戶(hù)端-服務(wù)器模式,由C#語(yǔ)言實(shí)現(xiàn)編碼,方便集成到Unity引擎內(nèi)提供通訊功能。由于需要網(wǎng)絡(luò)通信的內(nèi)容大多為指令或者文字字符串,所以通信的數(shù)據(jù)量較小,對(duì)即時(shí)性的要求不高,因此本文選用異步socket編程[6]實(shí)現(xiàn)本系統(tǒng)的底層通訊架構(gòu)完全滿(mǎn)足系統(tǒng)需求。
在具體編程方面,本系統(tǒng)引用了.NET框架中的System.Net.Sockets命名空間,運(yùn)用TcpCient類(lèi)和TcpListener類(lèi)及NetworkStream網(wǎng)絡(luò)數(shù)據(jù)流構(gòu)建了整個(gè)底層網(wǎng)絡(luò)通訊代碼。底層通信模塊中的客戶(hù)端(Client)將指令和數(shù)據(jù)以字符串的形式通過(guò)網(wǎng)絡(luò)傳遞給服務(wù)器(Server),服務(wù)器收到字符串后加以解析,并按照預(yù)先制定好的規(guī)則向另一個(gè)客戶(hù)端發(fā)送命令參數(shù),從而完成了兩個(gè)客戶(hù)端之間的一次通信。在本系統(tǒng)的通訊架構(gòu)中,無(wú)論是機(jī)務(wù)端還是工程師端的軟件,均視作通信模型中的客戶(hù)端(Client)。二者不能直接通訊,必須借助云端的服務(wù)器(Server)進(jìn)行消息的傳遞轉(zhuǎn)發(fā)。
2.2 交互通信的實(shí)現(xiàn)
無(wú)論是安裝在A(yíng)ndroid設(shè)備上的機(jī)務(wù)端軟件,還是安裝在Windows計(jì)算機(jī)上的工程師系統(tǒng),系統(tǒng)的兩個(gè)終端設(shè)備要實(shí)現(xiàn)相互通訊,必須其中一方擁有相對(duì)固定的公網(wǎng)IP。這一要求在當(dāng)今互聯(lián)網(wǎng)大環(huán)境以IPv4協(xié)議為主導(dǎo)致IP地址稀缺的情況下難以被滿(mǎn)足[7],因此需要額外引入一臺(tái)或多臺(tái)擁有公網(wǎng)IP的服務(wù)器來(lái)提供消息處理和轉(zhuǎn)發(fā)的功能。本文租用了阿里云服務(wù)器來(lái)承載云端伺服程序,云計(jì)算服務(wù)器和本系統(tǒng)的其他終端的指令流和信息流如圖3所示。
2.3 維修步驟可視化
本系統(tǒng)的最大特點(diǎn)就是能以三維模型運(yùn)動(dòng)的形式為一線(xiàn)機(jī)務(wù)提供準(zhǔn)確、直觀(guān)的維修維護(hù)步驟,包括零部件拆裝的順序、說(shuō)明、注意事項(xiàng)及推薦使用的工具型號(hào)。為了實(shí)現(xiàn)這一維修可視化的功能,本文使用了Unity引擎所提供Transform類(lèi)的幾個(gè)方法和屬性[8]。
⑴ Translate方法:使物體沿XYZ三軸進(jìn)行平移運(yùn)動(dòng),主要用于零部件模型的平移。
⑵ Rotate方法:使物體繞XYZ三軸進(jìn)行旋轉(zhuǎn)運(yùn)動(dòng),主要用于零部件模型的旋轉(zhuǎn)。
⑶ Scale屬性:通過(guò)改變其數(shù)值實(shí)現(xiàn)對(duì)物體的縮放,主要用于零部件的展示與強(qiáng)調(diào)。
3 系統(tǒng)展示
3.1 電子工卡查看
機(jī)務(wù)使用賬號(hào)和密碼從平板電腦登錄本系統(tǒng),進(jìn)入電子工卡瀏覽模塊,下載并查看當(dāng)日工卡。電子工卡查看界面如圖4所示,當(dāng)機(jī)務(wù)完成任務(wù)卡上的某項(xiàng)操作后,代表該操作的標(biāo)簽將會(huì)改變顏色,作為工作進(jìn)度的一種參考提示。查看界面的左側(cè)實(shí)時(shí)加載操作步驟中相關(guān)三維零件的拆裝輔助動(dòng)畫(huà),以幫助新手機(jī)務(wù)熟悉操作。
3.2 機(jī)務(wù)與工程師的通信
在對(duì)前起落架的目視檢查中,一名新手機(jī)務(wù)發(fā)現(xiàn)了前起落架的異常狀況:前起落架在拖拽的過(guò)程中發(fā)出了較大的摩擦噪聲。由于缺少故障排除的經(jīng)驗(yàn),該機(jī)務(wù)選擇使用本系統(tǒng)的通信功能,立即呼叫在線(xiàn)的維修工程師請(qǐng)求技術(shù)支持,通信功能界面如圖5所示。他首先在通信準(zhǔn)備界面的左側(cè)的故障部件菜單中選擇了“NOSE GEAR”,界面右上方隨之出現(xiàn)了前起落架的三維模型。他可以通過(guò)縮放旋轉(zhuǎn)與點(diǎn)擊操作從三維模型中選中出現(xiàn)故障的部件,也可使用右上角切換按鍵,將三維零件模型切換成更為清晰明了的文字選項(xiàng)進(jìn)行選擇操作。隨后該機(jī)務(wù)通過(guò)下方的文本框輸入一些簡(jiǎn)單的故障描述,即可通過(guò)發(fā)送按鈕將故障信息快速傳遞給他所呼叫的工程師。
工程師接受機(jī)務(wù)的呼叫后,其工作界面左上側(cè)出現(xiàn)了相關(guān)的TSM與AMM手冊(cè)超鏈接,單擊這些鏈接就會(huì)加載相關(guān)的手冊(cè)內(nèi)容到右側(cè)的文字顯示區(qū),供工程師查閱。界面的右下側(cè)則會(huì)加載相關(guān)故障部件的三維模型,方便參考。相關(guān)工作界面如圖6所示。
工程師制定完排故方案后,可通過(guò)系統(tǒng)提供的選項(xiàng)生成排故指令,并以追加工卡的形式發(fā)送到機(jī)務(wù)端,機(jī)務(wù)接收該排故工卡后,可通過(guò)3.1節(jié)中的方式,在本系統(tǒng)提供的步驟指示和相關(guān)三維零件模型拆裝動(dòng)畫(huà)的輔助下,順利完成排故過(guò)程。
4 結(jié)論
本文基于TCP協(xié)議設(shè)計(jì)了A320起落架的遠(yuǎn)程維修輔助系統(tǒng),為一線(xiàn)機(jī)務(wù)與異地專(zhuān)家提供了高效溝通的解決方案,充分利用了Unity引擎強(qiáng)大的跨平臺(tái)特性和友好交互性,彌補(bǔ)了現(xiàn)有電子工卡系統(tǒng)不能提供形象維修步驟的缺陷。由于本系統(tǒng)涉及較多的飛機(jī)零部件拆裝過(guò)程與維護(hù)步驟,因此以拓展系統(tǒng)適用零部件或機(jī)型為目的的二次開(kāi)發(fā)周期較長(zhǎng),工作量較大。
本系統(tǒng)是遠(yuǎn)程維修這一概念在民航維修領(lǐng)域的一種探索實(shí)踐,基于互聯(lián)網(wǎng)通信的遠(yuǎn)程輔助維修具有迅速提高機(jī)務(wù)操作熟練度、降低維修專(zhuān)家人力成本等優(yōu)點(diǎn),互聯(lián)網(wǎng)技術(shù)與維修可視化的結(jié)合將是未來(lái)民航維修的一種發(fā)展趨勢(shì)。
參考文獻(xiàn)(References):
[1] 汪誠(chéng),李應(yīng)紅,張恒喜.航空發(fā)動(dòng)機(jī)遠(yuǎn)程智能故障診斷與維修[J].裝備指揮技術(shù)學(xué)院學(xué)報(bào),2003.14(3):42-45
[2] 汪誠(chéng),李應(yīng)紅,張恒喜.基于CBR技術(shù)的航空遠(yuǎn)程故障診斷和維修體系[J].航空維修與工程,2004.2:53-55
[3] 宋維嘉.航空維修數(shù)據(jù)的遠(yuǎn)程傳輸[J].航空維修與工程,2008.3:69-71
[4] 耿汝光.網(wǎng)絡(luò)環(huán)境下航空遠(yuǎn)程維修服務(wù)的發(fā)展和應(yīng)用[J].航空維修與工程,2009.5:44-45
[5] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].電子工業(yè)出版社,2017.
[6] 馬駿.C#網(wǎng)絡(luò)應(yīng)用高級(jí)編程[M].人民郵電出版社,2006.
[7] 黃曉華.物聯(lián)網(wǎng)環(huán)境下IPv6與IPv4共存與過(guò)渡分析[J].通訊世界,2018.10:63-64
[8] Alan Thorn.Unity腳本設(shè)計(jì)[M].清華大學(xué)出版社,2016.