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