文章內容
環保測量儀內的數據管理
數據管理的硬件支持多種通信方式數據管理的軟件結構數據編碼數據存儲
2004年9月(1)
摘要 重點介紹了如何通過相關硬件支持和軟件設計,來實現環保監測儀內部數據的采集、編碼、存儲、查詢及提取等管理功能。
關鍵詞 監測儀 數據管理 存儲 查詢
0 引言
本文中所說的環保監測儀,又稱“環保黑匣子”,由環保檢測部門使用于現場監視環保設備的運行狀態、污水處理結果或者所轄范圍內生產企業的排污狀況。環保監測儀不僅可采用GSM、RS-232、RS-485等多種方式直接與上位機相連或組網,快速有效地傳送實時數據,在其內部還配備有大容量數據存儲器,可長期詳盡地記錄現場歷史數據,為環保檢測提供可靠依據。如何實現監測儀的數據采集、編碼、存儲、查詢、提取等管理功能,是本文探討的重點。
設計完善、運行穩定的硬件系統是實現數據管理功能的基礎。
1.1 功能強大的中央微處理器
監測儀采用TI公司的MSP430F147型單片機。它集成了較多的片上外圍資源,包含:8通道12位A/D采樣,可方便地完成模擬量數據采集;16個帶中斷功能的I/O端口及多個普通I/O端口,無需擴展即可高速有效地完成開關量采樣的對外圍設備進行管理;內部集成32kB Flash存儲器和1kB RAM,為數據編碼、存儲提供足夠可靠的空間[1]。
1.2 內設能夠長期獨立運行的實時時鐘系統
時鐘系統由DALLAS公司的DS1302時鐘芯片、晶體振蕩器和備用鋰電池組成(硬件框圖如圖1所示)。MSP430F147只需通過3根普通I/O線即可方便快速地對其進行讀寫操作。時鐘芯片提供用于主電源和后備電源地雙電源引腳,在斷電情況下自動切換到備用鋰電池以供繼續長期(理論上可達10年之久)精確走時。同時,時鐘芯片內有32字節的高速暫存寄存器,掉電后可長時間保存數據存儲器的部分參數(如當前存儲器存儲頁數等)[2],為系統重啟后從數據存儲器斷點處開始連續存儲提供條件。
圖1 時鐘系統硬件原理圖
1.3 大容量可斷電保存的數據存儲器
監測儀內配置了ATMEL公司Data-Flash系列的AT45DB321B芯片。該芯片具有32Mbit的存儲容量(經計算在一分鐘存儲間隔的情況下,可存儲所有通道半年以上的數據),單電壓供電(2.7~3.6V),串行讀寫方式,MSP430F147只需少數幾根普通I/O線即可方便地對它進行讀寫操作。
監測儀未設置操作鍵盤和顯示部分,因此通信的可靠性就顯得尤為重要。監測儀除可采用GSM無線Modem方式遠程傳輸實時數據外,還提供RS-232接口和RS-485接口,可與上位機直接連接或組網,快速可靠地獲取實時數據和歷史數據。
1.5 系統配備自充電的備用電池及采用低功耗設計
正常狀態下,備用電池處于充電狀態,外部電源斷開時自動投入使用;同時,整個系統的硬件和軟件均按照低功耗要求設計,可保證在外部電源斷開狀況下仍能長時間(長達七天)實現數據采集和數據存儲功能。
數據采集、編碼、存儲由監控儀自行控制完成,上位機可對其中采樣通道參數(如存儲時間間隔、通道報警條件等)進行設定。一旦設定,監控儀可長久保存并按設定參數獨立工作,無需上位機干涉。數據的查詢和提取則由上位機發起,監測儀按上位機指定要求查詢數據并發送。監測儀軟件總體結構如圖2所示。
圖2 系統軟件結構框圖
檢測儀定時采集所有通道數據,經數字濾波、曲線擬合算法處理后按照設定的存儲間隔存入存儲器中。考慮到減輕CPU負荷及數據的完整性,這里沒有采用復雜的數據壓縮算法,只是對每條采樣記錄(一個存儲間隔一條)進行簡單的編碼,將記錄中的8個模擬量通道值(12位)和12個開關量通道值(共12位)編排成連續的15個字節并設置采樣記錄標志(具體編碼方式見表1),使數據更加緊湊從而提高存儲空間利用率。
表1 監測儀表采樣記錄編碼方式
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
字節1 |
模擬量通道1低8位 |
|||||||
字節2 |
保留(做報警標志用) |
模擬量通道1高8位 |
||||||
字節3 |
模擬量通道2低8位 |
|||||||
字節4 |
開關量通道1-4 |
模擬量通道2高4位 |
||||||
字節5 |
模擬量通道3低8位 |
|||||||
字節6 |
開關量通道5-8 |
模擬量通道3高4位 |
||||||
字節7 |
模擬量通道4低8位 |
|||||||
字節8 |
開關量通道9-12 |
模擬量通道4高4位 |
||||||
字節9 |
模擬量通道5低8位 |
|||||||
字節10 |
模擬量通道7高4位 |
模擬量通道5高4位 |
||||||
字節11 |
模擬量通道7低8位 |
|||||||
字節12 |
模擬量通道8高4位 |
模擬量通道6高4位 |
||||||
字節13 |
模擬量通道7低8位 |
|||||||
字節14 |
模擬量通道8低8位 |
|||||||
字節15 |
保留(數據有效標志) |
保留(頁數據結束標志) |
監測儀的歷史數據存儲在一片AT45DB321B芯片中,內部結構和引腳連續如圖3所示。該芯片的主存儲區分為8192個頁,每頁包含528個字節,主存儲區的寫入及擦除操作必須按頁進行。芯片內部帶有2個大小為528個字節的SRAM存儲區,可作為頁寫入及讀出緩沖區。
圖3 數據存儲器內部結構及引腳連接圖
①歷史數據的存儲采用按采樣時間先后順序存儲的方式,即數據存儲從AT45DB321B的第0頁開始依次存儲,一頁存滿后則轉到下一頁存儲;當整個存儲器存滿后,則重新從第0頁開始存儲,逐漸覆蓋以前的存儲數據。
②歷史數據的存儲采用分級管理的方式。數據存儲中的最小單元是每一條采樣記錄(編碼后為15個字節),但是我們必須解決的一個問題是如何為每一條記錄提供完整的時間標志(年、月、日、時、分、秒)。顯然,存儲時為每一條記錄均寫入絕對時間(需6個字節)是很不經濟的,不僅沒有必要而且會浪費大量的存儲空間。因此,這里充分利用了AT45DB321B芯片按頁寫入的性能特點,將每個數據存儲頁作為二級管理單元。AT45DB321B中每個數據存儲頁格式見表2,其記錄采樣時間順序為秒、分、時、日、月、年,采用BCD碼存放;第6字節為高字節。如表2所示,僅在每頁的頁首記下第一條采樣記錄的采樣時間,并記錄下本頁的存儲時間間隔。這樣,就可以根據首條采樣記錄的采樣時間和時間間隔推算出本頁內任何一條記錄的采樣時間。如第n條記錄的采樣時間為
式中: 為第
條記錄采樣時間;
為首條記錄采樣時間;
為本頁存儲時間間隔。
需要指出的是,必須保證一個數據存儲頁內的記錄是連續的且存儲時間間隔沒有改變。因此,當存儲時間間隔被修改或者系統發生掉電、復位時,都必須結束當前數據存儲頁進入下一個數據存儲頁。
