周云飛 李芳 安政 閆斐 鄧越萍 史明 王金策



【摘 要】 在瓦斯安全預測中,依據監測數據隨時間的變化建立時間序列預測模型,并預測未來瓦斯危險因素的變化。本文利用C#和Matlab混合編程技術將Matlab集成化算法程序文件編譯為動態鏈接庫(DLL),C#在代碼中調用生成的DLL中的函數,實現預測瓦斯濃度計算模塊,建立煤礦瓦斯預警系統的預測模型。根據監測到的歷史數據分析并預測瓦斯所存在的風險級別。
【關鍵詞】 Matlab;混合編程;時間序列;瓦斯預測
瓦斯預警技術的運用為煤礦建立起信息集成系統,可全面提升煤礦的安全管理水平。本文以西山煤電某煤礦為例,通過C#和Matlab混合編程完成系統計算模塊,構建預警系統,對煤礦瓦斯方面有一定現實意義。
1預測模型
時間序列預測隨時間變化收集瓦斯濃度數據來預測礦井未來瓦斯的涌出濃度,方法簡便且實用;灰色系統可以不考慮井下煤層地質條件的復雜性,只是利用瓦斯涌出資料等有限信息,借助灰色預測模型進行研究。因此,本系統應用時間序列預測模型進行計算分析。
時間序列是隨時間改變而隨機變化的序列。本文嘗試運用時間序列分析中被廣泛應用的ARMA方法對瓦斯的濃度進行預測,并探討使用此模型進行瓦斯濃度預測的可行性。
2 C#與Matlab混合編程
C#是一種最新的、面向對象的編程語言,可編寫各種基于Microsoft.NET平臺的應用程序。C#作為一門易學易用的編程語言,其執行速度相對較快,界面友好。利用C#開發數據采集系統應用界面,調用Matlab編寫的數據處理子程序,可實現應用系統的快速開發。因此實現C#與Matlab混合編程,可以為科研工作和工程應用提供有力的技術支持。
Matlab提供了與C#的程序接口,是先封裝MATLAB程序為dll文件,把dll文件放到bin或者應用程序目錄里,實現在C#中調用Matlab編寫程序。本項目C#與Matlab混合編程方面主要借助visual studio 2010與Matlab的接口,將Matlab的程序文件(ARMA.M)編譯為動態鏈接庫(DLL),然后在vs 2010中進行引用,便可以在vs 2010中調用其封裝生成的DLL中的函數,實現算法。其基本思路如圖1所示:
算法一中armax是matlab中arma模型估計算法,aic是模型評價算法。算法二中,estimate是matlab中arma模型參數估計算法;forecast是matlab中arma模型預測算法。
在程序代碼中直接調用聲明的函數后,需注意函數調用過程中的參數傳遞問題,注意調試,不要修改調用文件。
3系統界面設計
本文在時間序列預測模型的基礎上,建立煤礦瓦斯安全預警集成系統,主要對瓦斯濃度數據進行分析,根據瓦斯濃度對瓦斯危險級別作出5級預警(A-E)。
3.1系統用戶管理
3.1.1瓦斯預警登錄
預警指標分為突出預警指標,針對不同的瓦斯濃度突出情況,系統顯示不同的預警等級。
此程序界面在登錄成功后會進入到瓦斯預警數據輸入界面,如輸入用戶名或密碼總是錯誤,登錄三次仍然失敗,界面會提示用戶輸入失敗次數過多,直接退出程序,顯示如圖6所示。
A級預警級別最高,預示瓦斯濃度危險級別最大,E級預警級別最低,預示瓦斯濃度相對較低。應根據不同預警級別采取相應措施保證煤礦工作面安全生產。
4結論
以某煤業公司煤層工作面為例,依據時間的變化來預測未來瓦斯危險因素的變化情況,建立時間序列預測模型。選用C#語言編程,利用C#-Matlab混合編程技術將Matlab程序文件(M)編譯為動態鏈接庫(DLL),C#在代碼中調用生成的DLL中的函數,實現預測瓦斯濃度計算,根據不同瓦斯濃度判別煤礦工作面5種風險級別。
【參考文獻】
[1]閆夏.基于預測模型的預警集成系統在瓦斯安全管理中的應用[D].太原:太原理工大學, 2010.
[2]劉西青.論國內煤礦瓦斯監測監控系統現狀與發展[J].山西焦煤科技,2006(3):37-40.
[3]張延波,王金國.運用神經網絡預測礦井瓦斯涌出量方法的探討[J].江西煤炭科技,2004(3):26-27.
[4]韓路躍,杜行檢.基于MATLAB的時間序列建模與預測[J].計算機仿真,2005(4):105-107,182.
[5]李博偉,許飛云,楊會超.RBF-BL時間序列模型及在建模和預測中的應用[J].東南大學學報(自然科學版),2020,50(2):368-376.
[6]邵海見,鄧星.基于RBF神經網絡結構選擇方法的Mackey-Glass與Lorenz混沌時間序列預測建模[J].江蘇科技大學學報(自然科學版),2018,32(5):701-706.
[7]朱志松.VB與MATLAB混合編程探討[J].電子技術應用,2003(2):6-17.
[8]蘇金明,阮沈勇.Matlab6實用指南[M].北京:電子工業出版社,2003.