智能测量系统中的海量数据存储技术

时间:2023-06-19

    摘要:介绍了智能仪器中海量数据的存储方法,并设计了一种海量数据存储模块。该模块采用Compact Flash电子盘实现了大量数据的存储,并通过串口通信与各种现场智能设备和工控系统进行数据交换。将其应用于智能测产系统中,并进行了现场实验。实验结果表明,该模块具有很高的可靠性,满足了使用要求。


在一些智能仪器中,经常需要进行大量的数据采集和存储操作。例如,在精准农业作业中需要采集田地中每一个采样点的经度、纬度、产量和湿度等信息。采样点有成千上万个,产生了大量的数据,保证这些现场数据的可靠存储是测控系统设计中的关键问题之一。对基于PC机的智能仪器,这些数据可直接以DOS或Windows文件的形式存入硬盘;而对于基于单片机的现场设备,则由于系统处理速度慢、没有操作系统支持和存储容量小等原因,难以满足上述要求。通常单片机所支持的存储单元的RAM、EEPROM或小容量的Flash存储芯片,它们的一个共同特点是受寻址空间的限制,不能满足海量存储的要求。

    为此本文设计了一种海量存储模块,它的存储单元采用大容量电子盘(64MB或更高),也称CF卡(Compact Flash Card)。CF卡体积小、重量轻、功耗低、容量大、读写速度快、机械性能优、硬件兼容性好,非常适合解决野外现场数据采集系统中数据传输及大容量存储的问题。

该存储模块由微处理芯片、扩展I/O芯片、电子盘、IDE接口以及串行接口电路等组成。它通过串口与外部设备进行命令和数据的传输,通过IDE接口实现对电子盘的操作,由微处理芯片来协调和控制各部分的工作,这样便构成了基于单片机系统的海量存储系统。

1 存储模块的组成结构

CF卡存储模块由串口、微处理芯片、I/O扩展芯片、IDE接口、电子盘组成。

1.1 CF卡的结构和读写控制

微控制器通过82C55A组成的I/O扩展电路和IDE接口来控制CF卡。由于CF卡与IDE(Integrated Drive Electronics)设备接口具有兼容性,这里IDE接口实际上实现了CF读卡器的功能,完成了50引脚CF卡接口到40引脚标准IDE接口的转换。所以借助于该IDE接口电路,微控制器读写CF卡采用的软硬件结构与控制IDE硬盘完全相同。下面对IDE接口作一简单介绍。

其中,D(15...0)是数据线,GND为地线,IOW、IOR分别为写、读信号,RESET为复位信号,/CS0、/CS1、HA(2...0)为地址信号,I/O CHRDY为驱动器就绪信号。

IDE接口基于寄存器结构,所有的输入输出均通过对相应的寄存器进行操作来实现。表1为在/CS0、/CS1、HA2、HA1、HA0信号和读、写信号控制下所选择的寄存器名称及其地址。

表1 IDE接口寄存器地址

HA2/HA1/HA0 /CS0=1,/CS1=0地址
读操作 写操作
0 0 0 数据寄存器 数据寄存器 1F0
0 0 1 错误寄存器 特性寄存器 1F1
0 1 0 扇区数寄存器 扇区数寄存器 1F2
0 1 1 扇区号寄存器 扇区号寄存器 1F3
1 0 0 柱面号寄存器 柱面号寄存器 1F4
1 0 1 柱面号寄存器 柱面号寄存器 1F5
1 1 0 磁头寄存器 磁头寄存器 1F6
1 1 1 状态寄存器 命令寄存器 1F7
 /CS0=0,/CS1=1
1 1 0 辅助状态寄存器 硬盘控制寄存器 3F6
1 1 1 地址寄存器 3F7

IDE接口的操作时序为:

(1)等待驱动器将状态寄存器中的Bit7(BUSY位)清零。

(2)向相关的寄存器写操作硬盘所需的参数,即写扇区数寄存器、扇区号寄存器、柱面号寄存器、磁头寄存器等。

(3)向命令寄存器写命令代码。

(4)使中断使能位有效。

(5)等待驱动器置DRY#,发中断请求。

IDE接口有两种读写方式:LBA(逻辑块地址)和CHS(柱面/磁头/扇区)方式。本模块使用CHS方式。

    1.2 系统硬件组成

微控制芯片采用51系列的SST89E564RD芯片,该芯片中含有1K的RAM(On-Chip RAM)和64K+8K字节的内置电可擦除存储器(Flash ROM),支持在线编程(ISP),系统开发非常简便。对于电子盘的读写只能以扇区为单位,一个扇区有512字节,因此读写少要有512字节。这就要求芯片中要有一个大于512字节的数据存储区,所以采用含有1K内存的SST89E564RD芯片是比较合适的,可以节省一个外接的数据存储器。

串口的作用是实现与外部设备之间的命令和数据传输。SST89E564RD共有两个串口,一个用来实现与单片机系统之间的通信,另一个用来实现与PC机之间的通信。与PC机相连的串口采用一个MAX232芯片来实现电平转换。这样,该模块可以在现场接收来自于单片机采集系统的数据并实时存储,而存储的数据也能被PC机读取,并进行事后数据分析。

标准的IDE接口有40个引脚,其中控制和数据引脚共有24个,这对于51系列芯片来说是无法控制的,所以需要一个I/O扩展芯片82C55A来将I/O口扩展到24个,以实现标准IDE接口和微控制器的连接。82C55A的扩展I/O电路,CF卡的IDE接口电路。

2 CF卡存储模块的程序结构

CF卡存储模块的程序采用C51语言编写,主要包括主程序和初始化、写扇区、读扇区和串口输入输出子程序等。串口输入采用硬件中断方式。程序能够接收来自于两个串口的命令并执行相应的数据读写操作。

    主程序的任务就是等待从串口中输入的命令。当串口中有字符输入时,首先判断输入的命令是否为真命令,当为真命令后,就调用相应的命令函数。

在初始化子程序中完成初始化串口和电子盘,设置串口的工作方式和合适的波特率,并且使电子盘处于工作状态。

当接收到来自于串口输入的写扇区命令后,系统将在规定时间内等待扇区号的输入和数据的输入。如果超出规定时间,则系统会加到主程序的等待状态,这样防止系统进入别致个死循环。然后系统就会驱动IDE接口,把数据写入指令的扇区中。

对于读扇区命令,同样它也会在规定的时间内等待扇区号的输入,然后从指定的扇区中读出数据,并从串口将这些数据送出。

3 存储模块的应用

在精准农业的谷物产量在线测量过程中,需要实时采集收割机作业点的GPS位置信息、收割机行走速度、谷物的瞬时产量和湿度等信息,经过数据处理得到田间每一位置的作物产量信息,并及时存储起来。通过农业决策系统分析现场采集的田间产量信息,掌握土地的生产潜力差异,从而为下一年农业耕作提供指导,以实现“按需投入,提高资源利用率”。

    为了实现现场大量数据的存储,将上述存储模块用于该在线智能测产系统,并通过串口实现存储模块与测产主控制模块之间的数据通信。测产主控制模块由嵌入式微控制器、GPS接收器、割台传感器、速度传感器、产量传感器、湿度传感器等组成,安装在收割机上。在小麦、水稻等的收割过程中,主控制模块将现场采集的传感信号经过处理之后传送给存储模块保存。收割结束后,将存储模块上的产量信息读入到PC机。PC机与存储模块的数据通信程序采用VB6.0编写,它通过串口读取数据,并将其存储于Access数据库中。

自2002年5月以来,多次将该在线测产系统用于小麦和水稻收割过程的在线测产实验,该系统一直运行稳定,实现了数据的可靠存储和读取。实验中采集了大量现场数据,为进一步进行精准农业的研究奠定了坚实基础。

本文讨论了基于单片机的智能仪器海量数据存储方法,并设计了一种通用模块。为了验证其性能,还将该模块应用于精准农业的智能测产系统中。实验表明,此模块不仅成本低,而且运行可靠,为嵌入式测控系统的数据和工作参数的存储提供了很好的解决方案。

上一篇:一款集成HUB的USB设备控制器的设计
下一篇:基于LINUX的嵌入式网络存储器设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料