劉 瑜 王衛(wèi)玲 趙海冰
(1.海軍航空大學(xué) 煙臺(tái) 264001)(2.煙臺(tái)市地理信息中心 煙臺(tái) 264001)
為實(shí)現(xiàn)某型飛機(jī)測(cè)試系統(tǒng)各測(cè)試點(diǎn)位之間信息傳遞和信息交換,采用手持機(jī)(下稱(chēng)PDA)作為飛機(jī)駕駛艙內(nèi)操作員的手持設(shè)備,實(shí)現(xiàn)飛機(jī)駕駛艙內(nèi)操作員與地面測(cè)試操作員之間的信息交互。PDA是非常適宜自動(dòng)測(cè)試中使用的硬件設(shè)備,其耗電量少、體積小、方便攜帶等因素使其成為自動(dòng)測(cè)試中常用的手持終端。在本例中,主要完成以接收串口通信數(shù)據(jù)為觸發(fā)機(jī)制的圖片顯示功能和以按鍵為觸發(fā)機(jī)制的圖片關(guān)閉功能,從而達(dá)到各測(cè)試點(diǎn)位之間指令的發(fā)送和接收。為保證數(shù)據(jù)和指令等信號(hào)傳遞的正確性,需要建立串口通信機(jī)制和信息校驗(yàn)機(jī)制。
PDA終端應(yīng)用環(huán)境復(fù)雜多變,需要對(duì)環(huán)境噪聲有出色的抑制能力,可以在更廣范圍內(nèi)傳送準(zhǔn)確的語(yǔ)音和數(shù)據(jù),保證在非常嘈雜的環(huán)境下也能通信自如[1]。按照測(cè)試需求,PDA需要有圖片顯示功能和確認(rèn)功能,因此,根據(jù)測(cè)試系統(tǒng)整體硬件平臺(tái)要求,以及PDA的功能需求,選用浪潮巧金剛1211型號(hào)手持計(jì)算機(jī)為PDA硬件平臺(tái)。PDA硬件配置如表1所示。
表1 PDA硬件配置
軟件平臺(tái)包括編譯環(huán)境和操作系統(tǒng)。目前,EVC4.0和VS.NET是兩種常用的基于Windows CE的PDA應(yīng)用程序開(kāi)發(fā)方式。本例中采用基于EVC4.0開(kāi)發(fā)WinCE應(yīng)用程序,編譯生成可執(zhí)行文件在PDA上運(yùn)行。由于采用鐵電存儲(chǔ)器與FLASH并用的兩極架構(gòu)進(jìn)行數(shù)據(jù)采集,因此wince嵌入式系統(tǒng)十分適合指令圖片的大容量存儲(chǔ)。Windows CE系統(tǒng)應(yīng)用程序的開(kāi)發(fā)工具可選擇Embedded Vi?sual C++ ,VS2005( Visual Studio 2005),VS2008等軟件[2]。WinCE不支持重疊I/O,I/O操作函數(shù)在I/O操作結(jié)束前不能返回,這將掛起調(diào)用線程,直到I/O操作結(jié)束[3]。浪潮巧金剛手持終端安裝的是wince5.0操作系統(tǒng);工控機(jī)上采用evc4.0編譯環(huán)境、利用C++語(yǔ)言編譯生成可執(zhí)行文件“comdisplay.exe”在PDA上運(yùn)行。軟件平臺(tái)如表2所示。
表2 軟件平臺(tái)
根據(jù)項(xiàng)目需求,設(shè)計(jì)本例軟件架構(gòu)。本例中,首先由工控機(jī)發(fā)送代表指令的圖片編號(hào)給PDA,PDA顯示以該圖片編號(hào)命名的圖片,PDA操作員根據(jù)圖片上的指示完成其在機(jī)艙內(nèi)的相應(yīng)操作并根據(jù)操作情況按下PDA上的按鍵,PDA判斷鍵值,鍵值代表操作結(jié)果,將操作結(jié)果通過(guò)串行數(shù)據(jù)總線返回給工控機(jī)。在發(fā)送和接收數(shù)據(jù)前清除串口緩沖區(qū)和錯(cuò)誤,可以防止線程的阻塞[4]。在實(shí)現(xiàn)的過(guò)程中,對(duì)串口工控機(jī)根據(jù)返回的數(shù)據(jù)判斷機(jī)艙內(nèi)操作員的工作完成情況,再進(jìn)行相應(yīng)的測(cè)試動(dòng)作。由于沒(méi)有硬件控制發(fā)送端和接收端的同步,因此,要保證數(shù)據(jù)的正確性通信參數(shù)必須一致[5]。
在數(shù)據(jù)通信中,CRC校驗(yàn)是非常靈活常見(jiàn)的差錯(cuò)校驗(yàn)方法,尤其適用于信息字段和校驗(yàn)字段的長(zhǎng)度不確定的場(chǎng)合。采用CRC校驗(yàn)可完成數(shù)據(jù)傳輸檢錯(cuò),通過(guò)CRC校驗(yàn)算法進(jìn)行計(jì)算,并將得到的校驗(yàn)碼附在數(shù)據(jù)幀的末尾,當(dāng)接收設(shè)備接收到數(shù)據(jù)幀后,執(zhí)行CRC校驗(yàn)算法,來(lái)檢驗(yàn)數(shù)據(jù)傳輸過(guò)程是否正確、完整。本例中采用CRC校驗(yàn)方式保證通信數(shù)據(jù)正確。根據(jù)需求分析建立相應(yīng)的功能模塊,包括串口通信功能模塊、圖片顯示功能模塊、按鍵響應(yīng)功能模塊和圖片關(guān)閉功能模塊四大模塊。功能模塊與實(shí)現(xiàn)方法如表3。
表3 功能模塊與對(duì)應(yīng)方法
通信系統(tǒng)設(shè)計(jì)流程圖和對(duì)應(yīng)方法如圖1。
圖1 通信系統(tǒng)流程圖和對(duì)應(yīng)方法
測(cè)試程序的開(kāi)發(fā)可以采用面向信號(hào)語(yǔ)言或面向儀器語(yǔ)言。ATLAS是一種面向信號(hào)的高級(jí)語(yǔ)言,用于描述被測(cè)對(duì)象的測(cè)試需求[6]。采用GPTS3.0平臺(tái)開(kāi)發(fā)基于ATLAS語(yǔ)言的測(cè)試程序,對(duì)信號(hào)和測(cè)試資源的描述不針對(duì)特定類(lèi)型的儀器,可以方便地描述系統(tǒng)配置“適配器連線表”虛擬資源等,與硬件平臺(tái)無(wú)關(guān),因此在GPTS3.0上開(kāi)發(fā)的測(cè)試程序具有良好的移植性,可以廣泛地應(yīng)用于各種被測(cè)對(duì)象的功能測(cè)試[7]。
本例采用GPTS3.0作為開(kāi)發(fā)平臺(tái),利用ATLAS語(yǔ)言開(kāi)發(fā)測(cè)試程序,利用VC++6.0開(kāi)發(fā)非ATLAS模塊實(shí)現(xiàn)校驗(yàn)功能。
在有線傳輸中,數(shù)據(jù)串口異步通信方式主要是能夠?qū)崿F(xiàn)計(jì)算機(jī)數(shù)據(jù)傳輸?shù)淖止?jié)符號(hào)獨(dú)立[8]。RS-232是標(biāo)準(zhǔn)化的采取單端通信方式進(jìn)行傳輸?shù)拇薪涌冢?]。RS-232串口通信模塊是通信系統(tǒng)的核心,實(shí)現(xiàn)對(duì)串口數(shù)據(jù)的發(fā)送、讀取和校驗(yàn)功能。
PDA和程控交換機(jī)之間的通信由RS232總線實(shí)現(xiàn)。程控交換機(jī)和PDA通信前,應(yīng)先打開(kāi)串口,設(shè)置通信參數(shù),包括緩存區(qū)長(zhǎng)度和傳送數(shù)據(jù)頻率和時(shí)間間隔等,然后創(chuàng)建串口接收數(shù)據(jù)線程。PDA傳遞給程控交換機(jī)的串口數(shù)據(jù)傳送首先送入程控交換機(jī)緩存區(qū)。若緩存中有未取走的串口數(shù)據(jù),會(huì)造成干擾,因此在發(fā)送和接收串口信號(hào)前,應(yīng)保證串口緩存為空。
PDA與程控交換機(jī)進(jìn)行數(shù)據(jù)傳送,需事先制訂串口通信協(xié)議,主要涉及發(fā)送數(shù)據(jù)的格式,以便于發(fā)送和解析判斷,協(xié)議中規(guī)定,數(shù)據(jù)由5個(gè)字節(jié)組成,并明確每個(gè)字節(jié)的含義。PDA與工控機(jī)數(shù)據(jù)傳送通信協(xié)議如表4。
表4 PDA接收工控機(jī)數(shù)據(jù)的通信協(xié)議
PDA需要按鍵F1或F5按功能需求進(jìn)行響應(yīng),PDA的按鍵響應(yīng)分為三種模式,根據(jù)通信協(xié)議PDA接收來(lái)自工控機(jī)的5個(gè)字節(jié)的數(shù)據(jù)。模式的選擇由第4字節(jié)的數(shù)據(jù)內(nèi)容決定,第4字節(jié)數(shù)據(jù)為01H按模式1進(jìn)行相應(yīng)操作;數(shù)據(jù)為02H按模式2進(jìn)行相應(yīng)操作;數(shù)據(jù)為03H按模式3進(jìn)行相應(yīng)操作;這三種模式按鍵響應(yīng)的前提是必須當(dāng)前有圖片顯示中,防止按鍵誤操作影響工控機(jī)的判斷。PDA響應(yīng)按鍵模式如表5。
表5 PDA響應(yīng)按鍵模式表
工控機(jī)接收PDA傳來(lái)的確認(rèn)消息,串口傳輸過(guò)程可能存在錯(cuò)誤,因此工控機(jī)測(cè)試程序在收到指令時(shí),需要根據(jù)通信協(xié)議進(jìn)行數(shù)據(jù)校驗(yàn),本例中采用CRC校驗(yàn)。
由于ATLAS是面向信號(hào)的自動(dòng)測(cè)試語(yǔ)言,AT?LAS本身無(wú)法進(jìn)行CRC校驗(yàn),因此,需要采用非ATLAS模塊來(lái)實(shí)現(xiàn)ATLAS不能實(shí)現(xiàn)的功能,本例利用GPTS3.0平臺(tái)提供的對(duì)非ATLAS模塊的擴(kuò)展來(lái)實(shí)現(xiàn)。采用C++語(yǔ)言編寫(xiě)動(dòng)態(tài)鏈接庫(kù)文件實(shí)現(xiàn)非ATLAS模塊的CRC校驗(yàn),作為對(duì)ATLAS測(cè)試程序的補(bǔ)充。CRC校驗(yàn)?zāi)K以非ATLAS模塊的形式提供給ATLAS主程序,在主程序中的序言結(jié)構(gòu)中使用INCLUDE語(yǔ)句連接該模塊,在主程序結(jié)構(gòu)中使用PERFORM語(yǔ)句執(zhí)行該模塊。由于非ATLAS模塊需要在ATLAS程序中被調(diào)用,因此參數(shù)傳遞必須符合ATLAS標(biāo)準(zhǔn)。主程序中對(duì)非ATLAS模塊的定義要用到關(guān)鍵詞EXTERNAL。
定義實(shí)現(xiàn)CRC校驗(yàn)的非ATLAS模塊'NOAT?LASMOD',其中定義了一個(gè)名為'CRC_TEST'的子程序,該子程序采用非ATLAS的方法實(shí)現(xiàn),本例采用C++語(yǔ)言實(shí)現(xiàn),主程序通過(guò)DLL文件鏈接到此模塊中。ATLAS測(cè)試程序中,調(diào)用CRC校驗(yàn)?zāi)K'CRC_TEST'代碼如下:
本實(shí)例中校驗(yàn)方式選用CRC校驗(yàn)方式,在設(shè)置通信協(xié)議中規(guī)定的參數(shù)時(shí),PARITY-MODE應(yīng)設(shè)置為無(wú)校驗(yàn)方式。校驗(yàn)參數(shù)設(shè)置ATLAS代碼如下。
測(cè)試系統(tǒng)的通信線路獨(dú)立于原測(cè)試系統(tǒng),使用PDA作為通信工具,硬件上易于擴(kuò)展。但是,信息校驗(yàn)?zāi)K采用非ATLAS模塊實(shí)現(xiàn)CRC校驗(yàn),非AT?LAS模塊作為ATLAS測(cè)試程序的補(bǔ)充,擴(kuò)展了AT?LAS測(cè)試程序的功能,但是由于非ATLAS模塊實(shí)現(xiàn)方法特殊,因此不一定是可移植的,所以一般只有在必要時(shí)才使用。
本例中,系統(tǒng)的信息校驗(yàn)?zāi)K可以保證信號(hào)傳送的正確性,對(duì)于校驗(yàn)失敗的情況采取確認(rèn)重傳的機(jī)制。在實(shí)際測(cè)試中,為提高測(cè)試效率,保證測(cè)試過(guò)程順利,要注意串口通信軟硬件配合問(wèn)題,從而減少重傳的次數(shù)。測(cè)試中,通信鏈路通過(guò)閉合矩陣開(kāi)關(guān)建立,在PDA與計(jì)算機(jī)RS-232串口傳遞信號(hào)前,應(yīng)先閉合矩陣開(kāi)關(guān)相應(yīng)的行和列,建立PDA與工控機(jī)的通信通路,避免數(shù)據(jù)傳送丟失[10]。
飛機(jī)的測(cè)試工作多在外場(chǎng)進(jìn)行,本測(cè)試系統(tǒng)通過(guò)圖片傳遞測(cè)試指令,清楚、準(zhǔn)確,很好地解決了受風(fēng)力噪聲、口音誤傳、飛機(jī)起落噪聲的干擾。整個(gè)測(cè)試過(guò)程中以及試用期間,未發(fā)生一起指令模糊或者錯(cuò)誤的情況,信息校驗(yàn)安全準(zhǔn)確,CRC校驗(yàn)完全滿足測(cè)試需求,本例為外場(chǎng)測(cè)試工作的信息傳遞和校驗(yàn)提供了很好的思路。