?

基于Visual C++的艦船水消防系統仿真研究

2008-04-24 05:44邱金水,易祥烈,吳曉輝
中國艦船研究 2008年6期
關鍵詞:消防泵消防栓艦船

1 引 言

鑒于艦船取得海水的方便性和供水的持續性,水消防系統是艦船最常用的也是最重要的滅火系統,是保障艦船生命力的重要系統。英美等國將水消防系統稱為高壓海水系統(HPSW)。如果消防系統的損傷導致系統不能有效地發揮作用甚至導致系統癱瘓,那將給艦艇生命力帶來嚴重的危害。艦船水消防系統生命力仿真與評估主要是先對水消防系統進行仿真,分析其薄弱環節,可以對艦船水消防系統的設計進一步優化,有利于提高艦船生命力。同時,對水消防系統的仿真,可以很直觀地指導日常消防訓練,因此,加強艦船水消防系統仿真研究對于保障艦船生命力具有重要意義[1]。

艦船水消防系統仿真沒有現成的仿真軟件可以使用,Simulink是一個圖形化的建模仿真工具[2],它能進行電子、電路、控制工程、信號處理等領域的仿真,具有建模方便靈活的特點,越來越廣泛地被應用于控制系統的設計和仿真[3]。由于半物理仿真系統需要連接特定的硬件設備、定制控制軟件等,這部分功能的實現對于Simulink來講則顯得能力不足,而這恰恰是Visual C++的強項。VC是可視化C++編程環境具有強大的硬件控制功能和靈活豐富的人機界面設計功能[4]。C++語言是一種應用非常廣泛的面向對象的程序設計語言,使用它可以實現面向對象的編程。而Visual C++ Studio 2005編程環境作為一種非常高端的編程環境,融合各種編程環境的優點而成為一種編碼效率非常高、界面非常友好、使用非常方便的環境[5]。本文嘗試將Visual C++應用到艦船水消防系統的仿真研究中,收到良好的效果。

2 建立仿真模型

為了合理地建立艦船水消防系統仿真模型,在建模分析中必須做一些假設和簡化處理。

假設海水是理想流體,根據伯努利方程:

P+ρV2/2+ρ·g·h=C

其中:P為水壓,MPa;V為水的流速,m/s;ρ為水的密度(1 t /m3),g為重力加速度(取9.8 m/s2),C為常數。而在實際的水消防系統中,由于水壓比ρ·g·h的值要大很多而可以忽略不計。由于各主消防水管截面大小都相同,各支管的截面大小都相同,根據伯努利方程可得以下推論:任意被測點只要與消防泵相連接,被測點的水壓就與消防泵的水壓相等;任意被測點只要與消防泵相連接,被測點的流量大小根據截面大小對消防泵的流量進行平分。

艦船水消防系統從原理上講其實就是水系統,而水系統與電力系統有著原理上的相似性[6]。水消防系統的仿真通過用電力系統的仿真軟件得以實現。用電力系統來實時仿真水消防系統,就必須同時用2套電力系統仿真。其中一套系統將消防泵視為電壓源,用來觀測消防栓上的水壓;另一套將電流源視為消防泵,用來觀測消防栓上的流量。做以下假設:

1) 消防泵用電壓源或電流源代替,啟動按鈕用開關代替,海底門用接地代替,并將以上電氣元件封裝成XFB子系統[7];

圖1 與消防泵等價的電路圖

2) 消防栓用電阻代替,啟動閥用開關代替,電阻另一端接地,將以上電氣元件封裝成XFS子系統;

圖2 與消防栓等價的電路圖

3) 消防水管用導線代替;

4) 隔離閥用開關代替;

5) 壓力表用電壓表代替,其一端接地,另一端接于被測點;

6) 流量計用電流表表示;

7) 破損假設:水管破損可用開關一端接地,另一端接于導線上,消防泵破損只要將電源開關打開,使其不能運轉;

圖3 與水管破損等價的電路圖

8) 數據顯示,如果是考慮流量,只要將電流源代替消防泵,電流表代替流量計即可;考慮工作壓力,用電壓源代替消防泵,電壓表代替壓力表即可[8]。

3 生成C++代碼

RTW是一個基于Simulink的代碼自動生成環境,它能直接從Simulink的模型中產生優化的、可移植的和個性化的代碼[9]。RTW支持多種目標,對于VC而言有三種目標可以選擇:通用實時(GRT)目標、通用實時Malloc(GRTM)目標及嵌入式目標。嵌入式目標可按嵌入式代碼格式生成C++代碼,在運行速度、內存使用量和簡化等方面都進行了優化,嵌入式代碼采用靜態內存分配方式。在此因仿真的需要選擇了嵌入式目標來自動生成嵌入式代碼。

根據第2節中的假設,就可建立2個電力系統的結構圖,程序調試通過后,RTW就能把Simulink模型中的某些參數或信號設置為全局變量。模型自動生成的可執行代碼在目標系統中運行時,可以方便地與Simulink模型交互,實現在線參數調整和信號通訊[10]。利用RTW這種功能,可把模型中需要調整、監測的參數或者信號設置為全局變量。具體操作方法是:在Simulink模型中選中需要設置的信號,點擊右鍵選取Signal Properties...菜單,彈出圖4所示的對話框,把信號設置為全局變量。

圖4 信號屬性設置圖

RTW自動生成的代碼分為兩部分:一部分是模型代碼;另一部分是代碼運行界面(run-time interface)。這些代碼被切分成很多源代碼文件,為了管理這個龐大的項目,RTW還為其自動生成了一個make文件。用VC打開make文件并編譯,然后將此項目中引用的所有源文件從Matlab安裝目錄中復制出來,并和模型代碼共同組成仿真模型代碼。模型代碼中關鍵的函數構成了仿真模型代碼同VC程序交互的接口[11],如圖5所示。

圖5 仿真運算模塊接口函數

4 模型代碼和VC程序的集成

模型代碼同VC程序整合過程相對簡單些。把仿真運算模塊所有涉及的源文件添加到VC程序項目中,同時要注意:仿真模塊的源文件添加到VC程序項目后默認應用預編譯頭文件選項,必須手工取消此項設置,否則編譯出錯。

半物理仿真軟件一般由人機界面模塊、數據采集模塊、仿真運算模塊、數據處理模塊組成。水消防系統半物理仿真系統原理如圖6所示。

圖6 水消防系統半物理仿真系統原理框圖

人機界面模塊的實現:人機界面模塊構成了VC程序的主線程,主要完成變量的實時顯示、參數在線調整、控制參數設置和程序的運行控制等功能,其它模塊都由它來調度本系統中涉及的實時變量,有消防泵壓力、消防泵流量、消防栓壓力、消防栓流量以及隔離閥狀態和管系狀態等?;谧尳缑娓押玫目紤],分別設計了消防泵、消防栓、隔離閥、提示框、功能按鈕等圖元,充分利用面向對象方法的封裝、繼承等特點實現整個圖元庫,從而提高了軟件系統的可修改性、可重用性和可擴展性。

仿真運算模塊的實現:仿真運算模塊在RTW轉化的仿真模型代碼基礎上還要加入仿真同步控制,以滿足仿真的實時性要求。多媒體定時器每隔2 ms就在其回調函數中調用模型代碼接口函數rt_OneStep(模型單步運算),保證了整個仿真的向前推進,滿足了系統實時性要求。仿真運算模塊完成模型實時計算是整個系統的核心。

數據處理模塊的實現:數據處理模塊完成仿真數據的實時記錄和定時保存功能。為了滿足數據記錄的實時性,仿真程序采用了多線程技術。一方面數據通過鼠標所指的器件提示對應屬性,另一方面通過系統下面的編輯框顯示各器件的屬性,還有就是通過各器件的屬性,統計消防栓可以正常工作的個數以及完好率。

5 結 論

本文結合實例詳細介紹了一種基于Visual C++的艦船水消防系統仿真方法,該方法充分利用了Visual C++的強大優勢。首先將水消防系統等價為電力系統,利用Simulink建立系統的仿真模型,然后通過RTW將仿真模型轉化成可移植的嵌入式C++代碼,最后利用Visual C++靈活的可定制性和強大的界面功能實現了完全獨立運行的實時半物理仿真系統,此方法具有費用低、效率高的特點。

參考文獻:

[1] 浦金云,金濤,邱金水,等.艦船生命力[M].北京:國防工業出版社,2008.

[2] 馮少沖,朱元昌,邸彥強,等.用Simulink實現模擬訓練系統的解算引擎[J].電光與控制,2008,15(5):84-87.

[3] 管文良,康鳳舉,唐凱,等.Simulink與Windows程序間實時交互的研究[J].計算機仿真,2006(3):5-7.

[4] David Kruglinski.Visual C++.NET技術內幕[M](第六版).北京:清華大學出版社,2004.

[5] 樊曉丹,孫應飛,李衍達.一種基于RTW的實時控制系統快速開發方法[J].清華大學學報:自然科學版,2003,43(7):895-898.

[6] 李建平,石全,甘茂治.裝備戰場損傷搶修理論與應用[M].北京:兵器工業出版社,2000.

[7] 曹冬華,浦金云.虛擬現實技術在船舶火災領域的應用[J].船海工程,2005,10(5):8-10.

[8] 叢北華,廖光煊,韋亞星.計算機模擬在火災科學與工程研究中的應用[J].防災減災工程學報,2003,23(2):63-69.

[9] 李長文,趙長祿,張付軍,等.基于Matlab/Simulink及RTW的柴油機瞬態建模與仿真[J].北京理工大學學報,2004,24(7):579-582.

[10] 馮磊,姚新宇.利用C-API的基于RTW實時仿真系統在線調參[J].兵工自動化,2006,25(1):87-88.

[11] 王先澤,劉志勤,陳懷民,等.基于RTW ERT/VxWorks的實時仿真方法實現[J].計算機技術與發展,2008,18(2):209-212.

猜你喜歡
消防泵消防栓艦船
艦船通信中的噪聲消除研究
消防泵標準解析及低比轉速消防泵設計思路探討
基于PLC消防泵自動巡檢系統的設計與實現
艦船測風傳感器安裝位置數值仿真
超高消防栓(大家拍世界)
基于SOLAS 74公約的消防泵配置分析
依據規范的貨船消防泵設計和布置
艦船腐蝕預防與控制系統工程
一種消防栓
臺日艦船對峙內幕曝光
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合