文獻(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ì)開發(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)過處理后變成可以識(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),使得可以通過遠(yuǎ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用來存放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)單的按鍵及液晶,用來實(shí)現(xiàn)對(duì)RS485參數(shù)及TCP/IP參數(shù)的配置操作。數(shù)據(jù)匯集器所接的設(shè)備可以達(dá)到16個(gè),所以AT91SAM9261自身提供的串口遠(yuǎn)遠(yuǎn)不夠,通過采用ALTERA公司的EPxxxx型FPGA來完成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)秀的開源操作系統(tǒng),具有性能穩(wěn)定、內(nèi)核可裁剪、支持眾多硬件等優(yōu)點(diǎn),非常適合在嵌入式設(shè)備中使用。數(shù)據(jù)匯聚器所使用的軟件平臺(tái)架構(gòu)如圖3所示。Linux內(nèi)核之下加載了眾多的驅(qū)動(dòng)程序來實(shí)現(xiàn)對(duì)各種硬件接口的統(tǒng)一文件操作。內(nèi)核提供了一系列復(fù)雜的系統(tǒng)調(diào)用函數(shù),基于此實(shí)現(xiàn)了功能豐富的函數(shù)庫(kù)來滿足不同的功能需要,如openssl庫(kù)是基于TCP的安全網(wǎng)絡(luò)通信協(xié)議庫(kù)。由于需要數(shù)據(jù)庫(kù)的操作,在此加入了SQLite的函數(shù)庫(kù)。另外,數(shù)據(jù)匯集器所連接的監(jiān)測(cè)儀器各種各樣且由不同廠商生產(chǎn),所使用的串口通信協(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ù),其具有零配置、無需安裝、數(shù)據(jù)庫(kù)存儲(chǔ)與機(jī)器字節(jié)順序無關(guān)、速度快等特點(diǎn)[4],同時(shí)也是開源軟件,其全部源代碼約為3萬多行C代碼,并且可以嵌入到程序當(dāng)中。因此采用SQLite作為數(shù)據(jù)匯聚器的數(shù)據(jù)庫(kù)系統(tǒng)
為了避免采用一個(gè)數(shù)據(jù)庫(kù)文件來存儲(chǔ)所有的監(jiān)測(cè)數(shù)據(jù)信息,使用在對(duì)查詢某時(shí)間段的數(shù)據(jù)時(shí)因?yàn)橐粡埓蟮臄?shù)據(jù)庫(kù)表而造成速度上的減慢。系統(tǒng)采用分割文件的形式來存放測(cè)量數(shù)據(jù),為每一個(gè)月所存數(shù)據(jù)形成一個(gè)數(shù)據(jù)庫(kù)文件,數(shù)據(jù)庫(kù)的結(jié)構(gòu)如表1。
另有一個(gè)數(shù)據(jù)庫(kù)文件用來存放監(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è)備因一次故障而無法再次工作。
在調(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ù)通過RS485接口與儀器進(jìn)行通信,并獲得儀器所測(cè)量到的數(shù)據(jù),得到數(shù)據(jù)后會(huì)將其分別存儲(chǔ)到數(shù)據(jù)庫(kù)及緩沖區(qū)中。
同時(shí),調(diào)度中心還會(huì)一直偵聽上位監(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ǔ)、查詢的效率以及可靠性,通過與分布式的存儲(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)的研制和開發(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] 萬瑪寧,關(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.