王飛飛,李瑋瑤
(平頂山學院 河南 平頂山467000)
水庫的水位監(jiān)測是一項關系到人民安危的重要工作,監(jiān)測數據的質量和精度都會影響到水情信息的準確性和實時性。隨著監(jiān)測技術的不斷發(fā)展,計算機、無線通信、微電子等先進技術逐漸地應用到了水位監(jiān)測中。 由于大部分的水庫位置偏僻、依靠人工采集監(jiān)測數據存在執(zhí)行效率低、存在誤差等問題[1]。因此,本論文在分析現有水庫水位監(jiān)控系統(tǒng)的基礎上,采用新型的水位傳感技術和無線通信技術,設計了一種基于GPRS 的水庫水位實時監(jiān)測系統(tǒng),實現水庫水位數據的實時采集、處理和顯示等功能。 該系統(tǒng)包括數據采集、數據傳輸、數據處理、遠程監(jiān)測中心四部分[2-3]。
本水位監(jiān)控系統(tǒng)包括對水位及周邊環(huán)境的溫濕度, 光照度的測量。 水位的測量通過壓阻式水位傳感器實現,通過將水位的狀態(tài)轉換成模擬信號,再利用模數轉換器把輸出狀態(tài)直接接到單片機的I/O 接口,單片機經過運算控制,輸出數字信號。測量得到的數據通過GPRS 模塊傳送到遠程監(jiān)控端,監(jiān)控端可對數據進行分析處理[4-6]。 系統(tǒng)總體設計如圖1 所示。
圖1 系統(tǒng)總體設計圖Fig. 1 System overall design
由于水位監(jiān)測裝置是長時間無人職守的監(jiān)測系統(tǒng),系統(tǒng)應用一種高性能、低功耗的單片機,對各個部分進行自動控制,以降低儀器的整體功耗,在采集數據后將數據傳向遠端服務器。
本系統(tǒng)采用的主要硬件有:
單片機:STC12C5A60S2 單片機, 其片內具有大容量程序存儲器且是FLASH 工藝的,內部自帶高達60K FLASH ROM,而且和8051 指令、管腳完全兼容。
水位傳感器:壓阻式水位傳感器。
溫濕度傳感器:SHT10 溫濕度傳感器,SHT10 傳感器采用專利的CMOSens 技術,屬于Sensirion 溫濕度傳感器家族中的貼片封裝系列,產品具有極高的可靠性與長期穩(wěn)定性。
光照傳感器:GY-30 光照傳感器。
GPRS 模塊:SIM900A 模塊。
在對現有技術、 水位監(jiān)測系統(tǒng)研究以及對該水庫水位監(jiān)測需求進行調研分析的基礎上,設計并實現一種符合該水庫實際需求的水位監(jiān)控系統(tǒng),主要分為以下四部分:
在數據采集階段, 系統(tǒng)通過壓阻式水位傳感器進行水位的數據信息采集。 水位傳感器將測量所得數據保存在存儲器中,微處理器發(fā)送命令將數據取出,通過相關協(xié)議將數據傳送到單片機的A/D 轉換模塊, 由于A/D 轉換模塊接收到的數據是電壓信號,需要將其轉換為相應的數字信號。轉換過程如下:
首先應將ADC 的高八位和低八位都重置為零, 初始化
ADC:
unsigned int adc10_start(unsigned char channel)
{
unsigned int adc;
unsigned char i;
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR = (ADC_CONTR & 0xe0) |
ADC_START|channel;
}
初始化完成后,進行一次ADC 轉換:
do{
if(ADC_CONTR&ADC_FLAG)
{
ADC_CONTR&=~ADC_FLAG;
adc=(unsigned int)ADC_RES;
adc=(adc <<2)|(ADC_RESL&3);return adc;
}
}while(--i);
return 1024;
A/D 轉換的實現:
ADC_10data=adc10_start(4);
DEPTH=((unsigned long)ADC_10data*2000)/1024;
DEPTHdata[0]=DEPTH/1000+0x30;
DEPTHdata[1]=DEPTH%1000/100+0x30;
DEPTHdata[2]=DEPTH%100/10+0x30;
DEPTHdata[3]=DEPTH%10+0x30;
數據采集階段主要完成水位、溫度等相關信息的采集。
單片機和上位機之間的通信主要分為兩部分: 串口發(fā)送與GPRS 發(fā)送,如圖2 所示。
圖2 GPRS 通信流程圖Fig. 2 The flow chart of GPRS communication
串口發(fā)送:水位監(jiān)控系統(tǒng)中的各個傳感器采集到的數據存儲在單片機的RAM 里,在單片機的控制下,通過UART 串口將采集到的水位、溫濕度、光照、GPS 位置數據信息發(fā)送至外接設備。單片機在與外接的GPRS 無線傳輸模塊之間的數據傳輸過程中,首先考慮的是數據傳輸的效率、數據傳輸的可靠性以及安全性等問題。 UART 串口是單片機自身嵌置的串口,通過該串口可將水位、溫度、濕度、光照、經度、緯度、海拔等數據信息傳輸到串行接口接收/發(fā)送緩沖區(qū)(SBUF)中,用以實現于外接的GPRS 無線通信模塊之間的通信。
GPRS 發(fā)送:水位監(jiān)控節(jié)點部署在水庫的不同位置,且水庫面積巨大,節(jié)點分布廣泛、位置特殊,要將各個傳感器采集到的數據分別發(fā)送至服務器,就必須使用無線通信技術。 單片機借助AT 指令來實現對GPRS 無線通信模塊的有效控制,對其進行初始化、指定接收服務器的網址和端口信息、指明要發(fā)送的數據,實現水位等數據的遠程自動化無線傳輸功能。 具體如下:利用void GSM_init(void)函數,通過調用AT 指令對模塊進行相關的設置,而AT 指令是一個個的字符串,通過UART 串口向GPRS 模塊的數據接收終端發(fā)送AT 指令時,需要利用一個名為void sendstring(unsigned char*p)的函數,該函數會自動調用并執(zhí)行其內部的嵌套的void sendchar(unsigned char ch)函數,將AT 指令發(fā)送至GPRS 模塊。
通過Socket 技術將由GPRS 模塊通過TCP/IP 協(xié)議發(fā)送過來的緩沖數據接收,通過數據檢測進行初步的數據處理,然后將符合規(guī)則的數據存入指定數據庫的指定字段。 具體如下:
1)接收GPRS 信息
接收GPRS 信息時,首先通過GetServerIP()方法獲取服務器的IP 地址, 用指定的端口號和服務器的IP 建立一個EndPoint 對象,然后建立一個Socket 對象,用該對象Bind()方法綁定EndPoint,Listen()方法開始監(jiān)聽,接收到客戶端的連接后,用Accept()方法創(chuàng)建新的Socket 對象,通過Receive()方法,獲取接收到的信息,信息接收時,需要對接收到的數據長度進行判斷,然后按照規(guī)定長度截取有數據的部分,避免接收到后面的空格等沒用的信息,并以*字符來確定該字符串結束。
2)解析數據,保存到數據庫
本系統(tǒng)規(guī)定傳輸數據的格式為“#,經度,緯度,水深,溫度,濕度,光照強度,*”,中間用逗號分隔,所有接收到的數據以#開頭,以*結束,所以將數據插入到數據庫時,需要判斷接收的數據是不是與上述格式一致,如果一致,則進行處理并入庫,否則,則將該數據丟棄,繼續(xù)接收下一條數據。
將接收到的水位等數據信息進行顯示,設定刷新時間,每隔一定時間對顯示數據進行更新,同時由于監(jiān)測點可能不定時添加,所以刷新數據時首先分析監(jiān)測點,檢測界面上是否已有該監(jiān)測點,若有,則更新本監(jiān)測點數據,若沒有,則添加該監(jiān)測點;當鼠標懸放在某監(jiān)測點上時能夠在信息欄顯示此監(jiān)測點最新數據; 當鼠標左鍵點擊監(jiān)測點時彈出詳情查看確認對話框,點擊確認可查看詳情,取消則關閉對話框。 具體如下:
1)定義布爾變量FLAG(默認為true)用來標識是否為首次添加監(jiān)測點。
2) 當主窗體加載時打開定時器并定義定時器tick 事件;在tick 事件中首先獲取監(jiān)測點數據的數據表,遍歷該表,若無數據則刷新,直到有數據進入,然后獲取該監(jiān)測點id、經緯度信息,調用checkjd(id, x, y)方法,在checkjd(id, x, y)中首先檢查FLAG 是否為true: 若為true, 則直接添加該檢測點 (調用newRadioButton(id, x, y)),若為false,則檢查是否已有該監(jiān)測點,如果有就更新該監(jiān)測點信息及標識位置。
本水位監(jiān)控系統(tǒng)實現了數據的采集、 傳輸、 處理以及顯示,能夠較為準確及時地監(jiān)測水庫水位信息,幫助水位監(jiān)控工作者擺脫了對于有線網絡、人工采集匯總發(fā)送的諸多依賴和限制, 使人們更方便的對水位進行監(jiān)控以及對水位情況的對比,也降低了對工作人員的技術要求,但是本系統(tǒng)在平臺擴展性以及實時預警方面還存在一定限制。
[1] 王昆,陳昕志.基于GPRS 的地下水動態(tài)水位監(jiān)測系統(tǒng)研究[J].計算機測量與控制,2011,19(2):263-266.
WANG Kun, CHEN Xin-zhi.Research on dynamic Level of groundwater monitoring system based on GPRS[J].Computer Measurement&Control, 2011,19(2):263-266.
[2] 徐航. 基于GPRS的水庫水位實時監(jiān)測系統(tǒng)的研究[D].江西理工大學, 2012.
[3] 閆靜杰,劉曉文,朱嘵穎,等.基于無線傳感器網絡的井下水位監(jiān)測監(jiān)控系統(tǒng)設計[J]. 傳感器與微系統(tǒng),2008,27(12):73-75.
YAN Jing-jie,LIU Xiao-wen,ZHU Xiao-ying,et al.Design of coal mine water level measuring and monitoring system based on wireless sensor networks [J].Transducer and Microsystem Technologies,2008,27(12):73-75.
[4] 張建國,張英梅. 無線數字水位監(jiān)測系統(tǒng)的設計[J]. 機械工程與自動化,2008(5):116-117.
ZHANG Jian-guo,ZHANG Ying-mei.Design of wireless digital water-level monitoring system[J].Mechanical Engineering& Automation,2008(5):116-117.
[5] 樓然苗,李光飛.單片機課程設計指導[M].北京:北京航空航天大學出版社,2012.
[6] 趙敏.基于GPRS網絡的無線通信系統(tǒng)的研究和實現[D]. 太原:太原理工大學,2010.