《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 智能测产系统中的海量数据存储技术

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

2008-10-30
作者:索远强 周国祥 苗玉彬 刘

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


  在一些智能仪器中,经常需要进行大量的数据采集和存储操作。例如,在精准农业作业中需要采集田地中每一个采样点的经度、纬度、产量和湿度等信息。采样点有成千上万个,产生了大量的数据,保证这些现场数据的可靠存储是测控系统设计中的关键问题之一。对基于PC机的智能仪器,这些数据可直接以DOS或Windows文件的形式存入硬盘;而对于基于单片机的现场设备,则由于系统处理速度慢、没有操作系统支持和存储容量小等原因,难以满足上述要求。通常单片机所支持的存储单元为RAM、EEPROM或小容量的Flash存储芯片,它们的一个共同特点是受寻址空间的限制,不能满足海量存储的要求。
  为此本文设计了一种海量存储模块,它的存储单元采用大容量电子盘(64MB或更高),也称CF卡(Compact Flash Card)。CF卡体积小、重量轻、功耗低、容量大、读写速度快、机械性能优、硬件兼容性好,非常适合解决野外现场数据采集系统中数据传输及大容量存储的问题。
  该存储模块由微处理芯片" title="处理芯片">处理芯片、扩展I/O" title="I/O">I/O芯片、电子盘、IDE接口以及串行接口电路等组成。它通过串口与外部设备进行命令和数据的传输,通过IDE接口实现对电子盘的操作,由微处理芯片来协调和控制各部分的工作,这样便构成了基于单片机系统的海量存储系统。
1 存储模块的组成结构
  CF卡存储模块由串口、微处理芯片、I/O扩展芯片、IDE接口、电子盘组成。图1是其组成结构图。


1.1 CF卡的结构和读写控制
  如图1所示,微控制器通过82C55A组成的I/O扩展电路和IDE接口来控制CF卡。由于CF卡与IDE(Integrated Drive Electronics)设备接口具有兼容性,这里IDE接口实际上实现了CF读卡器的功能,完成了50引脚CF卡接口到40引脚标准IDE接口的转换。所以借助于该IDE接口电路,微控制器读写CF卡采用的软硬件结构与控制IDE硬盘完全相同。下面对IDE接口作一简单介绍。
  IDE接口引脚图如图2所示。其中,D(15...0)是数据线,GND为地线,IOW、IOR分别为写、读信号,RESET为复位信号,/CS0、/CS1、HA(2...0)为地址信号,I/O CHRDY为驱动器就绪信号。


  IDE接口基于寄存器结构,所有的输入输出均通过对相应的寄存器进行操作来实现。表1为在/CS0、/CS1、HA2、HA1、HA0信号和读、写信号控制下所选择的寄存器名称及其地址。
  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接口和微控制器的连接。图3所示为82C55A的扩展I/O电路,图4为CF卡的IDE接口电路。


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


  主程序的任务就是等待从串口中输入的命令。当串口中有字符输入时,首先判断输入的命令是否为真命令,当为真命令后,就调用相应的命令函数。
  在初始化子程序中完成初始化串口和电子盘,设置串口的工作方式和合适的波特率,并且使电子盘处于工作状态。
  当接收到来自于串口输入的写扇区命令后,系统将在规定时间内等待扇区号的输入和数据的输入。如果超出规定时间,则系统会回到主程序的等待状态,这样防止系统进入另一个死循环。然后系统就会驱动IDE接口,把数据写入指定的扇区中。
  对于读扇区命令,同样它也会在规定的时间内等待扇区号的输入,然后从指定的扇区中读出数据,并从串口将这些数据送出。
3 存储模块的应用
  在精准农业的谷物产量在线测量过程中,需要实时采集收割机作业点的GPS位置信息、收割机行走速度、谷物的瞬时产量和湿度等信息,经过数据处理得到田间每一位置的作物产量信息,并及时存储起来。通过农业专家决策系统分析现场采集的田间产量信息,掌握土地的生产潜力差异,从而为下一年农业耕作提供指导,以实现“按需投入,提高资源利用率”。
  为了实现现场大量数据的存储,将上述存储模块用于该在线智能测产系统,并通过串口实现存储模块与测产主控制模块之间的数据通信。测产主控制模块由嵌入式微控制器、GPS接收器、割台传感器、速度传感器、产量传感器、湿度传感器等组成,安装在收割机上。在小麦、水稻等的收割过程中,主控制模块将现场采集的传感信号经过处理之后传送给存储模块保存。收割结束后,将存储模块上的产量信息读入到PC机。PC机与存储模块的数据通信程序采用VB6.0编写,它通过串口读取数据,并将其存储于Access数据库中。
  自2002年5月以来,多次将该在线测产系统用于小麦和水稻收割过程的在线测产实验,该系统一直运行稳定,实现了数据的可靠存储和读取。实验中采集了大量现场数据,为进一步进行精准农业的研究奠定了坚实基础。
  本文讨论了基于单片机的智能仪器海量数据存储方法,并设计了一种通用模块。为了验证其性能,还将该模块应用于精准农业的智能测产系统中。实践表明,此模块不仅成本低,而且运行可靠,为嵌入式测控系统的数据和工作参数的存储提供了很好的解决方案。
参考文献
1 陈嘉庆.多国单片计算机实用技术.北京:电子工业出版社,2002
2 张培仁. 基于C语言编程MCS-51单片机原理与应用.北京:清华大学出版社,2003
3 王义方.微型计算机原理及应用.北京:机械工业出版社,2002
4 金炯泰.KEIL 8051 C编译器.北京:北京航空航天大学出版社,2003

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。