基于ARM的煤礦瓦斯涌出量預(yù)測(cè)系統(tǒng)的設(shè)計(jì)
1 總體設(shè)計(jì)
瓦斯傳感器將被測(cè)物理量瓦斯涌出量轉(zhuǎn)換成電信號(hào),經(jīng)過(guò)A/D轉(zhuǎn)換采樣,轉(zhuǎn)換成數(shù)字信號(hào),在ARM處理器中處理?;贏RM920T內(nèi)核的S3C2440核心板帶有內(nèi)置STN/CSTN/TFT LCD控制器,支持1 024×768分辨率以下的各種液晶,用于顯示預(yù)測(cè)信息、檢測(cè)量、檢測(cè)時(shí)間等。內(nèi)置4線制電阻式觸摸屏控制器,用于用戶(hù)與系統(tǒng)的交互,也可以通過(guò)鍵盤(pán)對(duì)系統(tǒng)參數(shù)等進(jìn)行設(shè)置。100 Mbit/s 以太網(wǎng)控制器,用于與上位PC的雙向信息傳遞。系統(tǒng)的軟件開(kāi)發(fā)是在Fedora Linux環(huán)境下基于QT設(shè)計(jì)的。QT是挪威的Trolltech 公司開(kāi)發(fā)的一個(gè)開(kāi)源的、跨平臺(tái)的C++圖形用戶(hù)界面應(yīng)用程序框架。它提供給應(yīng)用程序開(kāi)發(fā)者建立藝術(shù)級(jí)的圖形用戶(hù)界面所需的所用功能。QT完全面向?qū)ο螅苋菀讛U(kuò)展,并且允許真正地組件編程。系統(tǒng)依據(jù)分源法[1,2]將礦井各個(gè)開(kāi)采面分為不同的瓦斯涌出源,建立瓦斯分源預(yù)測(cè)模型,經(jīng)過(guò)換算得到預(yù)測(cè)數(shù)據(jù)并顯示。系統(tǒng)結(jié)構(gòu)如圖1所示。
2 硬件設(shè)計(jì)
2.1 芯片及存儲(chǔ)器設(shè)計(jì)
系統(tǒng)選用了三星公司基于ARM 9 內(nèi)核的S3C2440嵌入式處理器。S3C2440被廣泛應(yīng)用于PDA、移動(dòng)通信、路由器、工業(yè)控制等領(lǐng)域, 芯片中集成了下列模塊: 16 KB指令Cache、16 KB數(shù)據(jù)Cache、MMU、外部存儲(chǔ)器控制器、LCD控制器、NAND Flash控制器、4通道PWM 定時(shí)器和1個(gè)內(nèi)部定時(shí)器、168腳通用GPIO、實(shí)時(shí)時(shí)鐘、8通道10 bit的AD和觸摸屏接口、標(biāo)準(zhǔn)20 pin JTAG調(diào)試接口等。存儲(chǔ)器方面采用標(biāo)準(zhǔn)的64 MB Nand-Flash用于數(shù)據(jù)存儲(chǔ)和64 MB SDRAM用于程序的運(yùn)行。
2.2 A/D采樣、顯示和接口設(shè)計(jì)
A/D轉(zhuǎn)換單元采用MAX1297AEEG實(shí)現(xiàn)12位并行模數(shù)轉(zhuǎn)換,直接與核心板的I/O線連接,如圖2所示。由于S3C2440自帶有LCD控制器,所以免去了LCD控制器的設(shè)計(jì),顯示屏采用NEC公司的3.5寸的壓電式觸摸LCD,分辨率為240×320。以太網(wǎng)接口采用TC3097F-5芯片。
3 軟件設(shè)計(jì)
3.1 BootLoader的移植
BootLoader是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。大多數(shù)BootLoader都分為Stage1 和Stage2 兩大部分。Stage1主要包含依賴(lài)于CPU的體系結(jié)構(gòu)硬件初始化的代碼,通常都用匯編語(yǔ)言來(lái)實(shí)現(xiàn)。這個(gè)階段的任務(wù)有:(1)為基本的硬件設(shè)備初始化;(2)為第二階段準(zhǔn)備RAM空間;(3)設(shè)置堆棧并跳轉(zhuǎn)到第二階段的程序入口點(diǎn)。Stage2通常用C語(yǔ)言完成,以便實(shí)現(xiàn)更復(fù)雜的功能,也使程序有更好的可讀性和可移植性。這個(gè)階段的任務(wù)有:(1)初始化本階段要使用到的硬件設(shè)備,檢測(cè)系統(tǒng)內(nèi)存映射;(2)將內(nèi)核映像和根文件系統(tǒng)映像從Flash讀到RAM;(3)為內(nèi)核設(shè)置啟動(dòng)參數(shù),調(diào)用內(nèi)核。系統(tǒng)采用韓國(guó)MIZI公司開(kāi)發(fā)的開(kāi)源BootLoader, 即vivi,對(duì)vivi進(jìn)行必要的裁剪并移植到系統(tǒng)當(dāng)中。[!--empirenews.page--]
3.2 Linux內(nèi)核的移植[5]
由于系統(tǒng)包括數(shù)據(jù)的分析、系統(tǒng)間的通信及與上位機(jī)的交互等功能的綜合,所以考慮加入操作系統(tǒng),以便更好地管理和分配資源。系統(tǒng)采用最新的Linux 2.6.14內(nèi)核,內(nèi)核的移植較為復(fù)雜,主要包括Makefile文件的修改(如設(shè)置交叉編譯的路徑、flash分區(qū)的設(shè)置等)和配置內(nèi)核編譯項(xiàng)(make menuconfig):(1)加入Yaffs2文件系統(tǒng)支持;(2)CS8900網(wǎng)卡驅(qū)動(dòng)的移植;(3)LCD驅(qū)動(dòng)移植;(4)USB驅(qū)動(dòng)移植等。
3.3 Yaffs2文件系統(tǒng)的制作
文件系統(tǒng)的制作主要是用busybox工具制作最小文件系統(tǒng),編譯和安裝busybox-1.7.tar后會(huì)在busybox目錄下生成子目錄_install,并且/bin目錄下集成壓縮了Linux的許多工具和命令。另外,還要加入QT程序所依賴(lài)的動(dòng)態(tài)共享庫(kù)libQtCore.so.4、libQtGui.so.4和libQtNetWork.so.4,并設(shè)置環(huán)境變量。
3.4 基于QT的軟件設(shè)計(jì)[6]
系統(tǒng)的應(yīng)用程序主要包括以下幾個(gè)模塊:
(1)核心算法模塊。根據(jù)分源法建立數(shù)學(xué)模型,如圖3所示。
其中主要瓦斯涌出源包括開(kāi)采煤層(包括圍巖)瓦斯涌出、鄰近煤層瓦斯涌出、掘進(jìn)巷道煤壁瓦斯涌出、掘進(jìn)落煤瓦斯涌出、已采采區(qū)采空區(qū)瓦斯涌出和生產(chǎn)采區(qū)瓦斯涌出。
回采工作面瓦斯涌出量q1=開(kāi)采煤層瓦斯涌出+鄰近煤層瓦斯涌出
掘進(jìn)工作面瓦斯涌出q2=掘進(jìn)巷道煤壁瓦斯涌出+掘進(jìn)落煤瓦斯涌出
其中q4為已采采區(qū)采空區(qū)瓦斯涌出量。
(2)通信模塊。系統(tǒng)的通信包括與上位PC通信和與其他子系統(tǒng)的通信。通信接口采用100 Mb/s以太網(wǎng)接口,通信協(xié)議采用輕量級(jí)的UDP協(xié)議,該協(xié)議適用于短消息的網(wǎng)絡(luò)數(shù)據(jù)傳輸、擁有大量的客戶(hù)端、對(duì)數(shù)據(jù)安全無(wú)特殊要求、對(duì)響應(yīng)速度要求高等情況。QT提供了一個(gè)QUdpSocket類(lèi)用于編寫(xiě)UDP程序,QUdpSocket類(lèi)提供的一個(gè)重要功能是廣播,這里正好適合系統(tǒng)以廣播的形式向鄰近煤層系統(tǒng)發(fā)送廣播數(shù)據(jù)報(bào),從而獲得鄰近煤層瓦斯涌出量信息。
(3)信息顯示GUI模塊。該模塊用于與操作人員交互,采用觸摸方式,更適于在狹窄的空間中進(jìn)行操作。QT的GUI類(lèi)為程序設(shè)計(jì)人員提供了豐富的操作控件,可以方便地設(shè)計(jì)出操作簡(jiǎn)單、界面友好的系統(tǒng)。系統(tǒng)的顯示主要包括回采工作面瓦斯涌出量,掘進(jìn)工作面瓦斯涌出量,當(dāng)前開(kāi)采面風(fēng)速、濕度、瓦斯涌出量預(yù)報(bào)信息及檢測(cè)時(shí)間等。
本文針對(duì)礦井下不同深度、不同采區(qū)瓦斯涌出量的差異及鄰近采區(qū)瓦斯涌出相互影響的特點(diǎn),設(shè)計(jì)出分布式的基于ARM的瓦斯預(yù)測(cè)系統(tǒng)。系統(tǒng)的硬件平臺(tái)設(shè)計(jì),鑒于其特殊的應(yīng)用環(huán)境,采用可靠性高、應(yīng)用廣泛、技術(shù)成熟的S3C2440做為核心板;軟件方面采用了兼容性強(qiáng)的Linux+QT的設(shè)計(jì)方式,保證了系統(tǒng)的穩(wěn)定可靠。根據(jù)歷史瓦斯涌出數(shù)據(jù),在煤層厚度為4.96m、日產(chǎn)量3 000 t、巷長(zhǎng)1 000 m、巷道橫截面為5 m2、平均瓦斯含量為18.80 m3/t、距地面90 m的礦井下,系統(tǒng)預(yù)測(cè)值為45.28 m3/min,實(shí)際值為50.06 m3/min。