摘 要: 研究了基于嵌入式技術(shù)的油庫消防給水控制核心系統(tǒng)原理和功能,配合微控制器實(shí)現(xiàn)遠(yuǎn)程控制和數(shù)據(jù)采集,構(gòu)建了其系統(tǒng)硬件結(jié)構(gòu),并基于嵌入式實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)了相應(yīng)的控制軟件,實(shí)現(xiàn)了油庫消防給水控制系統(tǒng)的安全性和可靠性。
關(guān)鍵詞: 嵌入式;消防控制;通信
傳統(tǒng)的消防給水控制采用單片機(jī)控制技術(shù)只能應(yīng)對(duì)簡單的控制,對(duì)于復(fù)雜環(huán)境就難以滿足控制要求。目前利用嵌入式技術(shù),結(jié)合單片機(jī)和計(jì)算機(jī)技術(shù),便能解決復(fù)雜環(huán)境的各種控制問題,有效減少了事故的發(fā)生。本文就是基于嵌入式技術(shù),針對(duì)某油庫消防給水控制系統(tǒng)的實(shí)際控制環(huán)境,給出控制系統(tǒng)結(jié)構(gòu),分析系統(tǒng)控制功能,設(shè)計(jì)系統(tǒng)控制硬件,并進(jìn)行了系統(tǒng)的軟件實(shí)現(xiàn)。
1 系統(tǒng)概述
油庫消防給水控制系統(tǒng)由上位機(jī)計(jì)算機(jī)系統(tǒng)和下位機(jī)嵌入式系統(tǒng)組成。上位計(jì)算機(jī)用于數(shù)據(jù)管理并與下位機(jī)系統(tǒng)進(jìn)行數(shù)據(jù)通信,實(shí)現(xiàn)總系統(tǒng)控制。本系統(tǒng)采集油庫數(shù)據(jù),再根據(jù)油庫溫度控制降溫系統(tǒng)調(diào)節(jié)油庫溫度,降溫系統(tǒng)由冷卻降溫系統(tǒng)和泡沫降溫系統(tǒng)雙控制系統(tǒng)組成。冷卻降溫系統(tǒng)由水冷實(shí)現(xiàn),油庫消防用水來自消防用水水池,水池水又來自水井。水池和水井分處于鐵路兩邊。油庫消防用水水池設(shè)置有1#水池和2#水池,水井有水源A和水源B,水井和水池都設(shè)計(jì)相應(yīng)的數(shù)據(jù)采集電路和控制系統(tǒng)。水井的水位參數(shù)采集和水泵運(yùn)行數(shù)據(jù)及電動(dòng)閥控制由單片機(jī)無線收發(fā)器實(shí)現(xiàn),在計(jì)算機(jī)監(jiān)控端設(shè)置對(duì)應(yīng)的無線收發(fā)器,解決遠(yuǎn)程控制和數(shù)據(jù)采集。水池水位和油庫溫度利用多點(diǎn)傳感器采集,上位機(jī)與下位機(jī)通信采用RS485工業(yè)通信標(biāo)準(zhǔn),從下位機(jī)嵌入式系統(tǒng)中集中采集,完成數(shù)據(jù)交換。對(duì)于冷卻降溫系統(tǒng)的井閥和泵閥、泡沫降溫系統(tǒng)的井閥和泵閥及水池供水控制的井閥由嵌入式控制系統(tǒng)直接控制,并通過嵌入式與上位機(jī)進(jìn)行數(shù)據(jù)通信,由上位機(jī)進(jìn)行數(shù)據(jù)管理。當(dāng)冷卻降溫系統(tǒng)對(duì)油庫實(shí)施降溫后,油庫溫度仍繼續(xù)上升,發(fā)出報(bào)警并啟動(dòng)泡沫降溫系統(tǒng)。當(dāng)冷卻降溫系統(tǒng)和泡沫降溫系統(tǒng)的井閥與泵閥出現(xiàn)故障時(shí),記錄分析設(shè)備故障部位與原因,并向監(jiān)控室報(bào)警,同時(shí),任何時(shí)候都可以手動(dòng)控制消防供水閥,實(shí)現(xiàn)無間斷消防供水。系統(tǒng)控制關(guān)系如圖1所示。
1.1 油庫消防控制系統(tǒng)
油庫消防控制系統(tǒng)包括下位機(jī)ARM、水泵控制子系統(tǒng)、水池水位監(jiān)測(cè)、油庫數(shù)據(jù)采集系統(tǒng)以及通信控制模塊等。以下位機(jī)嵌入式核心控制ARM920TDMIS3C2410X[1]為核心,結(jié)合MCU芯片CY8C24X33實(shí)現(xiàn)遠(yuǎn)程控制和數(shù)據(jù)采集,完成下位機(jī)ARM和上位機(jī)PC機(jī)的通信以及系統(tǒng)各泵閥的控制。設(shè)置數(shù)據(jù)采集、泵閥控制、故障報(bào)警、GPRS模塊、數(shù)據(jù)接口和LCD顯示等功能,系統(tǒng)原理框圖如圖2。
1.2 油庫消防控制終端的功能
(1)MCU數(shù)據(jù)采集。水泵的過程量、電壓相位和轉(zhuǎn)速及水井水位數(shù)據(jù)由傳感器統(tǒng)一采集。
(2)MCU運(yùn)行控制。MCU采集數(shù)據(jù)后進(jìn)行簡單處理,再根據(jù)ARM的命令控制水井水泵的調(diào)速、開啟與停止。
(3)MCU與ARM通信。由無線GPRS通信實(shí)時(shí)保持MCU控制現(xiàn)場與ARM控制中心的數(shù)據(jù)交換。
(4)ARM水池水位參數(shù)和油庫溫度參數(shù)數(shù)據(jù)采集。水池水位分為A、B、C、D四檔水位顯示,每隔X分鐘讀取水池水位一次;通過設(shè)置在油庫四周的溫度傳感器,實(shí)時(shí)監(jiān)測(cè)油庫的溫度變化情況。
(5)ARM運(yùn)行控制。ARM將水池水位和油庫溫度數(shù)據(jù)采集后與設(shè)定的數(shù)值比較,根據(jù)比較結(jié)果對(duì)水井泵的開啟、停止及切換水泵工作進(jìn)行遠(yuǎn)程控制,并配合冷卻降溫系統(tǒng)和泡沫降溫系統(tǒng)的開啟與關(guān)閉實(shí)現(xiàn)油庫溫度控制功能。
(6)故障分析與報(bào)警功能。油庫溫度上升到預(yù)先設(shè)定值時(shí),發(fā)出報(bào)警,并顯示溫度值。在降溫過程中,監(jiān)測(cè)冷卻降溫系統(tǒng)和泡沫降溫系統(tǒng)設(shè)備的故障、上傳故障等信息。當(dāng)PC機(jī)收到設(shè)備故障信息代碼時(shí),分析故障部位,顯示設(shè)備紅色故障,并播放報(bào)警聲音,記錄故障發(fā)生時(shí)間、故障原因和故障部位,等待解決。
(7)數(shù)據(jù)記錄和查詢。記錄值班人員對(duì)設(shè)備的巡查,檢查日期與時(shí)間,各泵閥的啟動(dòng)、關(guān)閉時(shí)間及水池水位關(guān)閉工作狀態(tài)。查詢系統(tǒng)設(shè)備的工作狀態(tài),并由數(shù)據(jù)生成文件導(dǎo)出保存。
2 系統(tǒng)通信協(xié)議
通用無線分組業(yè)務(wù)GPRS(General Packet Radio Service)是一種基于GSM系統(tǒng)的無線分組交換技術(shù),提供端到端的、廣域的無線IP連接[2]。水井水位數(shù)據(jù)采集及水泵控制通信利用GPRS實(shí)現(xiàn),嵌入式中央控制系統(tǒng)與上位機(jī)PC的通信采用RS485工業(yè)通信標(biāo)準(zhǔn)接口實(shí)現(xiàn)。上位機(jī)與下位機(jī)的幀協(xié)議的通信格式如表1。
系統(tǒng)在通信過程中幀傳輸以一個(gè)字符為傳輸單位,對(duì)字符的位定義為:1 bit起始位、8 bit數(shù)據(jù)位、1 bit停止位、無校驗(yàn)位、波特率9 600 b/s。幀起始符固定為0xBFH,命令碼占1 B,地址碼為00H,其中最大地址范圍是00H~0FFH,而00H為PC機(jī)地址,數(shù)據(jù)長度為1 B,信息隨命令碼不同而不同;CRC16由地址碼、命令碼、數(shù)據(jù)長度和信息共16位循環(huán)冗余校驗(yàn)碼組成,生成多項(xiàng)式為X-16+X12+X5+1,其中高8位在設(shè)置前,結(jié)束幀為固定的0xEFH。
系統(tǒng)中數(shù)據(jù)幀通信格式分為3種:(1)PC機(jī)發(fā)送命令。幀的起始符為0BFH,水池水位讀取用0A0H表示,水池地址編碼01H,數(shù)據(jù)長度01H,發(fā)送信息碼為00H,CRC16循環(huán)冗余校驗(yàn)碼為2 B,水池水位讀取與檢測(cè)的結(jié)束幀用0EFH;(2)PC機(jī)向ARM讀取數(shù)據(jù)成功。幀起始符和命令碼與發(fā)送命令相同,地址碼為00H,數(shù)據(jù)長度為03H,信息碼為:AA0104H(0AAH表示接收CRC校驗(yàn)成功,01H表示1#水池,04H表示第4檔水位),CRC16,結(jié)束幀與發(fā)送命令內(nèi)容一樣;(3)PC機(jī)向ARM讀取數(shù)據(jù)失敗。當(dāng)信息碼出現(xiàn)5501H時(shí),說明1#水池?cái)?shù)據(jù)上傳CRC校驗(yàn)失敗并要求上位機(jī)PC把上次信息再發(fā)一遍。
3 控制系統(tǒng)設(shè)計(jì)
系統(tǒng)控制核心采用嵌入式控制芯片進(jìn)行油庫數(shù)據(jù)交換并控制冷卻降溫系統(tǒng)和泡沫降溫系統(tǒng),同時(shí)保持與MCU控制的無線GPRS數(shù)據(jù)通信,實(shí)現(xiàn)對(duì)水井取水遠(yuǎn)程供水控制。當(dāng)水池水位低于設(shè)定數(shù)值時(shí),啟動(dòng)水井A泵為1#池供水;當(dāng)水池水位到達(dá)最高點(diǎn)時(shí),停止水泵工作;當(dāng)井內(nèi)水位到達(dá)低水位點(diǎn)而水池還沒滿時(shí),停止A泵,切換到水井B泵工作。當(dāng)水池水位到達(dá)最高點(diǎn)時(shí),停止水泵工作;當(dāng)井內(nèi)水位到達(dá)低水位點(diǎn)時(shí)也停止水泵工作,完成一次供水過程。X小時(shí)之內(nèi)將不再啟動(dòng)設(shè)備,用以保護(hù)設(shè)備無為地頻繁動(dòng)作。MCU控制部分電路選用PSoC片上系統(tǒng)芯片CY8C24X33。CY8C24X33具有8 kB Flash和ADC轉(zhuǎn)換,采用SSoP封裝。MCU串口由四芯屏蔽電纜連接,用MAX485進(jìn)行數(shù)字電平轉(zhuǎn)換成GPRS無線傳輸通信,這樣就解決了工業(yè)標(biāo)準(zhǔn)信號(hào)傳送的問題。MCU控制部分單元如圖3所示。
4 軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
4.1 操作系統(tǒng)
本系統(tǒng)采用μC/OS-II操作系統(tǒng),它是一種基于優(yōu)先級(jí)可搶先的硬實(shí)時(shí)內(nèi)核,提供任務(wù)調(diào)度與管理、時(shí)間管理、任務(wù)間同步與通信、內(nèi)存管理和中斷服務(wù)等功能。對(duì)于多任務(wù)系統(tǒng),內(nèi)核給每項(xiàng)任務(wù)分配CPU時(shí)間,并且負(fù)責(zé)各任務(wù)之間的通信[4]。在ARM920S3C2410X處理器上移植μC/OS-II操作系統(tǒng),對(duì)于控制設(shè)備的各種工作狀態(tài),使用Ready隊(duì)列通過內(nèi)存映射表實(shí)現(xiàn)高效率的快速查詢。μC/OS-II首先初始化,利用函數(shù)OSInit()建立一個(gè)空閑任務(wù)(idle task),等待其他任務(wù)進(jìn)入。當(dāng)調(diào)用OSStart()啟動(dòng)多任務(wù)時(shí),處于就緒態(tài)且優(yōu)先級(jí)最高的任務(wù)開始運(yùn)行。
4.2 控制任務(wù)實(shí)現(xiàn)
油庫消防供水控制運(yùn)行狀態(tài)的主要任務(wù)是完成水泵和電動(dòng)閥的運(yùn)行參數(shù)、水位與溫度數(shù)據(jù)采集及對(duì)設(shè)備故障的分析,將MCU控制水井設(shè)備運(yùn)行所采集的數(shù)據(jù)和分析結(jié)果,通過無線GPRS發(fā)送給ARM控制系統(tǒng),ARM核心控制匯集油庫、水池和MCU控制數(shù)據(jù),并進(jìn)行處理與分析上傳給上位機(jī)PC,同時(shí)簡單顯示泵閥和水池水位的各種運(yùn)行狀態(tài)等實(shí)時(shí)信息。
系統(tǒng)采用32位ARM920TDMI內(nèi)核的SamsungS3C2410X嵌入式微處理器和源碼開放的μC/OS-II操作系統(tǒng)平臺(tái),系統(tǒng)控制程序大部分源代碼采用C語言編程,但仍需要用C語言和匯編語言混合編程,完成一些與處理器相關(guān)代碼。如主程序框架采用C語言編制,而讀寫處理器、寄存器和一些算法只能用匯編語言來實(shí)現(xiàn),以提高代碼執(zhí)行效率和增加軟件的可讀性。
在主程序中,程序啟動(dòng)后,自動(dòng)執(zhí)行查詢命令,獲取每臺(tái)設(shè)備的當(dāng)前狀態(tài),加以數(shù)據(jù)處理并顯示。油庫溫度經(jīng)過采集和濾波后,得到實(shí)際溫度值,如溫度大于初始設(shè)定溫度值,啟動(dòng)相應(yīng)的冷卻水降溫系統(tǒng),此時(shí)油庫溫度如繼續(xù)上升,進(jìn)一步啟動(dòng)泡沫降溫系統(tǒng),實(shí)現(xiàn)油庫消防降溫控制。主程序流程圖如圖4所示。
4.3 系統(tǒng)接口
系統(tǒng)選用嵌入式ARM920的S3C2410X芯片,它提供了3 個(gè)通道的異步串行通信(UART),UART包括線控制寄存器、控制寄存器、錯(cuò)誤狀態(tài)寄存器、接收/發(fā)送狀態(tài)寄存器、發(fā)送緩沖寄存器、接收緩沖寄存器和波特率因子寄存器[3]。由于系統(tǒng)數(shù)據(jù)和控制命令收發(fā)采用通用的RS485和無線RS485GPRS通信協(xié)議,而GPRS模塊與系統(tǒng)之間的通信利用系統(tǒng)的UART串口通信。因此,各系統(tǒng)在互相通信之間,都要進(jìn)行電平轉(zhuǎn)換。嵌入式系統(tǒng)將信號(hào)電平轉(zhuǎn)換為RS485工業(yè)通信標(biāo)準(zhǔn)接口,實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)交換及有效防止數(shù)據(jù)通信過程中的干擾。對(duì)于UART串口的驅(qū)動(dòng)程序利用串口Uart_SendByte( )發(fā)送函數(shù)和串口Uart_Getch( )接收函數(shù),采用C語言編寫,其部分程序結(jié)構(gòu)如下:
//main.c
Void Uart_SendByten(int Uartnum,U8 data)//發(fā)送數(shù)據(jù)
{If(Uartnum= =0)
{ While(!(rUTRSTAT0 & 0x4));
hudelay(10);
WrUTXH0(data);
}
Eles
{ While(!(rUTRSTAT1 & 0x4));
hudelay(10);
WrUTXH1(data);
}
Eles
{ While(!(rUTRSTAT2 & 0x4));
hudelay(10);
WrUTXH2(data);
}
}
Char Uart_Getchn(char*Revdata,int Uartnum,int timeout)
//接收數(shù)據(jù)
{If(Uartnum= =0)
{ While(!(rUTRSTAT0 & 0x1));
*Revdata=RdURXH0();
returnTRUE;
}
Else{While(!(rUTRSTAT1 & 0x1));
*Revdata=RdURXH1();
returnTRUE;
}
Else{While(!(rUTRSTAT2 & 0x1));
*Revdata=RdURXH2();
returnTRUE;
}
}
本系統(tǒng)以32位高性能嵌入式ARM920TDMIS3C2410X芯片和實(shí)時(shí)多任務(wù)μC/OS-II操作系統(tǒng)為核心,用RS485工業(yè)通信標(biāo)準(zhǔn)接口與上位計(jì)算機(jī)進(jìn)行數(shù)據(jù)協(xié)調(diào)處理,配合遠(yuǎn)程MCU控制單元,有效地解決了復(fù)雜環(huán)境實(shí)時(shí)性和多任務(wù)之間的矛盾。系統(tǒng)實(shí)現(xiàn)了遠(yuǎn)程取水控制、消防降溫控制、故障分析與報(bào)警,以及數(shù)據(jù)記錄查詢的功能。同時(shí)系統(tǒng)的各種控制參數(shù)集中處理,簡化了軟硬件設(shè)計(jì),構(gòu)建了低成本、高可靠性、多功能、安全經(jīng)濟(jì)運(yùn)行的控制系統(tǒng),在實(shí)際生產(chǎn)生活中具有廣泛的應(yīng)用價(jià)值和市場前景。
參考文獻(xiàn)
[1] Samsung Electronics CO.,Ltd.S3C2410X 32-Bit RISC Microprocessor User,s manual.2003.
[2] 蔚承英,陳勇剛,楊利平,等.基于GPRS和嵌入式計(jì)算機(jī)的遠(yuǎn)程監(jiān)控系統(tǒng)研究.無線通信技術(shù),2007(4):45-48.
[3] 熊茂華,楊震倫.ARM9嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)應(yīng)用.北京:清華大學(xué)出版社,2008.
[4] LABROSSE J J著.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II.邵貝貝譯.北京:北京航空航天大學(xué)出版社,2003.