摘要:在一定假設的基礎上,建立了武器裝備穩態可用度仿真計算模型,利用MATLAB6.5工程計算軟件編制了仿真計算程序,借助Visual Basic6.0編程語言制作了前端交互界面,并通過Windows操作系統特有的動態數據交換(DDE)機制實現了數據的傳輸。
關鍵詞:可用度;仿真計算;動態數據交換
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)23-983-02
A Method and Program Realization of the Emulation Calculate on the Steady Available of the Weapon Equipment
ZHANG Cheng-li, LI Xiu-liang, REN Yu, CAO Jian
(Artillery Academy of PLA, Hefei 230031, China)
Abstract: In basic of a hypothesis, a emulation calculate mode about the steady available of the weapon equipment was formed. Emulation calculate process was compiled by using MATLAB6.5 engineering calculate software. A front-alternating interface was made in virtue of Visual Basic6.0 program language, and the data transfers was realized by using DDE of Windows operating system.
Key words: available; emulation calculate; dynamic data exchange
1 提出問題
武器裝備在任一隨機時刻需要和開始執行任務時,處于可工作或可使用狀態的程度稱為可用性,可用度則是可用性的概率度量。可用度是裝備可靠性和維修性的綜合反映,是裝備系統分析的重要參數之一。其數值計算往往受到諸如部件數量繁多、位置關系復雜、試驗消耗大等因素的影響,而現在多采用的馬爾可夫型可修復系統穩態可用度手工計算模型,步驟多,計算較繁瑣。這里采用建模與仿真的辦法來解決這類實際問題。
2 建立模型
2.1 基本理論
蒙特卡羅仿真方法的理論基礎是大數定律,其形式之一是柏努里定理,即:在相同條件下進行無限次獨立試驗時,事件出現的頻率收斂于事件出現的概率。
式中: A——隨機事件;
fn(A)——n次試驗中事件A出現的頻率;
p——事件 出現的概率;
α——任一趨于零的小整數。
2.2 穩態可用度仿真計算模型
統計N次故障前裝備可用(能工作)時間Ui和發生故障后因維修等原因而產生的不可用(不能工作)時間Di,當N→∞時,其穩態可用度的數學表達式記為:
由上式可知,在實際工作中,尋求武器裝備穩態可用度最可靠的方法是:對特定的對象進行持續地跟蹤調查,作好記錄,一段時間之后匯總數據,利用相關公式(如馬爾可夫法)進行解算。顯然這樣的方法費時費力。
為方便建立模型,這里假設:
1)武器裝備不可用時間為排除故障的維修時間,其中包含為排除故障而產生的延誤時間(如管理延誤時間)和裝備升級更新的時間,其它時間裝備均處于穩定可用狀態;
2)故障發生時間間隔與排除該故障的維修時間間隔均服從指數分布,分布系數根據經驗值或統計數據確定。
根據假設條件結合對公式的應用分析,容易看出在一定時間內,武器裝備處于兩種互斥的狀態:可用狀態和不可用狀態。在程序中通過隨機試驗,模擬裝備使用、發生故障和排除故障的全過程,利用模擬生成的隨機事件推進仿真時鐘并進行統計計算,仿真結束后,統計相關數據,最終將穩態可用度表示為n次模擬仿真某一給定仿真時間內仿真時長T與不可用時長(維修時間)D之差與仿真時長 之比的平均值。即仿真計算模型的數學表達式為:
(3)
通過進行多次模擬,可提高計算精度和控制隨機誤差。
3 流程設計與程序實現
3.1 流程設計
根據上述模型和假設,武器裝備穩態可用度仿真計算程序流程如圖1所示。
3.2程序實現
以Basic 語言為基礎的Microsoft Visual Basic6.0中文版編程軟件具有很強的前臺界面程序開發能力,具有上手快,易操作的特點,但是其數學計算功能有限;而MATLAB6.5是一款功能強大的工程計算軟件,包含了內容豐富的數學函數庫,可以完成各種數學邏輯運算,在仿真計算方面應用較為廣泛,但是其可視化界面開發功能較弱。在程序設計中,應用Microsoft Visual Basic6.0編程軟件制作用戶可視化交互界面,作為用戶前端,應用MATLAB工程計算軟件編制了模擬仿真計算程序,作為后臺處理端。
由于以上兩種軟件基于的計算機編程語言不同(MATLAB6.5基于C語言),所以兩者之間無法直接進行數據傳輸,這將給數據地輸入與仿真結果地輸出帶來困難。但是應用動態數據交換(DDE)機制,這一問題將迎刃而解。所謂動態數據交換DDE(Dynamic Data Exchange)是指在Windows操作系統中允許各應用程序之間交換數據的通信機制。MATLAB提供了一些實現動態數據交換(DDE)的函數,借助它們,Windows應用程序就能夠與MATLAB進行通信,實現數據交換。
在程序實現過程中,首先分別使用VB編程軟件制作可視化交互界面,MATLAB工程計算軟件編寫后臺仿真計算程序,然后在VB源程序中利用DDE編寫軟件通信程序,通過DDE函數“告訴”兩端程序采用何種機制進行怎樣通信,即實現VB前端交互式界面與MATLAB后臺仿真計算程序之間的實時數據交換,例如,以下代碼表示將VB控件Label6的值傳輸給后臺MATLAB作為計算參數,仿真計算結束后,在控件Label9中輸出結果:
Label6.LinkMode = vbLinkNone
Label6.LinkTopic = \"MATLAB|Engine\"‘調用MATLAB通信引擎
Label6.LinkItem = \"EngEvalString\"
Label6.LinkMode = vbLinkManual‘定義與MATLAB的連接模式
szcommand = Label6.Caption
Label6.LinkExecute szcommand‘將控件值傳給后臺計算程序
Label9.LinkTopic = \"MATLAB|Engine\"
Label9.LinkItem = \"EngStringResult\" ‘將計算結果賦予控件Label6
Label9.LinkMode = vbLinkManual
Label9.LinkRequest‘發送通信請求
這樣就可以順利完成從前端數據輸入,數據傳輸,后端仿真計算并最終將計算結果輸出到前端可視化界面的仿真計算全過程。
4 應用示例
假設根據以往數據顯示,某型經緯儀平均每200小時發生一次故障(即故障系數為200)每次排除故障平均要3小時(即維修系數為3),利用程序模擬計算900次,設定每次仿真時間為1000小時,可求得其平均可用度為0.9821,結果如圖2所示。
參考文獻:
[1] 汪倫根.炮兵武器裝備技術保障[M].北京:解放軍出版社,2003.
[2] 蘇金明.MATLAB高級編程[M].北京:電子工業出版社,2005.
[3] 溫小敏.Visual Basic數據庫系統項目開發實踐[M].北京:科學出版社,2005.
[4] 郝杰忠.裝備技術保障運籌分析[M].北京:國防工業出版社,2006.