本帖最后由 zhuxiu2 于 2012-3-12 10:03 编辑
引言
在现场测控系统中,RTU(远程测控终端)存储容量、存储数据的转移问题始终是RTU的重要环节。RTU的存储容量一般为几十K~几百K字节,数据转移通常采用不掉电静态RAM、EEPROM存储模块,或采用便携式计算机通过串行口读取RTU数据。无论采用哪种方法都存在一定的局限性。
首先存储容量小,对于大量的数据存储显得比较紧张。对于数据转移,如果采用存储模块,虽然携带方便但不是通用设备,其成本较高,同时不能与计算机兼容,要将存储模块的数据录入计算机还需要专用的读取设备;如果采用便携式计算机读取RTU数据,虽然读取方便,但在野外便携式计算机也是一个不小的包袱。
随着电子技术的发展,移动存储介质普遍采用SD卡。SD卡的存储容量以GB为单位,它们相对于RTU原先的存储模块来说都是海量存储,所有数据存也无需进行压缩处理,可以在文件级与计算机兼容。即便是对于那些小数据量存储的RTU,虽然只依靠单片机内部的 FLASH就能满足存储要求,然而采用串行接口就能方便地用一张SD卡分别读出多个RTU的数据。
如今,SD卡已经越来越普及和成熟,低成本、高稳定性、较高的数据传输速率和即插即用的方便性,使其备受硬件厂商的青睐。随着数据采集和嵌入式用户对移动存储的需求越来越大,具有串行接口的存储设备以其优异的性价比和灵活性常用来进行数据的存储和交换,所以在嵌入式系统中实现对SD卡的直接读写是非常有价值的。
1
SD卡数据存储设备开发的一般过程
1.1 主控芯片的选择
为实现系统高可靠性、高效率的工作,必须采用基于ARM架构的高性能32位嵌入式微处理器作为系统的管理核心,通过与高效的嵌入式操作系统相结合,采用独特的动态内存分配算法,以此管理文件系统对内存的消耗和释放,提高数据的传输效率,避免数据丢失,实现实时数据的可靠存储。
1.3 软件设计
a 首先初始化SD/TF卡、检查状态、扇区读写等基本操作。文件系统层按照PC文件系统要求设计,如FAT表、文件目录表等兼容PC机的文件管理系统,从而能够大大简化后端数据的分析和处理。文件操作层包括文件的建立、读写、删除等。
b 当检测到有串口数据,系统自动在SD/TF卡上创建一个事先定义好的文件夹,目录下生成一个存储数据文件,进行实时数据存储。文件夹名称可通过配置软件自定义命名,例如2011年的数据,文件夹名称可以定义为20111001;数据存储文件为.TXT文件,系统自动创建,自动编号,不重复覆盖,便于文件管理。
c 由于数据采集系统的限制和具体环境的要求,便携式RS232/485数据存储必需适合长期无人值守、速度快、通用性好。为了能够长期进行数据存储除了采用更大容量的SD/TF卡外,如果几G甚至几十G的数据同时存储在同一个文件中,这样大量的数据后端分析和处理必定会给我们造成巨大的麻烦,因此要求便携式数据存储的FAT32文件系统的处理更加完善、更加智能化。这就需要探索一种更好的文件管理方式,经过多次的实验与尝试,采用定时创建数据存储文件进行存储,有利于对数据进行更有效的管理,更好的分析处理。例如:假定用户通过配置软件设置间隔24个小时即一天(根据用户设备具体的存储数据量大小情况决定时间)创建一个数据储存文件,那么N天后,文件夹20111001下将自动创建有N个TXT文件分别为0001.TXT、0002.TXT……N.TXT,各个时段的数据将完整的保存在相对应的文件中,不丢失任何字节。
d 在一些特定应用场合,并不需要对数据进行实时处理和显示,只是记录下原始数据,将其作为一个“黑匣子”,为后端处理做准备。这就需要SD/TF卡可以循环使用,当数据量达到已设定的存储卡容量后,自动覆盖原有的存储文件。
f 以往的大容量数据储存系统只具有被动的接收数据进行保存功能,然而随着技术的不断更新,已经远远不能满足现有数据采集设备的需求;更多的用户设备,需要由数据储存系统处于主机状态,主动发送握手信号,用户设备接收到信号后被动反馈信息,然后由数据储存系统存储数据。串行通信接口由用户来控制,用户可以设置10多条不同的“轮询”指令,和间隔时间。系统在主程序中初始化,采用串行口工作方式由系统主机向数据设备进行呼叫,定期读取数据或者写入数据,
2 应用实例
下面从硬软件两方面具体介绍本案例,重点分析了初始化问题。本例研究开发了一种在ARM上研究实现FAT32(兼容FAT16)的文件系统,从而使得串口设备可以自由接入,现场采集的数据可以以文件的形式存储记录。这样,就大大拓宽了传统的数据测控终端在长时间大容量的数据存储技术上的限制。
3.初始化分析
随着产品不断更新,初始化信息不能完全获取使得一些不同的设备只能针对不同SD卡。本实验证明,初始化过程完成后再解决了时序问题,就可以解决大部分SD卡的读写。
正如前面所述,目前社会上很多人只能完成针对某些特定SD卡的读写,本实验中的重点就是先完成SD卡的初始化,让ARM处理器先能认识大多数SD卡,然后对它们进行批处理方式的读写,再加载文件系统,最后完成对SD卡在文件级别上的读写。分三个阶段:控制传输的建立阶段、数据阶段、状态阶段。
3.结束语
文中论述的基于ARM与SD卡的大容量数据存储方案现已完成了模块调试。实际测试中,将终端的模拟采集数据送入SD卡,以ASCII文件方式存储,成功存入自定的文件中,可在PC 机中打开, 也可以直接用上层测控软件进行进一步的处理。
本文的研究是在水利自动化的背景下进行的,但在结构上这种终端明显具有广泛的适应性。除了应用于水利自动化信息测报外,还可以用于电力系统的现场测报和数据记录、交通智能化管理以及环保、气象、地质、民用领域如数码相机等。因此,文中研究的设计模式和实现技术的应用前景将是非常广阔的。
在数据采集和测量仪器尤其是便携式设备中,数据存储和传输是不可避免的问题,大量的重要数据是否能可靠的保存至关重要,百度“广州市乐诚电子科技有限公司”或者“LCA数据记录仪”了解更多资料。
|