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