韓 冰,楊 鋒,王 萍,沈 佳,孫 溢,王麗斌,方 強(qiáng),魏燕定
(1.中航西安飛機(jī)工業(yè)集團(tuán)股份有限公司,西安 710089;2.浙江大學(xué)機(jī)械工程學(xué)院,杭州 310027)
發(fā)展航空航天產(chǎn)業(yè)是增強(qiáng)國(guó)家核心競(jìng)爭(zhēng)力的重要戰(zhàn)略措施,在國(guó)家科技部的支持下,大飛機(jī)產(chǎn)業(yè)正處于研究、批量化生產(chǎn)高交織的關(guān)鍵階段。針對(duì)飛機(jī)的測(cè)試技術(shù)是保障飛機(jī)設(shè)計(jì)、研制、生產(chǎn)和使用維護(hù)各個(gè)階段正常運(yùn)轉(zhuǎn)的重要支撐。
總裝階段飛控測(cè)試是在完成飛機(jī)總裝后,通過(guò)飛控系統(tǒng)運(yùn)行原理與外接口,借助測(cè)試設(shè)備進(jìn)行飛控系統(tǒng)功能測(cè)試的過(guò)程[1]??傃b階段的飛控測(cè)試技術(shù)發(fā)展主要經(jīng)過(guò)了人工測(cè)試階段、專用半自動(dòng)/自動(dòng)測(cè)試階段、標(biāo)準(zhǔn)接口半自動(dòng)/自動(dòng)測(cè)試階段、計(jì)算機(jī)與標(biāo)準(zhǔn)自動(dòng)測(cè)試階段以及虛擬儀器和標(biāo)準(zhǔn)自動(dòng)測(cè)試系統(tǒng)階段[2]。目前,總裝階段飛控測(cè)試技術(shù)正朝著測(cè)試設(shè)備綜合化、通用化、數(shù)字化、虛擬化以及設(shè)備統(tǒng)籌規(guī)劃、集中管控、分布式布局和縱向一體化測(cè)試方向發(fā)展[3–4]。
21世紀(jì)以來(lái),隨著技術(shù)的進(jìn)一步發(fā)展,各廠商研發(fā)出了許多測(cè)試效果良好的測(cè)試系統(tǒng),如歐洲宇航防務(wù)公司提出了飛機(jī)總裝地面支持設(shè)備方案(FAL GSE Project),用于統(tǒng)籌整個(gè)飛機(jī)總裝過(guò)程中的所有測(cè)試設(shè)備的運(yùn)行,可以完成包括飛控系統(tǒng)在內(nèi)的多項(xiàng)地面測(cè)試任務(wù)。美國(guó)空軍在設(shè)計(jì)C–17運(yùn)輸機(jī)的測(cè)試設(shè)備時(shí),分析了C–17的測(cè)試需求,成功集成了當(dāng)時(shí)的測(cè)試設(shè)備進(jìn)行飛機(jī)測(cè)試[5]。洛·馬公司為F–35研制了LM–STAR系統(tǒng),具有通用的開(kāi)放式體系結(jié)構(gòu),是目前最具代表性的縱向一體化的綜合測(cè)試設(shè)備。與此同時(shí),中國(guó)廣州航新也研發(fā)出了具有先進(jìn)的總線技術(shù)、虛擬仿真以及綜合測(cè)試等功能的航新自動(dòng)試驗(yàn)設(shè)備(ATE)產(chǎn)品[6]。中國(guó)潤(rùn)科通用集成測(cè)試系統(tǒng)采用通用化、模塊化和綜合化設(shè)計(jì)思想,基于分布式、網(wǎng)絡(luò)化、可擴(kuò)展的柔性測(cè)試架構(gòu)進(jìn)行設(shè)計(jì),基于標(biāo)準(zhǔn)的以太網(wǎng)技術(shù)構(gòu)建測(cè)試網(wǎng)絡(luò),通過(guò)測(cè)試網(wǎng)絡(luò)實(shí)現(xiàn)各測(cè)試軟件、測(cè)試 I/O 資源的交互,搭建一個(gè)軟硬件模塊易于擴(kuò)展的集成驗(yàn)證環(huán)境。這些測(cè)試系統(tǒng)雖然具有強(qiáng)大的功能,但是普遍操作復(fù)雜,對(duì)老舊測(cè)試設(shè)備缺乏支持,可移植性較差,系統(tǒng)界面也多以客戶端軟件的形式呈現(xiàn),升級(jí)換代成本較高,不利于擴(kuò)展。國(guó)內(nèi)部分飛控測(cè)試設(shè)備甚至依舊停留在上個(gè)世紀(jì)七八十年代,因此,為了在現(xiàn)有條件下實(shí)現(xiàn)總裝階段飛控系統(tǒng)測(cè)試的數(shù)字化改造,需要研制操作簡(jiǎn)單、能夠集成老舊設(shè)備且具有較低成本的測(cè)試平臺(tái)。
另一方面,在用飛控系統(tǒng)進(jìn)行功能測(cè)試時(shí),設(shè)備廠商通常針對(duì)單個(gè)功能需求開(kāi)發(fā)專用的測(cè)試設(shè)備。然而,這些專用測(cè)試設(shè)備大多內(nèi)部封閉,組件緊耦合,架構(gòu)各異,數(shù)據(jù)模型也各不相同。這使得不同設(shè)備之間缺少信息交互,限制了測(cè)試設(shè)備間信息的共享和重用,從而形成了信息孤島[7],進(jìn)一步使得總裝階段飛控?cái)?shù)字化測(cè)試中存在大量的多源異構(gòu)數(shù)據(jù),降低了飛控系統(tǒng)測(cè)試的擴(kuò)展性和設(shè)備間的互操作性[8]。因此,為了實(shí)現(xiàn)總裝階段飛控?cái)?shù)字化測(cè)試的可擴(kuò)展性和可操作性,需要對(duì)總裝階段飛控?cái)?shù)字化測(cè)試場(chǎng)景中各種傳感器、激勵(lì)設(shè)備、機(jī)載系統(tǒng)的異構(gòu)數(shù)據(jù)集成進(jìn)行研究。
針對(duì)上述問(wèn)題,本文將對(duì)總裝階段飛控系統(tǒng)測(cè)試過(guò)程中的多源異構(gòu)數(shù)據(jù)集成技術(shù)展開(kāi)研究,設(shè)計(jì)一種基于表述性狀態(tài)轉(zhuǎn)移(Representational state transfer,REST)架構(gòu)的多源異構(gòu)數(shù)據(jù)集成服務(wù),用于解決總裝階段飛控系統(tǒng)數(shù)字化測(cè)試過(guò)程中數(shù)據(jù)的多源異構(gòu)問(wèn)題,為飛控系統(tǒng)功能程序化、數(shù)字化測(cè)試提供技術(shù)基礎(chǔ),并為最終實(shí)現(xiàn)飛控系統(tǒng)測(cè)試的自動(dòng)化、高效化、標(biāo)準(zhǔn)化和專業(yè)化提供技術(shù)支撐。
在目前的總裝階段,飛控?cái)?shù)字化測(cè)試中常用的主要測(cè)試設(shè)備有飛控地面維護(hù)設(shè)備、大氣數(shù)據(jù)激勵(lì)設(shè)備、無(wú)線電高度表激勵(lì)器、單軸速率轉(zhuǎn)臺(tái)和外部測(cè)量裝置等,這些設(shè)備在測(cè)試過(guò)程中放置在飛機(jī)的不同位置,并與飛機(jī)的相應(yīng)測(cè)試接口連接。當(dāng)需要操作這些設(shè)備時(shí)可以直接操作設(shè)備的上位機(jī)或是從這些設(shè)備預(yù)留的擴(kuò)展接口進(jìn)行遠(yuǎn)程修改與讀取。
飛控地面維護(hù)設(shè)備是一種綜合化的智能檢測(cè)設(shè)備,集成了飛行控制系統(tǒng)計(jì)算機(jī)的檢測(cè)功能,是在飛控測(cè)試過(guò)程中讀取飛控計(jì)算機(jī)參數(shù)的重要設(shè)備。飛控地面維護(hù)設(shè)備由主飛控地面維護(hù)設(shè)備、高升力地面維護(hù)設(shè)備和自動(dòng)飛行地面維護(hù)設(shè)備組成,分別用于檢測(cè)飛控計(jì)算機(jī)的不同功能。飛控地面維護(hù)設(shè)備主要用來(lái)對(duì)飛行控制操縱系統(tǒng)進(jìn)行飛行前自檢、機(jī)上性能檢測(cè)、調(diào)式及故障定位工作。飛控地面維護(hù)設(shè)備需要連接飛控計(jì)算機(jī)的ARINC429總線、RS232和RS422接口。此外,還有離散的數(shù)字信號(hào)、模擬信號(hào)以及旋變類RVDT信號(hào)等,其連接如圖1所示。
飛控地面維護(hù)設(shè)備采集到這些信息后,通過(guò)預(yù)設(shè)的格式在屏幕顯示。用戶也可以通過(guò)飛控地面維護(hù)設(shè)備提供的以太網(wǎng)、USB接口等對(duì)其進(jìn)行遠(yuǎn)程控制,從而獲得飛控計(jì)算機(jī)的相關(guān)數(shù)據(jù),這也是實(shí)現(xiàn)總裝階段飛控?cái)?shù)字化測(cè)試的基礎(chǔ)之一。
大氣數(shù)據(jù)激勵(lì)設(shè)備是在飛控測(cè)試過(guò)程中在地面給出模擬的激勵(lì)信號(hào)以測(cè)試大氣數(shù)據(jù)機(jī)的功能以及與其他機(jī)載設(shè)備聯(lián)調(diào)測(cè)試時(shí)給出模擬數(shù)據(jù)的測(cè)試設(shè)備。該設(shè)備可以通過(guò)內(nèi)置泵產(chǎn)生壓力和真空源、靜壓或是高度、總壓或是動(dòng)壓、空速,還可以模擬高度和空速,產(chǎn)生爬升率、空速變化率、靜壓變化速率、動(dòng)壓變化率、總壓變化率、馬赫數(shù)以及進(jìn)行泄露測(cè)試等。本文所涉及的大氣數(shù)據(jù)激勵(lì)設(shè)備內(nèi)置了以太網(wǎng)接口,支持TCP/IP協(xié)議,通過(guò)大氣數(shù)據(jù)激勵(lì)設(shè)備廠商定義的查詢方式,可以實(shí)現(xiàn)遠(yuǎn)程控制。
單軸速率轉(zhuǎn)臺(tái)主要由一個(gè)可做回轉(zhuǎn)運(yùn)動(dòng)的平臺(tái)和固定底座組成,可以調(diào)節(jié)轉(zhuǎn)動(dòng)速率、加速度等,用于角速率陀螺相關(guān)的系統(tǒng)功能和性能檢查。使用時(shí)通過(guò)工裝將飛機(jī)內(nèi)部的角速率陀螺儀固定在轉(zhuǎn)臺(tái)上,并調(diào)節(jié)不同的轉(zhuǎn)速測(cè)試角速率陀螺儀的功能。在飛控測(cè)試中使用的單軸速率轉(zhuǎn)臺(tái)具有一個(gè)RS232接口,通過(guò)廠商給出的協(xié)議,計(jì)算機(jī)可以對(duì)單軸速率轉(zhuǎn)臺(tái)進(jìn)行遠(yuǎn)程控制。
圖1 飛控計(jì)算機(jī)與地面維護(hù)設(shè)備之間的連接Fig.1 Connection between flight control computer and ground maintenance equipment
在飛控測(cè)試過(guò)程中,需要對(duì)飛機(jī)機(jī)翼和舵面進(jìn)行測(cè)試,以檢驗(yàn)飛機(jī)副翼舵面、多功能擾流板、地面擾流板、前緣縫翼和后緣襟翼、升降舵、水平安定面、方向舵的功能是否滿足技術(shù)要求。然后進(jìn)一步檢查舵面極限位置和舵面運(yùn)動(dòng)是否滿足極性、傳動(dòng)以及行程等要求,該過(guò)程需要反復(fù)進(jìn)行調(diào)整、檢測(cè),直至最終滿足要求。外部測(cè)量裝置需要在不破壞飛機(jī)原狀態(tài)的基礎(chǔ)上完成副翼、升降舵、方向舵、襟翼、縫翼、擾流板及水平安定面等眾多舵面偏轉(zhuǎn)角度的測(cè)量以及襟翼、縫翼PDU扭力桿輸出圈數(shù)測(cè)量。外部測(cè)量裝置的傳感器測(cè)得的信號(hào)是電壓、電流等電信號(hào),這些信號(hào)無(wú)法直接利用,需要經(jīng)過(guò)上位機(jī)轉(zhuǎn)換后才能進(jìn)行使用。
由上述介紹可知,總裝階段飛控系統(tǒng)的測(cè)試過(guò)程需要許多測(cè)試設(shè)備,這些不同的設(shè)備造成數(shù)據(jù)來(lái)源的不同,而且在總裝階段飛控?cái)?shù)字化測(cè)試過(guò)程中,測(cè)試設(shè)備的數(shù)據(jù)存放在測(cè)試設(shè)備的上位機(jī)或是傳感器的芯片中,這些數(shù)據(jù)按照不同的標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì),造成了數(shù)據(jù)的異構(gòu),為總裝階段的飛控系統(tǒng)測(cè)試工作帶來(lái)了大量的多源異構(gòu)數(shù)據(jù)。多源異構(gòu)數(shù)據(jù)的存在使得測(cè)試平臺(tái)難以滿足通用性要求。而將現(xiàn)有的測(cè)試設(shè)備淘汰進(jìn)行整體更新?lián)Q代,不僅成本較高而且浪費(fèi)設(shè)備資源。為了兼容現(xiàn)有的測(cè)試設(shè)備,總裝階段飛控?cái)?shù)字化測(cè)試需要實(shí)現(xiàn)各個(gè)測(cè)試設(shè)備之間的電氣連接和數(shù)據(jù)交換。只有將多源異構(gòu)數(shù)據(jù)進(jìn)行集成,才能為總裝階段飛控?cái)?shù)字化測(cè)試提供良好的數(shù)據(jù)基礎(chǔ)。
總裝階段飛控測(cè)試中的設(shè)備集成試驗(yàn)平臺(tái)使用以太網(wǎng)作為最終的數(shù)據(jù)傳輸網(wǎng)絡(luò),使用接口轉(zhuǎn)換裝置將不同設(shè)備接入以太網(wǎng)。
總裝階段飛控?cái)?shù)字化測(cè)試中多種總線共存,各種協(xié)議互不兼容的問(wèn)題也是國(guó)內(nèi)外設(shè)備集成廠商面臨的困境之一。為了解決這個(gè)問(wèn)題,需要設(shè)計(jì)接口轉(zhuǎn)換裝置,將接口和協(xié)議進(jìn)行轉(zhuǎn)化后,進(jìn)行統(tǒng)一的輸出。以太網(wǎng)是目前使用最廣泛的一種計(jì)算機(jī)網(wǎng)絡(luò),可以很方便地實(shí)現(xiàn)網(wǎng)絡(luò)的擴(kuò)展,并且支持多種語(yǔ)言的開(kāi)發(fā)。
本文采用以太網(wǎng)作為最終的傳輸網(wǎng)絡(luò),設(shè)計(jì)接口轉(zhuǎn)換裝置將現(xiàn)有的設(shè)備底層協(xié)議轉(zhuǎn)換為統(tǒng)一的形式接入以太網(wǎng),在以太網(wǎng)中通過(guò)TCP/IP協(xié)議進(jìn)行數(shù)據(jù)傳輸。圖 2為試驗(yàn)平臺(tái)中各設(shè)備的連接方式。
當(dāng)測(cè)試設(shè)備、服務(wù)器、手持終端等都接入局域網(wǎng)后,所有的測(cè)試信息在局域網(wǎng)中傳遞。測(cè)試設(shè)備在現(xiàn)場(chǎng)采集的測(cè)試數(shù)據(jù)通過(guò)以太網(wǎng)TCP/IP通訊協(xié)議進(jìn)行傳輸,服務(wù)器通過(guò)以太網(wǎng)TCP/IP發(fā)布測(cè)控命令并接收測(cè)試設(shè)備發(fā)送的數(shù)據(jù)。執(zhí)行人員手持的終端需要通過(guò)網(wǎng)線連接進(jìn)入以太網(wǎng)局域網(wǎng)。每個(gè)測(cè)控設(shè)備內(nèi)部通訊細(xì)節(jié)對(duì)以太網(wǎng)屏蔽,所以,在進(jìn)行測(cè)控時(shí)只需要關(guān)注具體的測(cè)控任務(wù)不需要考慮測(cè)控設(shè)備內(nèi)部的執(zhí)行邏輯,有利于模塊化的系統(tǒng)開(kāi)發(fā)和功能擴(kuò)展。
接口轉(zhuǎn)換裝置芯片將不同的設(shè)備協(xié)議進(jìn)行翻譯轉(zhuǎn)換形成以太網(wǎng)可傳輸?shù)膮f(xié)議,如TCP/IP協(xié)議。常見(jiàn)的如USB轉(zhuǎn)串口,USB轉(zhuǎn)以太網(wǎng),串口轉(zhuǎn)以太網(wǎng)等。常用接口的轉(zhuǎn)換是一種較為成熟的技術(shù),因此,大多數(shù)的接口轉(zhuǎn)換僅需要尋找合適的產(chǎn)品即可,對(duì)于一些自定義的接口,則需要自行開(kāi)發(fā)接口轉(zhuǎn)換裝置。例如,對(duì)于無(wú)法轉(zhuǎn)換成TCP/IP協(xié)議的總線接口,可通過(guò)特定總線的板卡接入節(jié)點(diǎn)工控機(jī)中,工控機(jī)運(yùn)行自定義的程序,該程序是根據(jù)具體通訊協(xié)議對(duì)設(shè)備數(shù)據(jù)進(jìn)行解析并包裝為T(mén)CP/IP數(shù)據(jù)包的客戶端程序。因此,該工控機(jī)也可以稱為適配器。
接口進(jìn)行改造后,設(shè)備得以接入以太網(wǎng),其連接方式如圖 3所示。飛控地面維護(hù)設(shè)備、無(wú)線電高度表激勵(lì)器、大氣數(shù)據(jù)激勵(lì)設(shè)備都有以太網(wǎng)接口。但是單軸速率轉(zhuǎn)臺(tái)在設(shè)計(jì)之初就沒(méi)有預(yù)留以太網(wǎng)接口而只有RS232串口,因此,需要添加一個(gè)串口轉(zhuǎn)以太網(wǎng)的裝置完成接口的轉(zhuǎn)換。外部測(cè)量裝置的傳感器都是電信號(hào),需要通過(guò)電信號(hào)轉(zhuǎn)以太網(wǎng)的裝置才能接入以太網(wǎng)。
圖2 試驗(yàn)平臺(tái)電氣連接Fig.2 Electrical connection of test platform
REST架構(gòu),是由Fielding Roy博士提出的一種分布式軟件架構(gòu)風(fēng)格。它是一種面向資源的軟件架構(gòu)。REST架構(gòu)對(duì)不同系統(tǒng)具有極好的兼容性,具有平臺(tái)無(wú)關(guān)的特性,對(duì)老舊設(shè)備有著很強(qiáng)的可訪問(wèn)性和互操作性,使得REST架構(gòu)成為老舊設(shè)備改造的一種優(yōu)選架構(gòu)[9–12]。
對(duì)多源異構(gòu)數(shù)據(jù)集成進(jìn)行分層設(shè)計(jì),設(shè)備數(shù)據(jù)視圖層是完成多源異構(gòu)數(shù)據(jù)集成后的直觀成果,也是完成多源異構(gòu)數(shù)據(jù)集成的基礎(chǔ)目標(biāo)。而設(shè)備數(shù)據(jù)視圖層下又分為應(yīng)用層、中間層、包裝層和設(shè)備/數(shù)據(jù)源層4層,每一層都只對(duì)相鄰層暴露接口,圖 4為基于REST架構(gòu)的多源異構(gòu)數(shù)據(jù)集成的整體設(shè)計(jì)。
設(shè)備數(shù)據(jù)視圖層是多源異構(gòu)數(shù)據(jù)集成服務(wù)對(duì)外的視圖,服務(wù)請(qǐng)求者可以根據(jù)REST風(fēng)格的HTTP請(qǐng)求向設(shè)備數(shù)據(jù)視圖層請(qǐng)求資源,并接收J(rèn)SON格式的返回值。對(duì)于服務(wù)請(qǐng)求者來(lái)說(shuō)雖然設(shè)備的數(shù)據(jù)在物理上依舊保存在各個(gè)設(shè)備內(nèi)部,但是通過(guò)虛擬的設(shè)備數(shù)據(jù)視圖層,就和向一張統(tǒng)一的數(shù)據(jù)表請(qǐng)求數(shù)據(jù)一樣??傃b階段飛控?cái)?shù)字化測(cè)試過(guò)程中,如果步驟需要設(shè)備參與,服務(wù)器就會(huì)對(duì)設(shè)備數(shù)據(jù)視圖層進(jìn)行操作,設(shè)備數(shù)據(jù)視圖層將會(huì)按照REST的風(fēng)格發(fā)送HTTP請(qǐng)求給應(yīng)用層。
1.1 設(shè)備數(shù)據(jù)視圖層URI設(shè)計(jì)
圖3 設(shè)備連接設(shè)計(jì)Fig.3 Device connection design
圖4 基于REST架構(gòu)的多源異構(gòu)數(shù)據(jù)集成整體設(shè)計(jì)Fig.4 Overall design of multi–source heterogeneous data integration based on REST architecture
根據(jù)REST架構(gòu)的定義,需要設(shè)計(jì)統(tǒng)一形式的資源URI以實(shí)現(xiàn)通過(guò)REST形式的HTTP請(qǐng)求對(duì)設(shè)備進(jìn)行操作,資源URI的統(tǒng)一形式可以設(shè)計(jì)為:http:// {IP地址}:{端口號(hào)}/device/{設(shè)備位置}/{數(shù)據(jù)類型}/{設(shè)備類別}/{資源名稱}?param={值},其中,{IP地址}、{端口號(hào)}為多源異構(gòu)數(shù)據(jù)集成服務(wù)的IP地址和端口號(hào);{設(shè)備位置}為配置文件中定義的設(shè)備放置位置,一般以locationX的形式給出,X為地址索引號(hào);{數(shù)據(jù)類型}分為激勵(lì)數(shù)據(jù)、外部數(shù)據(jù)和內(nèi)部數(shù)據(jù)3種,分別用incentive,external,internal表示;{設(shè)備類別}為設(shè)備的接口名稱,將駝峰命名的大寫(xiě)字母轉(zhuǎn)化為“_”+小寫(xiě)字母的形 式,如atmosphericDataIncentive,轉(zhuǎn)化為atmospheric_data_incentive;{資源名稱}為所定義的資源的名稱,如air_height,air_speed,air_mach等;{值}根據(jù)需求填寫(xiě)相應(yīng)的數(shù)值。依據(jù)REST風(fēng)格,可以將請(qǐng)求劃分成4類,如表1所示。
當(dāng)服務(wù)器需要修改大氣數(shù)據(jù)激勵(lì)設(shè)備的某個(gè)參數(shù)時(shí),如要修改位于“l(fā)ocation1”位置,設(shè)備類型為“大氣數(shù)據(jù)激勵(lì)設(shè)備”的設(shè)備的激勵(lì)高度為100m,可以使用PUT方式發(fā)送HTTP請(qǐng)求,其URI可設(shè)計(jì)為:http://xxxxxx:xx/device/locationX/incentive/atmospheric_data_incentive/air_height?param=100。
表1 REST請(qǐng)求方式Table 1 REST request
當(dāng)服務(wù)器需要查詢大氣數(shù)據(jù)激勵(lì)設(shè)備的某個(gè)參數(shù)時(shí),如要查詢位于“l(fā)ocation1”位置的,設(shè)備類型為“大氣數(shù)據(jù)激勵(lì)設(shè)備”的設(shè)備的激勵(lì)高度,可以使用GET方式發(fā)送HTTP請(qǐng)求,其URI可設(shè)計(jì)為:http://xxxxxx:xx/device/locationX/incentive/atmospheric_data_incentive/air_height。
1.2 面向設(shè)備應(yīng)用層URI設(shè)計(jì)
為了簡(jiǎn)化開(kāi)發(fā),設(shè)備應(yīng)用層處理的URI與設(shè)備數(shù)據(jù)視圖層的URI有所不同。設(shè)備數(shù)據(jù)視圖層面向的是所有的設(shè)備,是多源異構(gòu)數(shù)據(jù)集成后的視圖,而應(yīng)用層的作用則是將設(shè)備的數(shù)據(jù)傳輸方式進(jìn)行統(tǒng)一,面向單個(gè)設(shè)備,處于更低的層次。
應(yīng)用層處理的URI與設(shè)備數(shù)據(jù)視圖層處理的URI相比沒(méi)有“/device/{設(shè)備位置}/{數(shù)據(jù)類型}”前綴,其形式為:http:// {IP地址}:{端口號(hào)}/{設(shè)備類別}/{資源名稱}?param={值}。
因此,在對(duì)設(shè)備資源進(jìn)行抽象時(shí)可以不用考慮設(shè)備的放置位置和數(shù)據(jù)類型,而是將這部分的內(nèi)容交給設(shè)備數(shù)據(jù)視圖層來(lái)決定。依舊以上述的設(shè)置和讀取大氣數(shù)據(jù)激勵(lì)設(shè)備的激勵(lì)高度為例,與設(shè)備數(shù)據(jù)視圖層的URI不同,應(yīng)用層采用PUT方式發(fā)送請(qǐng)求,設(shè)置大氣數(shù)據(jù)激勵(lì)設(shè)備的高度激勵(lì)URI設(shè)計(jì)為:http://yyyy:yy/atmospheric_data_incentive/air_height?param=100。
而讀取大氣數(shù)據(jù)激勵(lì)高度采用GET方式發(fā)送請(qǐng)求,其URI設(shè)計(jì)為:http://yyyy:yy/atmospheric_data_incentive/air_height。其 中,yyyy:yy為上述location1位置的大氣數(shù)據(jù)激勵(lì)設(shè)備的IP和端口。可以看出應(yīng)用層不關(guān)心設(shè)備數(shù)據(jù)視圖層對(duì)設(shè)備資源的定義,而是為設(shè)備所具有的資源設(shè)置好各自的統(tǒng)一資源標(biāo)識(shí)符即可。不同URI的設(shè)計(jì)使得在進(jìn)行設(shè)備應(yīng)用層開(kāi)發(fā)的時(shí)候可以只關(guān)注單獨(dú)的設(shè)備,提供底層的服務(wù),而在設(shè)備數(shù)據(jù)視圖層開(kāi)發(fā)時(shí)才對(duì)不同設(shè)備資源進(jìn)行鏈接設(shè)計(jì)。由于設(shè)備使用了統(tǒng)一的URI格式,可以很方便地定位所需的設(shè)備資源,即使兩臺(tái)設(shè)備完全一樣,只是放置的位置不同也可以通過(guò)IP地址端口進(jìn)行區(qū)分。
使用不同URI的另一個(gè)好處是有利于擴(kuò)展開(kāi)放,未來(lái)加入新的測(cè)試設(shè)備時(shí),設(shè)計(jì)中只需要按照REST架構(gòu)進(jìn)行設(shè)計(jì),不論使用了何種接口何種協(xié)議,只要預(yù)留了REST的應(yīng)用程序接口即可實(shí)現(xiàn)快速接入和跨平臺(tái)使用。
應(yīng)用層是與設(shè)備數(shù)據(jù)視圖層直接交互的一層,通過(guò)接收REST風(fēng)格的HTTP請(qǐng)求進(jìn)行測(cè)試意圖的分析,并返回結(jié)果。應(yīng)用層和設(shè)備數(shù)據(jù)視圖層一樣,需要實(shí)現(xiàn)HTTP請(qǐng)求的解析和響應(yīng)值的包裝兩大功能。應(yīng)用層解析HTTP請(qǐng)求方式和URI,然后進(jìn)行資源定位,明確操作意圖,接著調(diào)用中間層的方法控制測(cè)試設(shè)備,最后將返回值反映到設(shè)備數(shù)據(jù)視圖層上。
中間層用于實(shí)現(xiàn)對(duì)設(shè)備的操作,可以根據(jù)應(yīng)用層傳入的資源信息、操作方式等參數(shù),通過(guò)java的反射機(jī)制動(dòng)態(tài)生成設(shè)備對(duì)象,之后根據(jù)需求調(diào)用包裝層的方法,最后返回所求資源。中間層是應(yīng)用層和包裝層之間的橋梁,向上提供統(tǒng)一的調(diào)用接口,向下屏蔽底層調(diào)用細(xì)節(jié)。中間層獲得的數(shù)據(jù)屬于多源異構(gòu)數(shù)據(jù),需要經(jīng)過(guò)數(shù)據(jù)映射,轉(zhuǎn)化成統(tǒng)一的JSON數(shù)據(jù)格式后返回應(yīng)用層。
使用java的反射機(jī)制可以在運(yùn)行時(shí)動(dòng)態(tài)地創(chuàng)建實(shí)例對(duì)象。新設(shè)備加入時(shí)不需要修改源代碼,只需要增加新的實(shí)現(xiàn)類,然后更新配置即可,提高了系統(tǒng)的擴(kuò)展性和穩(wěn)定性。以大氣數(shù)據(jù)激勵(lì)設(shè)備、無(wú)線電高度表激勵(lì)器和單軸速率轉(zhuǎn)臺(tái)為例,根據(jù)測(cè)試需求進(jìn)行設(shè)備種類的抽象,如表 2所示。
抽象工廠模式是23種設(shè)計(jì)模式中的創(chuàng)建型設(shè)計(jì)模式之一。抽象工廠類根據(jù)需求生成相應(yīng)的設(shè)備工廠,然后根據(jù)設(shè)備型號(hào)和配置文件掃描對(duì)應(yīng)的實(shí)現(xiàn)類通過(guò)反射生成實(shí)例對(duì)象。設(shè)備對(duì)象封裝了實(shí)現(xiàn)測(cè)試所需的所有功能,系統(tǒng)調(diào)用相應(yīng)的方法與測(cè)試設(shè)備通訊,并接收返回值來(lái)判斷是否進(jìn)行下一步測(cè)試。Java的反射機(jī)制可以動(dòng)態(tài)生成實(shí)例對(duì)象,但是具體生成什么對(duì)象,何時(shí)生成對(duì)象,如何生成對(duì)象就需要查詢配置文件動(dòng)態(tài)生成。
當(dāng)應(yīng)用層將設(shè)備類型、設(shè)備型號(hào)、目標(biāo)參數(shù)、操作、目標(biāo)值等傳入中間層后,服務(wù)查詢配置文件找到對(duì)應(yīng)的設(shè)備類型的工廠類和接口實(shí)現(xiàn)類的全限定名,基于反射機(jī)制動(dòng)態(tài)生成設(shè)備對(duì)象后,就可以與設(shè)備進(jìn)行通信,實(shí)現(xiàn)設(shè)備的控制。這樣的好處是當(dāng)需要更換、添加、升級(jí)設(shè)備時(shí),只需要添加新的實(shí)現(xiàn)類,然后在配置文件中寫(xiě)入映射,不必修改系統(tǒng)的源碼。
中間層還負(fù)責(zé)與Mysql數(shù)據(jù)庫(kù)的交互,將表征具體意義的設(shè)備數(shù)據(jù)存儲(chǔ)至相應(yīng)數(shù)據(jù)表中。數(shù)據(jù)庫(kù)的核心數(shù)據(jù)表為device_category、device_command以及device,其中,device_category表用于存儲(chǔ)設(shè)備類型,不同的設(shè)備類型具有不同的設(shè)備指令;device_command表用于存儲(chǔ)設(shè)備指令,一條記錄對(duì)應(yīng)一條設(shè)備指令,也就對(duì)應(yīng)REST風(fēng)格的URI;device表用于存儲(chǔ)具體設(shè)備信息,包括設(shè)備IP和端口號(hào)等。
表2 部分設(shè)備接口表Table 2 Partial equipment interface table
包裝層的作用是對(duì)設(shè)備的通訊接口做一次封裝,將原先各不相同的底層協(xié)議進(jìn)行封裝,轉(zhuǎn)化為T(mén)CP/IP協(xié)議,使設(shè)備具有統(tǒng)一的數(shù)據(jù)傳輸方式。
以RS232和以太網(wǎng)的轉(zhuǎn)換為例,本文選用了USR–TCP232–306串口服務(wù)器N520,如圖 5所示,該串口服務(wù)器支持600bps~230.4Kbps波特率范圍,支持硬件流控(RTS/CTS)和軟件流控(XON/XOFF),可將串口數(shù)據(jù)靈活分幀。將設(shè)備的串口和服務(wù)器的以太網(wǎng)口進(jìn)行連接,串口服務(wù)器工作在TCP server模式。經(jīng)過(guò)設(shè)備接口改造后,所有的接口都轉(zhuǎn)換成了以太網(wǎng)接口,服務(wù)器和設(shè)備使用TCP/IP協(xié)議在局域網(wǎng)進(jìn)行通訊。
設(shè)備/數(shù)據(jù)源層與測(cè)試設(shè)備相關(guān)聯(lián),是測(cè)試數(shù)據(jù)的來(lái)源,必須要使用測(cè)試設(shè)備各自的通訊、查詢、調(diào)用格式才能進(jìn)行訪問(wèn)。
多源異構(gòu)數(shù)據(jù)集成服務(wù)是總裝階段飛控?cái)?shù)字化測(cè)試的數(shù)據(jù)基礎(chǔ)??傃b階段飛控?cái)?shù)字化測(cè)試的服務(wù)器通過(guò)發(fā)送REST風(fēng)格的HTTP請(qǐng)求獲得所需的數(shù)據(jù)。為了便于試驗(yàn),設(shè)計(jì)了多源異構(gòu)數(shù)據(jù)集成測(cè)試界面,用于測(cè)試服務(wù)器向多源異構(gòu)數(shù)據(jù)集成服務(wù)發(fā)送指令,以此驗(yàn)證多源異構(gòu)數(shù)據(jù)集成服務(wù)的功能。
為了檢驗(yàn)多源異構(gòu)數(shù)據(jù)集成服務(wù)是否可以實(shí)現(xiàn)對(duì)外提供統(tǒng)一的訪問(wèn)接口,實(shí)現(xiàn)對(duì)不同設(shè)備的相同訪問(wèn)方式控制,本文測(cè)試了飛控系統(tǒng)現(xiàn)場(chǎng)測(cè)試中常用的3個(gè)設(shè)備大氣數(shù)據(jù)激勵(lì)設(shè)備、無(wú)線電高度表激勵(lì)器以及單軸速率轉(zhuǎn)臺(tái)的通訊,將3個(gè)設(shè)備作為多源異構(gòu)數(shù)據(jù)的數(shù)據(jù)源。
大氣數(shù)據(jù)激勵(lì)設(shè)備采用意大利DMA公司的MPS45,如圖6所示;無(wú)線電高度表激勵(lì)器型號(hào)為WGJ–1。兩種設(shè)備前面板均提供以太網(wǎng)RJ45接口,網(wǎng)絡(luò)通信遵守TCP/IP協(xié)議。單軸速率轉(zhuǎn)臺(tái)提供RS232串口,由架構(gòu)中的包裝層進(jìn)行協(xié)議封裝,利用串口服務(wù)器,轉(zhuǎn)化為以太網(wǎng)接口以及TCP/IP協(xié)議。
圖5 串口服務(wù)器Fig.5 Serial server
圖6 大氣數(shù)據(jù)激勵(lì)設(shè)備Fig.6 Atmospheric data incentive
表3 設(shè)備IP及端口Table 3 Equipment’s IP and port
首先需要配置設(shè)備IP及端口,將大氣數(shù)據(jù)激勵(lì)設(shè)備、無(wú)線電高度表激勵(lì)器、單軸速率轉(zhuǎn)臺(tái)與服務(wù)器、路由器、交換機(jī),通過(guò)網(wǎng)線接入局域網(wǎng)并連入同一網(wǎng)段,如表3所示。3種設(shè)備會(huì)作為服務(wù)端監(jiān)聽(tīng)其綁定的端口,等待客戶端的連接請(qǐng)求。
2.1 現(xiàn)有資源請(qǐng)求
在請(qǐng)求設(shè)備現(xiàn)有資源時(shí),3種設(shè)備在設(shè)備數(shù)據(jù)視圖層的方法類似,因此,以大氣數(shù)據(jù)激勵(lì)設(shè)備為例,對(duì)大氣數(shù)據(jù)激勵(lì)設(shè)備的“馬赫數(shù)”這一資源,即“air_mach”進(jìn)行操作。使用“多源異構(gòu)數(shù)據(jù)集成測(cè)試界面”進(jìn)行測(cè)試,如圖 7所示。
圖7中的設(shè)備指令代表著設(shè)置馬赫數(shù)的操作,點(diǎn)擊按鈕即可設(shè)置,程序在后臺(tái)根據(jù)REST風(fēng)格進(jìn)行URI的設(shè)計(jì),搜索配置文件可以得到設(shè)備放置在“l(fā)ocation1”,URI設(shè)計(jì)如下,并使用PUT方式對(duì)設(shè)備數(shù)據(jù)視圖層進(jìn)行HTTP請(qǐng)求:http://192.168.0.101:8081/device/location1/incentive/atmospheric_data_incentive/air_mach?param=5。
設(shè)置完成后,可以看到對(duì)應(yīng)設(shè)備指令的返回值。由于現(xiàn)有資源可以直接獲得,所以,可以直接顯示所請(qǐng)求資源的值,比如設(shè)置馬赫數(shù),返回了響應(yīng)的實(shí)際值0.4。在URI中192.168.0.101:8081為多源異構(gòu)數(shù)據(jù)集成服務(wù)所在計(jì)算機(jī)的IP與端口。
由此可見(jiàn),整個(gè)試驗(yàn)平臺(tái)的數(shù)據(jù)交換暢通,每一層都按照設(shè)計(jì)進(jìn)行了數(shù)據(jù)處理,對(duì)于那些現(xiàn)有資源,請(qǐng)求資源后將資源按照J(rèn)SON形式封裝后即可直接獲得。試驗(yàn)結(jié)果中的響應(yīng)也滿足這一要求,現(xiàn)有資源請(qǐng)求功能符合預(yù)期。
2.2 邏輯資源請(qǐng)求
每個(gè)現(xiàn)有資源存在于單一設(shè)備中,設(shè)備數(shù)據(jù)視圖層在解析后調(diào)用相應(yīng)的應(yīng)用層URI獲得其響應(yīng)即可,但是對(duì)于邏輯資源來(lái)說(shuō)就需要返回所有鏈接的資源。在完成對(duì)現(xiàn)有資源請(qǐng)求的驗(yàn)證后,驗(yàn)證設(shè)備數(shù)據(jù)視圖層的邏輯資源請(qǐng)求功能。與現(xiàn)有資源不同,邏輯資源由多個(gè)現(xiàn)有資源鏈接而成。以測(cè)試設(shè)備可用狀態(tài)資源請(qǐng)求為例,如圖 8所示。
程序根據(jù)REST風(fēng)格進(jìn)行URI設(shè)計(jì),并使用GET方式發(fā)送HTTP請(qǐng)求,該URI指向的是邏輯資源,所以,返回值應(yīng)當(dāng)是當(dāng)前所有設(shè)備的可用狀態(tài):http://192.168.0.101:8081/device/all/all/all/status。
從圖8中可知,3種設(shè)備都處于可用狀態(tài)。僅接入了激勵(lì)數(shù)據(jù)源,連接的設(shè)備有大氣數(shù)據(jù)激勵(lì)設(shè)備、無(wú)線電高度表激勵(lì)器和單軸速率轉(zhuǎn)臺(tái)。因此,返回的數(shù)據(jù)中僅有3種設(shè)備的上電狀態(tài),符合試驗(yàn)給出的條件,邏輯資源請(qǐng)求符合預(yù)期。
經(jīng)過(guò)對(duì)現(xiàn)有資源和邏輯資源的請(qǐng)求試驗(yàn),驗(yàn)證了本文采用多源異構(gòu)數(shù)據(jù)集成服務(wù)實(shí)現(xiàn)總裝階段飛控?cái)?shù)字化測(cè)試中不同測(cè)試設(shè)備的多源異構(gòu)數(shù)據(jù)集成的方法,使得總裝階段飛控?cái)?shù)字化測(cè)試中可以方便地使用統(tǒng)一接口進(jìn)行設(shè)備數(shù)據(jù)的操作。
圖7 大氣數(shù)據(jù)激勵(lì)設(shè)備資源測(cè)試頁(yè)面Fig.7 Atmospheric data incentive equipment resource test page
圖8 設(shè)備資源測(cè)試頁(yè)面Fig.8 Device resource test page
本文面向飛機(jī)自動(dòng)測(cè)試需求,針對(duì)現(xiàn)有總裝階段飛控系統(tǒng)測(cè)試設(shè)備所存在的多源異構(gòu)數(shù)據(jù)集成問(wèn)題,在對(duì)現(xiàn)有設(shè)備的研究和測(cè)試流程總結(jié)歸納的基礎(chǔ)上,構(gòu)建了總裝階段飛控?cái)?shù)字化測(cè)試中的多源異構(gòu)數(shù)據(jù)集成試驗(yàn)平臺(tái),設(shè)計(jì)了基于REST架構(gòu)的多源異構(gòu)數(shù)據(jù)集成服務(wù),并最終通過(guò)對(duì)大氣數(shù)據(jù)激勵(lì)設(shè)備、單軸速率轉(zhuǎn)臺(tái)和無(wú)線電高度表激勵(lì)器的數(shù)據(jù)集成服務(wù)設(shè)計(jì),驗(yàn)證了本文所提出的基于REST架構(gòu)的總裝階段飛控?cái)?shù)字化測(cè)試中多源異構(gòu)數(shù)據(jù)集成方法的有效性。