文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)05-0039-03
隨著水利資源的運(yùn)用日益廣泛及成熟,,對(duì)于大壩的安全性進(jìn)行監(jiān)測(cè)便成了其中的重要部分,因?yàn)榇髩卧谕度胧褂弥笫冀K存在著安全隱患,,隨時(shí)都有可能威脅到下游人民的生命財(cái)產(chǎn)安全,。電子及計(jì)算機(jī)技術(shù)的不斷發(fā)展,使得對(duì)大壩的自動(dòng)化監(jiān)測(cè)成為可能,。筆者從分布式的角度出發(fā),,引入嵌入式數(shù)據(jù)庫(kù)[1],設(shè)計(jì)開(kāi)發(fā)大壩安全監(jiān)測(cè)所用的數(shù)據(jù)匯聚器,,為自動(dòng)化的大壩監(jiān)測(cè)系統(tǒng)提供有力的支持,。
1 數(shù)據(jù)匯集器的系統(tǒng)結(jié)構(gòu)
1.1 分布式大壩監(jiān)測(cè)系統(tǒng)結(jié)構(gòu)
大壩監(jiān)測(cè)安全采用分布式設(shè)計(jì),由上位監(jiān)測(cè)機(jī),、局域網(wǎng)或互聯(lián)網(wǎng),、數(shù)據(jù)匯聚器、RS-485總線、DAM數(shù)據(jù)模塊,、監(jiān)測(cè)儀器組成,,如圖1所示。各種監(jiān)測(cè)儀器使用傳感器將采集的信號(hào)如電流,、電壓等經(jīng)過(guò)處理后變成可以識(shí)別和計(jì)算的數(shù)字量[2],。監(jiān)測(cè)儀器可直接與數(shù)據(jù)匯聚器相連,也可以將多個(gè)儀器接至DAM數(shù)據(jù)模塊后再與數(shù)據(jù)匯聚器相連,。數(shù)據(jù)匯聚器作為一個(gè)總的數(shù)據(jù)采集裝置,,將眾多監(jiān)測(cè)儀器采集的數(shù)據(jù)進(jìn)行匯聚并存儲(chǔ),可為上位監(jiān)測(cè)機(jī)提供實(shí)時(shí)的或以往的監(jiān)測(cè)數(shù)據(jù),,由于數(shù)據(jù)分布于各個(gè)數(shù)據(jù)匯聚器,,提高了系統(tǒng)的可靠性及數(shù)據(jù)的共享性。數(shù)據(jù)匯聚器與上位監(jiān)測(cè)可以是局域網(wǎng),,一般應(yīng)用于對(duì)一個(gè)單獨(dú)的大壩進(jìn)行監(jiān)測(cè),,也可以將數(shù)據(jù)匯聚器接入互聯(lián)網(wǎng),使得可以通過(guò)遠(yuǎn)程訪問(wèn)或?qū)Χ鄠€(gè)大壩進(jìn)行統(tǒng)一的監(jiān)測(cè),。在數(shù)據(jù)匯聚器與監(jiān)測(cè)儀器之間采用帶有屏蔽層的RS-485同纜電纜,,從而保證了在大壩復(fù)雜環(huán)境下數(shù)據(jù)的正常傳輸。
1.2 數(shù)據(jù)匯集器的硬件結(jié)構(gòu)
數(shù)據(jù)匯集器是整個(gè)大壩監(jiān)測(cè)系統(tǒng)的數(shù)據(jù)存儲(chǔ)中心,,同時(shí)還具有TCP到RS-485的轉(zhuǎn)換功能,,使得上位監(jiān)測(cè)機(jī)在需要時(shí)可以直接對(duì)監(jiān)測(cè)儀器進(jìn)行操作,其結(jié)構(gòu)框圖如圖2所示,。為保證系統(tǒng)的可靠性,,硬件的微處理器采用工業(yè)級(jí)ARM9芯片AT91SAM9261,在工作頻率為190 MHz時(shí)可達(dá)到210 MIPS,,ARM9的核心系統(tǒng)除了包含AT91S-AM9261處理器之外,,還有32 MB SDRAM、1 GB Nand Flash,、4 MB Data Flash及AT91SAM9261,。Data Flash用來(lái)存放Bootstrap、Uboot以及Linux的內(nèi)核,,而大容量的Nand Flash用于實(shí)現(xiàn)Linux所需的基本文件系統(tǒng)[3],。以太網(wǎng)芯片采用DM9000A與局域網(wǎng)及互聯(lián)網(wǎng)通信。所有的數(shù)據(jù)均采用SD卡存儲(chǔ),,因此設(shè)計(jì)了SD卡的接口,可以實(shí)現(xiàn)數(shù)據(jù)SD卡的隨時(shí)更改及存檔,。設(shè)計(jì)了簡(jiǎn)單的按鍵及液晶,,用來(lái)實(shí)現(xiàn)對(duì)RS485參數(shù)及TCP/IP參數(shù)的配置操作。數(shù)據(jù)匯集器所接的設(shè)備可以達(dá)到16個(gè),所以AT91SAM9261自身提供的串口遠(yuǎn)遠(yuǎn)不夠,,通過(guò)采用ALTERA公司的EPxxxx型FPGA來(lái)完成UART功能接口的擴(kuò)展,,將串口接口擴(kuò)展至16個(gè)。
2 應(yīng)用SQLite的數(shù)據(jù)匯聚器軟件設(shè)計(jì)
2.1 軟件平臺(tái)架構(gòu)
數(shù)據(jù)匯聚器在軟件上采用Linux作為操作系統(tǒng)平臺(tái),,Linux是優(yōu)秀的開(kāi)源操作系統(tǒng),,具有性能穩(wěn)定、內(nèi)核可裁剪,、支持眾多硬件等優(yōu)點(diǎn),,非常適合在嵌入式設(shè)備中使用。數(shù)據(jù)匯聚器所使用的軟件平臺(tái)架構(gòu)如圖3所示,。Linux內(nèi)核之下加載了眾多的驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)對(duì)各種硬件接口的統(tǒng)一文件操作,。內(nèi)核提供了一系列復(fù)雜的系統(tǒng)調(diào)用函數(shù),基于此實(shí)現(xiàn)了功能豐富的函數(shù)庫(kù)來(lái)滿足不同的功能需要,,如openssl庫(kù)是基于TCP的安全網(wǎng)絡(luò)通信協(xié)議庫(kù),。由于需要數(shù)據(jù)庫(kù)的操作,在此加入了SQLite的函數(shù)庫(kù),。另外,,數(shù)據(jù)匯集器所連接的監(jiān)測(cè)儀器各種各樣且由不同廠商生產(chǎn),所使用的串口通信協(xié)議不盡相同,,這就需要為不同種類的儀器編寫(xiě)各自的函數(shù)庫(kù),,輸出統(tǒng)一規(guī)范的數(shù)據(jù)。
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
作為分布式的監(jiān)測(cè)系統(tǒng),,在數(shù)據(jù)匯聚中的數(shù)據(jù)存儲(chǔ)非常關(guān)鍵,。單個(gè)數(shù)據(jù)匯聚器可以直接連接16臺(tái)監(jiān)測(cè)儀器,如果采用DAM數(shù)據(jù)模塊,,則可以連接到最多達(dá)128臺(tái)監(jiān)測(cè)儀器,。若以單個(gè)儀器單次測(cè)量最大數(shù)據(jù)量為100 B,同時(shí)每隔5 min測(cè)量一次,,則一天的測(cè)量數(shù)據(jù)可達(dá)到3.5 MB,,一年的數(shù)據(jù)量可為1.25 GB。對(duì)這樣大量的數(shù)據(jù)的插入,、查詢等操作就必需使用數(shù)據(jù)庫(kù)進(jìn)行管理,。
SQLite是一款優(yōu)秀的數(shù)據(jù)庫(kù),其具有零配置,、無(wú)需安裝,、數(shù)據(jù)庫(kù)存儲(chǔ)與機(jī)器字節(jié)順序無(wú)關(guān)、速度快等特點(diǎn)[4],,同時(shí)也是開(kāi)源軟件,,其全部源代碼約為3萬(wàn)多行C代碼,,并且可以嵌入到程序當(dāng)中。因此采用SQLite作為數(shù)據(jù)匯聚器的數(shù)據(jù)庫(kù)系統(tǒng)
為了避免采用一個(gè)數(shù)據(jù)庫(kù)文件來(lái)存儲(chǔ)所有的監(jiān)測(cè)數(shù)據(jù)信息,,使用在對(duì)查詢某時(shí)間段的數(shù)據(jù)時(shí)因?yàn)橐粡埓蟮臄?shù)據(jù)庫(kù)表而造成速度上的減慢,。系統(tǒng)采用分割文件的形式來(lái)存放測(cè)量數(shù)據(jù),為每一個(gè)月所存數(shù)據(jù)形成一個(gè)數(shù)據(jù)庫(kù)文件,,數(shù)據(jù)庫(kù)的結(jié)構(gòu)如表1,。
另有一個(gè)數(shù)據(jù)庫(kù)文件用來(lái)存放監(jiān)測(cè)儀器的相關(guān)信息,結(jié)構(gòu)如表2,。
2.3 軟件實(shí)現(xiàn)
數(shù)據(jù)匯聚器的軟件運(yùn)行流程如圖4所示,,當(dāng)設(shè)備上電啟動(dòng)之后進(jìn)入系統(tǒng)的初始化階段。在初始化階段包括了AT91系列特有的BootStrap程序,、U-boot以及Linux的內(nèi)核,,它們分別是一級(jí)引導(dǎo)另一級(jí)的系統(tǒng)的啟動(dòng)[5]。到最后的Linux內(nèi)核啟動(dòng)后,,就會(huì)加載在Nand Flash中的基本文件系統(tǒng),,從“/app/”目錄中加載數(shù)據(jù)匯聚器的守護(hù)程序,從而進(jìn)入不斷運(yùn)行的調(diào)度中心,。
為了保證系統(tǒng)的可靠性及穩(wěn)定性,,防止程序意外地進(jìn)入死循環(huán),使用了看門狗技術(shù),,每隔30 s必須執(zhí)行一次喂狗操作,。當(dāng)意外錯(cuò)誤發(fā)生并導(dǎo)致整個(gè)系統(tǒng)崩潰后,看門狗便自動(dòng)復(fù)位系統(tǒng),,防止設(shè)備因一次故障而無(wú)法再次工作,。
在調(diào)度中心,從儀器數(shù)據(jù)庫(kù)中加載每一個(gè)連接儀器對(duì)應(yīng)的采集配置,,主要是提取其采集周期,,使得程序可以可靠并定時(shí)地對(duì)各監(jiān)測(cè)儀器進(jìn)行自動(dòng)數(shù)據(jù)采集。數(shù)據(jù)采集模塊根據(jù)儀器的類型調(diào)用對(duì)應(yīng)的儀器操作函數(shù)庫(kù)通過(guò)RS485接口與儀器進(jìn)行通信,,并獲得儀器所測(cè)量到的數(shù)據(jù),,得到數(shù)據(jù)后會(huì)將其分別存儲(chǔ)到數(shù)據(jù)庫(kù)及緩沖區(qū)中。
同時(shí),,調(diào)度中心還會(huì)一直偵聽(tīng)上位監(jiān)測(cè)機(jī)的數(shù)據(jù)請(qǐng)求,,從而在SQLite數(shù)據(jù)庫(kù)或存取緩沖區(qū)中提取所需要的測(cè)量數(shù)據(jù)。存取緩沖區(qū)存放了最近一個(gè)小時(shí)內(nèi)所有儀器的測(cè)量數(shù)據(jù),,當(dāng)上位監(jiān)測(cè)機(jī)所請(qǐng)求的數(shù)據(jù)是在這一范圍內(nèi)時(shí),,則會(huì)從存取緩沖區(qū)中提供,從而提高了響應(yīng)的速度,。
文中論述了分布式大壩監(jiān)測(cè)系統(tǒng)的組織結(jié)構(gòu)及數(shù)據(jù)匯聚器在其中的作用,。嵌入式數(shù)據(jù)庫(kù)的引入,,可以提高對(duì)監(jiān)測(cè)數(shù)據(jù)存儲(chǔ)、查詢的效率以及可靠性,,通過(guò)與分布式的存儲(chǔ)方式及互聯(lián)網(wǎng)相結(jié)合,方便地實(shí)現(xiàn)了多監(jiān)測(cè)上位機(jī)的數(shù)據(jù)共享,,同時(shí)在一定程度上簡(jiǎn)化了大壩監(jiān)測(cè)系統(tǒng)的復(fù)雜度,。
參考文獻(xiàn)
[1] 沈振中,陳允平,,王成.大壩安全實(shí)時(shí)監(jiān)控和預(yù)警系統(tǒng)的研制和開(kāi)發(fā)[J].水利水電科技進(jìn)展,,2010,30(6):68-69.
[2] 葉慧聰,,戴瑜興,,劉玉芳.分布式大壩安全監(jiān)測(cè)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].儀表技術(shù)與傳感器,2010(5):44-45.
[3] 梁志剛.基于AT91SAM9261的嵌入式Linux的移植及其應(yīng)用研究[D].浙江工業(yè)大學(xué),,2009.
[4] 萬(wàn)瑪寧,,關(guān)永,韓相軍.嵌入式數(shù)據(jù)庫(kù)典型技術(shù)SQLite和Berkeley DB的研究[J].微計(jì)算機(jī)信息,,2006(1-2).
[5] 黃深喜,,樊曉平,劉利方.基于AT91SAM926X的嵌入式LINUX引導(dǎo)程序設(shè)計(jì)[J].微計(jì)算機(jī)應(yīng)用,,2009,,30(10):69-71.