何琳楠
(中國燃?xì)鉁u輪研究院,四川 成都610500)
航空發(fā)動(dòng)機(jī)試驗(yàn)研究設(shè)備眾多,其中不少為大型試驗(yàn)設(shè)備,試驗(yàn)時(shí)需耗費(fèi)大量的水、電、氣等資源,并產(chǎn)生較大噪聲,這些因素決定了其只能在人口較為稀少的郊區(qū)甚至偏遠(yuǎn)的山區(qū)。而航空發(fā)動(dòng)機(jī)設(shè)計(jì)則需要占用很多信息資源,一般都在信息暢通、社會(huì)資源豐富且能吸引人才的市區(qū)。中國燃?xì)鉁u輪研究院作為一家主要從事航空發(fā)動(dòng)機(jī)設(shè)計(jì)和試驗(yàn)研究的單位,其試驗(yàn)部門和設(shè)計(jì)部門分屬兩地且相距較遠(yuǎn)。在開發(fā)本系統(tǒng)之前,相關(guān)設(shè)計(jì)人員和項(xiàng)目管理人員如果要看到試驗(yàn)過程就必須前往異地試驗(yàn)現(xiàn)場。這對(duì)于工作任務(wù)繁忙的設(shè)計(jì)人員和項(xiàng)目管理人員異常辛苦,同時(shí)也耗費(fèi)了大量的人力、物力、財(cái)力。為了方便設(shè)計(jì)人員和項(xiàng)目管理人員能夠遠(yuǎn)程參與試驗(yàn)現(xiàn)場的試驗(yàn),觀看當(dāng)前試驗(yàn)的測試數(shù)據(jù),并能夠根據(jù)需要分析不同的數(shù)據(jù)曲線,依托于已建成的園區(qū)網(wǎng),開發(fā)了試驗(yàn)數(shù)據(jù)異地實(shí)時(shí)傳輸系統(tǒng)。
目前,網(wǎng)絡(luò)通訊軟件的編程設(shè)計(jì)一般采用基于TCP/IP或UDP的網(wǎng)絡(luò)傳輸協(xié)議,有C/S和B/S等架構(gòu)模式。相對(duì)來說,使用UDP協(xié)議傳輸有速度快的特點(diǎn),但在可靠性、穩(wěn)定性和安全性等方面遠(yuǎn)不如TCP/IP協(xié)議,所以對(duì)于實(shí)時(shí)性、可靠性要求較高的場合一般選擇使用TCP/IP協(xié)議。在開發(fā)方式上,B/S架構(gòu)主要是利用web瀏覽器來訪問服務(wù)器,適用于進(jìn)行一些簡單的處理和查詢;C/S架構(gòu)具有更高的操作自由度和靈活性。本系統(tǒng)選擇C/S架構(gòu)模式,采用TCP/IP網(wǎng)絡(luò)傳輸協(xié)議進(jìn)行開發(fā)。
該系統(tǒng)分為試驗(yàn)現(xiàn)場和設(shè)計(jì)部門兩個(gè)部分。試驗(yàn)現(xiàn)場的系統(tǒng)分成三個(gè)部分:測試系統(tǒng)的數(shù)據(jù)采集計(jì)算機(jī)、試驗(yàn)現(xiàn)場服務(wù)器、客戶機(jī)。設(shè)計(jì)部門的系統(tǒng)有兩個(gè)部分:設(shè)計(jì)部門服務(wù)器、客戶機(jī)。整個(gè)系統(tǒng)的結(jié)構(gòu)如圖1所示。
基于安全保密性考慮,試驗(yàn)現(xiàn)場服務(wù)器是唯一跟數(shù)據(jù)采集系統(tǒng)直接連接的計(jì)算機(jī),其任務(wù)是接受由數(shù)據(jù)采集計(jì)算機(jī)獲取的設(shè)備當(dāng)前的試驗(yàn)信息和試驗(yàn)數(shù)據(jù),然后傳送給設(shè)計(jì)部門服務(wù)器和試驗(yàn)現(xiàn)場客戶機(jī),設(shè)計(jì)部門服務(wù)器再將數(shù)據(jù)傳送給設(shè)計(jì)部門客戶機(jī)。所有客戶機(jī)和設(shè)計(jì)部門服務(wù)器與數(shù)據(jù)采集計(jì)算機(jī)之間都被作為堡壘主機(jī)的試驗(yàn)現(xiàn)場服務(wù)器隔離,即除試驗(yàn)現(xiàn)場服務(wù)器外所有其它計(jì)算機(jī)都不能直接訪問數(shù)據(jù)采集計(jì)算機(jī)。
由于試驗(yàn)現(xiàn)場服務(wù)器既要從數(shù)據(jù)采集計(jì)算機(jī)獲取實(shí)時(shí)的試驗(yàn)信息和試驗(yàn)數(shù)據(jù),還要將其同步分發(fā)到設(shè)計(jì)部門服務(wù)器和數(shù)個(gè)客戶機(jī),所以試驗(yàn)現(xiàn)場服務(wù)器應(yīng)具備迅速、高效的處理能力。另外,試驗(yàn)現(xiàn)場服務(wù)器需配備雙網(wǎng)卡來構(gòu)建成一個(gè)雙穴主機(jī),一塊用于連接測試系統(tǒng)的數(shù)據(jù)采集計(jì)算機(jī),另一塊跟園區(qū)網(wǎng)相連。這樣可以起到監(jiān)視和隔離應(yīng)用層信息流的作用,徹底隔離客戶機(jī)與數(shù)據(jù)采集計(jì)算機(jī)之間的連接??蛻魴C(jī)和設(shè)計(jì)部門服務(wù)器直接通過園區(qū)網(wǎng)與試驗(yàn)現(xiàn)場服務(wù)器連接,獲取數(shù)據(jù)。設(shè)計(jì)部門客戶機(jī)通過設(shè)計(jì)部門服務(wù)器獲取數(shù)據(jù)。
本軟件運(yùn)用了Windows網(wǎng)絡(luò)編程技術(shù),在網(wǎng)絡(luò)中利用TCP/IP協(xié)議通過客戶機(jī)/服務(wù)器模式,并采用基于消息的異步存取策略,使用數(shù)據(jù)傳送Socket(套接字)技術(shù)完成數(shù)據(jù)的遠(yuǎn)程實(shí)時(shí)發(fā)送、接收。服務(wù)器端Socket負(fù)責(zé)監(jiān)聽、應(yīng)答、接收和發(fā)送消息,而客戶端Socket是連接、應(yīng)答、接收和發(fā)送消息。網(wǎng)絡(luò)傳輸服務(wù)提供者(即網(wǎng)絡(luò)傳輸服務(wù)進(jìn)程)以dll的形式存在,在Windows操作系統(tǒng)啟動(dòng)時(shí)由服務(wù)進(jìn)程svchost.exe加載。當(dāng)Socket被創(chuàng)建時(shí),調(diào)用API函數(shù)Socket(在ws2_32.dll中),Socket函數(shù)會(huì)傳遞地址族、Socket類型和協(xié)議三個(gè)參數(shù),這三個(gè)參數(shù)決定了由哪個(gè)類型的網(wǎng)絡(luò)傳輸服務(wù)進(jìn)程來啟動(dòng)網(wǎng)絡(luò)傳輸服務(wù)功能。所有網(wǎng)絡(luò)通信都由網(wǎng)絡(luò)傳輸服務(wù)進(jìn)程完成,圖2描述了網(wǎng)絡(luò)應(yīng)用程序、CSocket(WinSocket32.dll)、Socket API(ws2_32.dll)和網(wǎng)絡(luò)傳輸服務(wù)進(jìn)程之間的接口層次關(guān)系。
圖2 各層次接口關(guān)系Fig.2 Interface relations
考慮到軟件需要占用系統(tǒng)資源小、響應(yīng)速度快等要求,采用了具有可視化開發(fā)環(huán)境和面向?qū)ο蟪绦蛟O(shè)計(jì)方法的Visual C++[1,2]進(jìn)行程序開發(fā),利用面向?qū)ο缶幊碳夹g(shù)、MFC技術(shù)[3]開發(fā)服務(wù)器端和客戶端應(yīng)用程序。
數(shù)據(jù)采集軟件運(yùn)行在與數(shù)據(jù)采集系統(tǒng)連接的計(jì)算機(jī)中,實(shí)現(xiàn)對(duì)數(shù)據(jù)采集系統(tǒng)的控制和試驗(yàn)數(shù)據(jù)的接受及處理,并且數(shù)據(jù)采集計(jì)算機(jī)同時(shí)與試驗(yàn)現(xiàn)場服務(wù)器相連。當(dāng)數(shù)據(jù)采集軟件啟動(dòng)后,主動(dòng)向服務(wù)器發(fā)出連接請(qǐng)求,一旦連接成功,數(shù)據(jù)采集軟件便將設(shè)備名稱、試驗(yàn)名稱、通道表、試驗(yàn)數(shù)據(jù)傳給試驗(yàn)現(xiàn)場服務(wù)器。數(shù)據(jù)采集軟件與試驗(yàn)現(xiàn)場服務(wù)器軟件通訊示意圖如圖3所示。
試驗(yàn)現(xiàn)場服務(wù)器作為與數(shù)據(jù)采集計(jì)算機(jī)和園區(qū)網(wǎng)信息交換的橋梁,一般長期運(yùn)行。服務(wù)器中的通訊控制軟件能顯示當(dāng)前與服務(wù)器正在通訊的試驗(yàn)設(shè)備的名稱和當(dāng)前試驗(yàn)的信息。這些信息由各試驗(yàn)設(shè)備數(shù)據(jù)采集計(jì)算機(jī)通訊軟件啟動(dòng)時(shí)傳給服務(wù)器。當(dāng)服務(wù)器通訊控制軟件啟動(dòng)時(shí),系統(tǒng)根據(jù)設(shè)定的允許連接的設(shè)備列表清單,主動(dòng)搜索當(dāng)前正在運(yùn)行的數(shù)據(jù)采集計(jì)算機(jī),且嘗試發(fā)出連接請(qǐng)求,一旦連接成功便將該設(shè)備添加到當(dāng)前正在運(yùn)行設(shè)備列表中,并獲取該設(shè)備的當(dāng)前試驗(yàn)信息。過程如圖4所示。
圖3 數(shù)據(jù)采集軟件與試驗(yàn)現(xiàn)場服務(wù)器軟件通訊示意圖Fig.3 Communication between data collection and server software
圖4 試驗(yàn)現(xiàn)場服務(wù)器與數(shù)采設(shè)備通訊示意圖Fig.4 Communication between test site server and data collection equipment
設(shè)計(jì)部門服務(wù)器作為試驗(yàn)現(xiàn)場服務(wù)器與設(shè)計(jì)部門客戶端進(jìn)行信息交換和信息分發(fā)的橋梁,也長期運(yùn)行。該服務(wù)器能接收并顯示試驗(yàn)現(xiàn)場服務(wù)器中的信息,并監(jiān)聽設(shè)計(jì)部門所有客戶端發(fā)出的請(qǐng)求信息和連接狀態(tài)。把從試驗(yàn)現(xiàn)場服務(wù)器上接收的信息根據(jù)設(shè)計(jì)部門客戶端的不同請(qǐng)求進(jìn)行分發(fā),傳送相應(yīng)數(shù)據(jù)到設(shè)計(jì)部門的各個(gè)客戶端。過程如圖5所示。
圖5 試驗(yàn)現(xiàn)場服務(wù)器與設(shè)計(jì)部門通訊示意圖Fig.5 Communication between test site server and design department
當(dāng)試驗(yàn)現(xiàn)場服務(wù)器接收到各設(shè)備試驗(yàn)信息后,服務(wù)器中的通訊軟件同時(shí)也在等待客戶端的連接請(qǐng)求。一旦有用戶遠(yuǎn)程請(qǐng)求訪問,服務(wù)器通訊軟件將首先檢查用戶的合法性。合法用戶的IP和MAC地址都羅列在服務(wù)器的一個(gè)設(shè)置的清單里,服務(wù)器通訊控制軟件只需檢驗(yàn)當(dāng)前請(qǐng)求訪問的用戶是否列入。如果“是”便建立網(wǎng)絡(luò)連接,按照用戶請(qǐng)求選擇的設(shè)備提供相應(yīng)的試驗(yàn)信息傳送給客戶端,并將用戶IP加入到當(dāng)前在線用戶列表中;如果“否”則視為非法用戶,拒絕其訪問,并記錄到日志中。另外,服務(wù)器端還能實(shí)時(shí)顯示各個(gè)客戶端的連接情況。
客戶端軟件用于實(shí)現(xiàn)接收、處理、顯示試驗(yàn)數(shù)據(jù)和特征曲線功能。試驗(yàn)現(xiàn)場客戶端軟件與試驗(yàn)現(xiàn)場服務(wù)器連接,設(shè)計(jì)部門客戶端軟件與設(shè)計(jì)部門服務(wù)器連接,分別針對(duì)不同用戶的需求以不同的形式顯示、查看試驗(yàn)數(shù)據(jù)和試驗(yàn)曲線。客戶端軟件先向服務(wù)器發(fā)出連接請(qǐng)求,一旦認(rèn)證成功便建立連接,此時(shí)客戶機(jī)接收從服務(wù)器發(fā)送來的當(dāng)前申請(qǐng)?jiān)囼?yàn)設(shè)備的試驗(yàn)信息??蛻舳私邮盏綌?shù)據(jù)后,根據(jù)用戶在客戶端的設(shè)置和配置要求對(duì)數(shù)據(jù)進(jìn)行處理,如各種動(dòng)態(tài)特性線的預(yù)處理、圖形顯示、報(bào)警處理等。用戶選擇申請(qǐng)的任意設(shè)備即可查看該設(shè)備的當(dāng)前試驗(yàn)信息和數(shù)據(jù),查看方式有列表、曲線、圖表等模式??蛻舳塑浖竟δ苋鐖D6、圖7所示。
客戶端軟件可在試驗(yàn)前根據(jù)用戶的需求配置和設(shè)置顯示的特性曲線,顯示的內(nèi)容和圖表位置均可任意調(diào)整。為了防止意外情況出現(xiàn)導(dǎo)致客戶端接收試驗(yàn)數(shù)據(jù)失敗,還開發(fā)有在服務(wù)器端數(shù)據(jù)庫暫時(shí)保存數(shù)據(jù)供事后查看的功能。軟件數(shù)據(jù)流程見圖8。
圖6 客戶端軟件基本功能Fig.6 Basic functions of client software
圖7 客戶端軟件界面Fig.7 Interface of client software
試驗(yàn)數(shù)據(jù)異地實(shí)時(shí)傳輸系統(tǒng)的應(yīng)用,極大地方便了身處異地的相關(guān)設(shè)計(jì)人員和項(xiàng)目管理人員參與現(xiàn)場試驗(yàn),觀看一個(gè)甚至多個(gè)試驗(yàn)情況。該系統(tǒng)的投入使用,為設(shè)計(jì)人員和項(xiàng)目管理人員節(jié)省了寶貴的工作時(shí)間,節(jié)省了大量的人力、物力、財(cái)力。同時(shí),利用先進(jìn)的網(wǎng)絡(luò)信息化技術(shù)來解決兩地問題,對(duì)院異地辦公的現(xiàn)狀也起到了很好的示范作用。
[1]黃迪明.C++程序設(shè)計(jì)基礎(chǔ)[M].北京:電子工業(yè)出版社,2004.
[2]羅 斌.Visual C++編程技巧精選[M].北京:中國水利水電出版社,2005.
[3]姚領(lǐng)田.精通MFC程序設(shè)計(jì)[M].北京:人民郵電出版社,2006.