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