《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式數(shù)據(jù)庫(kù)的分布式大壩監(jiān)測(cè)數(shù)據(jù)匯聚器設(shè)計(jì)
基于嵌入式數(shù)據(jù)庫(kù)的分布式大壩監(jiān)測(cè)數(shù)據(jù)匯聚器設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2011年第5期
沈 雁,戴瑜興,湯 睿
湖南大學(xué) 電氣與信息工程學(xué)院,湖南 長(zhǎng)沙410082
摘要: 采用ARM9及嵌入式數(shù)據(jù)庫(kù)設(shè)計(jì)開發(fā)了基于分布式技術(shù)的大壩監(jiān)測(cè)系統(tǒng)的數(shù)據(jù)匯聚器,論述了分布式大壩監(jiān)測(cè)系統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)匯聚器的作用。重點(diǎn)研究了數(shù)據(jù)匯聚器的硬件構(gòu)成、軟件平臺(tái)以及采用SQLite數(shù)據(jù)庫(kù)的軟件實(shí)現(xiàn)。該設(shè)備可以有效地應(yīng)用于大壩的安全監(jiān)測(cè)。
中圖分類號(hào): TP274
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)05-0039-03
Design of data aggregator of distributed dam monitoring based on embedded database
Shen Yan,Dai Yuxing,Tang Rui
College of Electrical and Information Engineering ,Hunan University,Changsha 410082,China
Abstract: Using ARM9 and embedded database, the data aggregator of distributed dam monitoring system was designed, the structure of the system and the function of the data aggregator was discussed. And hardware structure, software platform and software implementation which based on SQLite database was studied as a focal point. This device can be used for dam safety monitoring efficiently.
Key words : dam monitoring;embedded database;remote access;distributed;data collection


    隨著水利資源的運(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。