文章内容
环保测量仪内的数据管理
数据管理的硬件支持多种通信方式数据管理的软件结构数据编码数据存储
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条记录的采样时间为
式中: 为第 条记录采样时间; 为首条记录采样时间; 为本页存储时间间隔。
需要指出的是,必须保证一个数据存储页内的记录是连续的且存储时间间隔没有改变。因此,当存储时间间隔被修改或者系统发生掉电、复位时,都必须结束当前数据存储页进入下一个数据存储页。