摘 要: 針對水資源監(jiān)測系統(tǒng)監(jiān)測站搭建調(diào)試工作艱難,線路管理維護不方便的問題,設計了一款基于嵌入式的采用CDMA方式進行無線采集和通信,以Wince下的數(shù)據(jù)庫進行信息管理工作的可移動水資源監(jiān)測系統(tǒng)。給出了系統(tǒng)工作原理及各模塊軟硬件設計的方法,并對基于Wince的智能設備下數(shù)據(jù)庫的使用作出了說明。實驗證明,該系統(tǒng)具有可靠性高、管理方便直觀的特點。
關鍵詞: Wince;數(shù)據(jù)庫;.NET技術;水資源
無論在任何時代,水資源的使用以及水環(huán)境的治理都是關乎工業(yè)、農(nóng)業(yè)和人民日常生活的大問題。而我國的水資源現(xiàn)狀為:水資源短缺、水污染嚴重、水土流失嚴重、水價嚴重偏低、水資源浪費嚴重;南方水多,北方水少,西部水少,沿海水多。所以,水資源的監(jiān)管和控制無論是深度和力度都必須有足夠的保證[1]。
2011年中央一號文件《中共中央國務院關于加快水利改革發(fā)展的決定》提出,水是生命之源、生產(chǎn)之要、生態(tài)之基,不僅關系到防洪安全、供水安全、糧食安全,而且關系到經(jīng)濟安全、生態(tài)安全、國家安全。因此要全面加快水利基礎設施建設,實行最嚴格的水資源管理制度。
在中國城市水的使用中,工業(yè)用水占總用水量的70%左右。如果能夠采用合適的科技手段率先將這部分用水實現(xiàn)自動化計量、管理以及水質(zhì)監(jiān)測,就可以將城市的水管理提高到一個比較高的層次,有利于提高節(jié)約意識,進一步節(jié)約能源,同時帶來更多的經(jīng)濟效益。
本文從實際應用出發(fā),在目前廣泛采用的監(jiān)測站加中心站模式的基礎上設計了一個可移動的嵌入式通用型監(jiān)測管理平臺。
1 系統(tǒng)工作方式及功能簡介
傳統(tǒng)的監(jiān)測網(wǎng)絡工作方式如圖1所示,中心站通過網(wǎng)線接入CDMA或GPRS網(wǎng)絡,發(fā)送指令到監(jiān)測站進行監(jiān)測工作[2]。而本文設計了一款基于嵌入式的便攜式移動中心站,該系統(tǒng)能夠替代中心站的功能進行調(diào)試檢測等工作,既可以通過RS232與監(jiān)測站設備連接調(diào)試,也可以通過CDMA方式進行無線采集,同時又可與中心站進行通信。
這種工作模式的優(yōu)勢在于:(1)站點位置可隨時更改,滿足管理人員隨時隨地查看現(xiàn)場、監(jiān)測現(xiàn)場情況的需要;(2)工作人員在監(jiān)測站建立和維修時可以起到事半功倍的作用,為無線網(wǎng)絡測試工作帶來了極大的便利,可取代以電話通信來調(diào)試無線網(wǎng)絡的狀況;(3)小成本帶來高效率的工作方式。
本文采用S3C2440處理器與Wince系統(tǒng)相結(jié)合進行移動中心站的硬件和軟件設計,可代替中心站實現(xiàn)主動招測、定時數(shù)據(jù)上報、定時狀態(tài)上報、上報信息入庫和查詢以及導出文檔記錄等功能。
2 系統(tǒng)框圖介紹
如圖2所示,本系統(tǒng)主要結(jié)構可分為供電模塊、顯示模塊、存儲模塊、通信模塊以及各類數(shù)據(jù)采集接口等。其中通信部分主要以華為公司的mc323通信模塊作為主芯片,結(jié)合TCP/IP技術實現(xiàn)無線數(shù)據(jù)的點對點傳輸,移動中心站既可作為服務器向監(jiān)測站發(fā)送指令,也可以作為客戶端向中心站發(fā)送采集到的數(shù)據(jù),同時可對指定手機用戶以短信的方式發(fā)送實時采集到的數(shù)據(jù)。主要的數(shù)據(jù)采集接口包括USB接口、RS232接口、RS485接口以及以太網(wǎng)口等[3-4]。電源模塊外部供電采用12 V鋰電池,根據(jù)系統(tǒng)需要進行電壓轉(zhuǎn)換,在系統(tǒng)外圍留有充電器接口,可采用專用適配器進行充電,固定放置時也可外接太陽能電池板進行充電。其他模塊可根據(jù)系統(tǒng)功能進行定制。
3 主動召測與實時上報
如圖3所示,主動召測功能可測得當前系統(tǒng)的水流量報警門限值、一定時間內(nèi)的累計水流量值,以及產(chǎn)品規(guī)格和警報強度,同時可通過該軟件對系統(tǒng)參數(shù)進行配置,如報警次數(shù)和警報強度等。
3.1 通信協(xié)議格式
由于采用RS485總線格式通信,故協(xié)議中加入地址位,以區(qū)分數(shù)據(jù)來源或數(shù)據(jù)發(fā)送目的地[5-6]。格式如下所示:
3.2 主動上報功能
為了實時地從下位機中了解現(xiàn)場情況,一般會讓下位機定時采集數(shù)據(jù)并上報,同時還要上報設備的運行情況,但不可能總是守在上位機前查看信息,這就要求控制終端設備上或上位機裝有強大的數(shù)據(jù)管理系統(tǒng),也就是通常所說的數(shù)據(jù)庫,本系統(tǒng)在裝有Wince的智能設備上實現(xiàn)了定時上報的數(shù)據(jù)入庫、數(shù)據(jù)庫按條件檢索顯示和數(shù)據(jù)庫導出等功能,成功解決了系統(tǒng)數(shù)據(jù)管理的問題。
對于Wince下數(shù)據(jù)庫的使用,可以借助Microsoft Visual Studio .NET和Microsoft SQL Server 2000 Windows CE Edition(SQL Server CE)共同開發(fā)。
如果系統(tǒng)中沒有任何SQL Server CE數(shù)據(jù)庫,就需要在軟件加載時,在Microsoft Visual Studio .NET項目中創(chuàng)建新的數(shù)據(jù)庫,同時要檢查系統(tǒng)是否缺失數(shù)據(jù)庫管理工具,軟件將自動從SD卡中將Microsoft SQL Server Compact Edition的相關文件拷貝到系統(tǒng)的Programs目錄下。
3.2.1 創(chuàng)建SQL Server CE數(shù)據(jù)庫
數(shù)據(jù)庫是容納存儲結(jié)構化數(shù)據(jù)的表的容器,要存儲不同類別的數(shù)據(jù),可以建立不同的表來管理,但在這之前必須先建立數(shù)據(jù)庫。
在C#中,可以使用System.Data.SqlCeEngine對象創(chuàng)建自己的空數(shù)據(jù)庫,此處創(chuàng)建的數(shù)據(jù)庫名稱的文件擴展名為.sdf。使用Microsoft SQL Server Compact Edition即可在Wince下查看修改此數(shù)據(jù)庫。
SqlCeEngine eg = new SqlCeEngine ("Data Source =
\\SDMEM\\數(shù)據(jù)庫.sdf");
eg.CreateDatabase();
下面就可以鏈接該數(shù)據(jù)庫進行修改操作了。
SqlCeConnection Con1 = null;
Con1 = new SqlCeConnection("Data Source =
\\SDMEM\\數(shù)據(jù)庫.sdf");
Con1.Open();
3.2.2 創(chuàng)建表
有了數(shù)據(jù)庫文件后,就可以創(chuàng)建自己需要的表了,這時需要調(diào)用SqlCeCommand類來加載SQL語句:
SqlCeCommand cmd = conn.CreateCommand();
"CREATE TABLE 數(shù)據(jù)上報庫(序號 int, 站號 int, 時間全 datetime default('2000-02-03 01:01:01'), 通道數(shù)據(jù) ntext,日期 int,時間 int)";
cmd.ExecuteNonQuery();
上述語句即完成了名為數(shù)據(jù)上報庫的表的創(chuàng)建,表中包含序號、站號(下位機編號)、通道數(shù)據(jù)等9個列,涵蓋了下位機地址、上報時間、上報數(shù)據(jù)通道號及數(shù)據(jù)內(nèi)容等信息的分類。按照同樣的方法,可以在數(shù)據(jù)庫中建立一個名為狀態(tài)上報庫的表,用以管理定時上報的設備電壓和信號強度等信息。
3.2.3 數(shù)據(jù)入庫
將上報的數(shù)據(jù)按照上文中的協(xié)議標準核對后,若確認為定時上報的數(shù)據(jù)即可將數(shù)據(jù)存入表中。這里采用參數(shù)形式依次將數(shù)據(jù)插入到表中,并限定參數(shù)的屬性和格式大?。?br />
cmd.CommandText = "INSERT INTO 數(shù)據(jù)上報庫(序號,
站號,時間全, 通道數(shù)據(jù),日期 ,時間)
VALUES ( ?, ?, ?, ?,?,?)";
cmd.Parameters.Add(new SqlCeParameter("p3",
SqlDbType.DateTime));
cmd.Parameters["p3"].Size = 500;
cmd.Prepare();
下面直接將變量的值賦給形參,就把變量“a0”的值插入到表“數(shù)據(jù)上報庫”中了,以同樣的方式可以給表中其他的變量依次賦值。
cmd.Parameters["p3"].Value ="2012-03-19 21:31:03";
3.2.4 按條件檢索
數(shù)據(jù)庫的一個重要功能就在于可以按條件檢索庫中的數(shù)據(jù),當然大多數(shù)人并不習慣使用數(shù)據(jù)庫管理工具來檢索,所以本系統(tǒng)中直接加入了按條件檢索數(shù)據(jù)的功能,可以方便直觀地幫助管理員來查看某個時間段或某個站號的上報數(shù)據(jù)。圖5所示為條件檢索及檢索結(jié)果的系統(tǒng)截圖。
使用SQL語句中的Select語句可對表中數(shù)據(jù)進行檢索,如:
string cc = "SELECT * FROM 數(shù)據(jù)上報庫 where 日期=
'{0}'and 站號='{1}'and 時間>='{2}'and 時間<'{3}'"
cmd.CommandText =(cc, rq, zh, sj, sj1);
上述語句可將搜索范圍縮小至:在日期=rq,時間段sj至sj1內(nèi)站號為zh的下位機上報的數(shù)據(jù),同樣的方法可對狀態(tài)上報庫的數(shù)據(jù)進行檢索。
當然,可以擴大搜索范圍,這里以Replace函數(shù)對SQL語句中的“cc”字符串進行修改,如不需要限定時間段,則可以修改“cc”語句為:
cc=cc.Replace("and 時間>='{2}'and 時間<'{3}'", "");
這樣Select語句就變?yōu)?ldquo;SELECT * FROM 數(shù)據(jù)上報庫 where日期='{0}'and 站號='{1}'”,檢索結(jié)果就只有日期和站號了。
3.2.5 數(shù)據(jù)庫導出
對于普通工作人員,一般不習慣查看和存檔數(shù)據(jù)庫文件,這樣數(shù)據(jù)的導出則成為一項實用的功能,由于Wince下智能設備不支持excel文件的生成和瀏覽,所以本系統(tǒng)將數(shù)據(jù)庫導出為txt文本,導出后可查看核對信息,并可以將txt文本轉(zhuǎn)移至任意一臺PC機上使用。在導出文件時借助System.Data.SqlServerCe.SqlCeDataReader和 FileStream對象對數(shù)據(jù)庫中的數(shù)據(jù)進行讀寫操作即可。
本文利用RS485總線技術和.NET技術,設計實現(xiàn)了水資源遠程監(jiān)測系統(tǒng),給出了系統(tǒng)體系結(jié)構、工作原理并詳細介紹了Wince下數(shù)據(jù)庫的使用方法。本系統(tǒng)在實踐中運行穩(wěn)定,管理方便,有效地解決了大型取用水戶的遠程監(jiān)測問題。
參考文獻
[1] 朱虹.合理利用水資源,建立節(jié)水型社會[J].江西能源,2003(4):9-10,16.
[2] 胡勝利,胡彪.基于GPRS無線技術的水資源計量監(jiān)測系統(tǒng)的設計[J].水利水電技術,2010,41(4):87-90.
[3] 李達,邢智慧.水資源監(jiān)測網(wǎng)絡研究[J].水資源研究,2009(3):9-10.
[4] 許燕萍,楊代華.RS485串行總線可靠性的研究[J].電子科技,2009,22(2):8-10.
[5] 杜春雷.ARM體系結(jié)構與編程[M].北京:清華大學出版社,2003.
[6] 金鵬,陳鋒,張旭,等.基于RS-485總線的嵌入式水質(zhì)監(jiān)測網(wǎng)絡[J].儀表技術,2010(8):14-16.