何琳楠
(中國燃氣渦輪研究院,四川 成都610500)
航空發動機試驗研究設備眾多,其中不少為大型試驗設備,試驗時需耗費大量的水、電、氣等資源,并產生較大噪聲,這些因素決定了其只能在人口較為稀少的郊區甚至偏遠的山區。而航空發動機設計則需要占用很多信息資源,一般都在信息暢通、社會資源豐富且能吸引人才的市區。中國燃氣渦輪研究院作為一家主要從事航空發動機設計和試驗研究的單位,其試驗部門和設計部門分屬兩地且相距較遠。在開發本系統之前,相關設計人員和項目管理人員如果要看到試驗過程就必須前往異地試驗現場。這對于工作任務繁忙的設計人員和項目管理人員異常辛苦,同時也耗費了大量的人力、物力、財力。為了方便設計人員和項目管理人員能夠遠程參與試驗現場的試驗,觀看當前試驗的測試數據,并能夠根據需要分析不同的數據曲線,依托于已建成的園區網,開發了試驗數據異地實時傳輸系統。
目前,網絡通訊軟件的編程設計一般采用基于TCP/IP或UDP的網絡傳輸協議,有C/S和B/S等架構模式。相對來說,使用UDP協議傳輸有速度快的特點,但在可靠性、穩定性和安全性等方面遠不如TCP/IP協議,所以對于實時性、可靠性要求較高的場合一般選擇使用TCP/IP協議。在開發方式上,B/S架構主要是利用web瀏覽器來訪問服務器,適用于進行一些簡單的處理和查詢;C/S架構具有更高的操作自由度和靈活性。本系統選擇C/S架構模式,采用TCP/IP網絡傳輸協議進行開發。
該系統分為試驗現場和設計部門兩個部分。試驗現場的系統分成三個部分:測試系統的數據采集計算機、試驗現場服務器、客戶機。設計部門的系統有兩個部分:設計部門服務器、客戶機。整個系統的結構如圖1所示。

基于安全保密性考慮,試驗現場服務器是唯一跟數據采集系統直接連接的計算機,其任務是接受由數據采集計算機獲取的設備當前的試驗信息和試驗數據,然后傳送給設計部門服務器和試驗現場客戶機,設計部門服務器再將數據傳送給設計部門客戶機。所有客戶機和設計部門服務器與數據采集計算機之間都被作為堡壘主機的試驗現場服務器隔離,即除試驗現場服務器外所有其它計算機都不能直接訪問數據采集計算機。
由于試驗現場服務器既要從數據采集計算機獲取實時的試驗信息和試驗數據,還要將其同步分發到設計部門服務器和數個客戶機,所以試驗現場服務器應具備迅速、高效的處理能力。另外,試驗現場服務器需配備雙網卡來構建成一個雙穴主機,一塊用于連接測試系統的數據采集計算機,另一塊跟園區網相連。這樣可以起到監視和隔離應用層信息流的作用,徹底隔離客戶機與數據采集計算機之間的連接??蛻魴C和設計部門服務器直接通過園區網與試驗現場服務器連接,獲取數據。設計部門客戶機通過設計部門服務器獲取數據。
本軟件運用了Windows網絡編程技術,在網絡中利用TCP/IP協議通過客戶機/服務器模式,并采用基于消息的異步存取策略,使用數據傳送Socket(套接字)技術完成數據的遠程實時發送、接收。服務器端Socket負責監聽、應答、接收和發送消息,而客戶端Socket是連接、應答、接收和發送消息。網絡傳輸服務提供者(即網絡傳輸服務進程)以dll的形式存在,在Windows操作系統啟動時由服務進程svchost.exe加載。當Socket被創建時,調用API函數Socket(在ws2_32.dll中),Socket函數會傳遞地址族、Socket類型和協議三個參數,這三個參數決定了由哪個類型的網絡傳輸服務進程來啟動網絡傳輸服務功能。所有網絡通信都由網絡傳輸服務進程完成,圖2描述了網絡應用程序、CSocket(WinSocket32.dll)、Socket API(ws2_32.dll)和網絡傳輸服務進程之間的接口層次關系。

圖2 各層次接口關系Fig.2 Interface relations
考慮到軟件需要占用系統資源小、響應速度快等要求,采用了具有可視化開發環境和面向對象程序設計方法的Visual C++[1,2]進行程序開發,利用面向對象編程技術、MFC技術[3]開發服務器端和客戶端應用程序。
數據采集軟件運行在與數據采集系統連接的計算機中,實現對數據采集系統的控制和試驗數據的接受及處理,并且數據采集計算機同時與試驗現場服務器相連。當數據采集軟件啟動后,主動向服務器發出連接請求,一旦連接成功,數據采集軟件便將設備名稱、試驗名稱、通道表、試驗數據傳給試驗現場服務器。數據采集軟件與試驗現場服務器軟件通訊示意圖如圖3所示。
試驗現場服務器作為與數據采集計算機和園區網信息交換的橋梁,一般長期運行。服務器中的通訊控制軟件能顯示當前與服務器正在通訊的試驗設備的名稱和當前試驗的信息。這些信息由各試驗設備數據采集計算機通訊軟件啟動時傳給服務器。當服務器通訊控制軟件啟動時,系統根據設定的允許連接的設備列表清單,主動搜索當前正在運行的數據采集計算機,且嘗試發出連接請求,一旦連接成功便將該設備添加到當前正在運行設備列表中,并獲取該設備的當前試驗信息。過程如圖4所示。

圖3 數據采集軟件與試驗現場服務器軟件通訊示意圖Fig.3 Communication between data collection and server software

圖4 試驗現場服務器與數采設備通訊示意圖Fig.4 Communication between test site server and data collection equipment
設計部門服務器作為試驗現場服務器與設計部門客戶端進行信息交換和信息分發的橋梁,也長期運行。該服務器能接收并顯示試驗現場服務器中的信息,并監聽設計部門所有客戶端發出的請求信息和連接狀態。把從試驗現場服務器上接收的信息根據設計部門客戶端的不同請求進行分發,傳送相應數據到設計部門的各個客戶端。過程如圖5所示。

圖5 試驗現場服務器與設計部門通訊示意圖Fig.5 Communication between test site server and design department
當試驗現場服務器接收到各設備試驗信息后,服務器中的通訊軟件同時也在等待客戶端的連接請求。一旦有用戶遠程請求訪問,服務器通訊軟件將首先檢查用戶的合法性。合法用戶的IP和MAC地址都羅列在服務器的一個設置的清單里,服務器通訊控制軟件只需檢驗當前請求訪問的用戶是否列入。如果“是”便建立網絡連接,按照用戶請求選擇的設備提供相應的試驗信息傳送給客戶端,并將用戶IP加入到當前在線用戶列表中;如果“否”則視為非法用戶,拒絕其訪問,并記錄到日志中。另外,服務器端還能實時顯示各個客戶端的連接情況。
客戶端軟件用于實現接收、處理、顯示試驗數據和特征曲線功能。試驗現場客戶端軟件與試驗現場服務器連接,設計部門客戶端軟件與設計部門服務器連接,分別針對不同用戶的需求以不同的形式顯示、查看試驗數據和試驗曲線??蛻舳塑浖认蚍掌靼l出連接請求,一旦認證成功便建立連接,此時客戶機接收從服務器發送來的當前申請試驗設備的試驗信息??蛻舳私邮盏綌祿螅鶕脩粼诳蛻舳说脑O置和配置要求對數據進行處理,如各種動態特性線的預處理、圖形顯示、報警處理等。用戶選擇申請的任意設備即可查看該設備的當前試驗信息和數據,查看方式有列表、曲線、圖表等模式??蛻舳塑浖竟δ苋鐖D6、圖7所示。
客戶端軟件可在試驗前根據用戶的需求配置和設置顯示的特性曲線,顯示的內容和圖表位置均可任意調整。為了防止意外情況出現導致客戶端接收試驗數據失敗,還開發有在服務器端數據庫暫時保存數據供事后查看的功能。軟件數據流程見圖8。

圖6 客戶端軟件基本功能Fig.6 Basic functions of client software

圖7 客戶端軟件界面Fig.7 Interface of client software

試驗數據異地實時傳輸系統的應用,極大地方便了身處異地的相關設計人員和項目管理人員參與現場試驗,觀看一個甚至多個試驗情況。該系統的投入使用,為設計人員和項目管理人員節省了寶貴的工作時間,節省了大量的人力、物力、財力。同時,利用先進的網絡信息化技術來解決兩地問題,對院異地辦公的現狀也起到了很好的示范作用。
[1]黃迪明.C++程序設計基礎[M].北京:電子工業出版社,2004.
[2]羅 斌.Visual C++編程技巧精選[M].北京:中國水利水電出版社,2005.
[3]姚領田.精通MFC程序設計[M].北京:人民郵電出版社,2006.