由于人们对数字形式信息的需求量越来越大,数据采集及其应用技术受到了越来越广泛的关注和应用。随着技术的发展,数据采集系统正向着高精度、高速度、稳定可靠和集成化的方向发展。目前,大多数的数据采集监控系统都是独立的系统,只能进行数据的现场采集或存储,已不能满足应用的需要,迫切要求接入网络实现远程监控。现代数据采集技术的发展是建立在新型采集系统软硬件平台性能提高的基础之上的。具有强大功能的32位微控制器在一些高端仪器仪表中得到了广泛的应用,而将GPRS无线传输模块嵌入其中,将采集到的数据以无线的方式接入Internet,实现远程监控,非常适合工作人员在比较恶劣的环境下或者需要对多种参量进行采集时使用。而高性能微处理器的应用也极大提高了数据采集的精度和速度。
1系统整体方案
整个远程多路数据采集系统如图1所示。当无线终端成功连接到互联网后,采集终端将传感器采集到的数据经放大滤波后发送到ARM微控制器,经过A/D转换以及相关处理后,通过RS232口将数据发送到GPRS无线终端,GPRS无线终端又将这些数据打成一个个的IP包,经GPRS空中接口接入无线网络,并由移动通信服务商转接到Internet,最终通过各种网关和路由到达统一的远程数据处理中心,数据中心接收数据并对数据做后续处理。
图1GRPS无线数据采集终端
远程数据中心也可以发送数据信息(各种命令及诊断信息)到无线数据采集模块,通过GPRS终端上的RS232接口输出到ARM微控制器上,采集终端在接收到远程数据中心的信息后,进行解码并执行相应的操作,以实现对采集现场的控制。
GPRS无线终端嵌入了TCP/IP协议和UDP协议(用户可选),本系统采用TCP/IP协议,实际上GPRSDTU上实现的协议栈是TCP/IPOverPPP。
2硬件组成
2.1传感器及放大器
理论上,该系统可以同时进行16路数据的采集,但在实际的调试中,只选用了2路来做模拟。
一路选用温度传感器,表面/液体热电偶NR281530,获取实时现场的温度,另一路采用压力传感器,PPM241BY油井专用型压力传感器,此系统在油田油井中具有较好应用。
在前端信号处理单元,由于各种传感器的输出参数不同,输出信号不仅电平低、内阻高,而且有共模电压以及现场恶劣环境的影响,因此,在选用放大芯片时要综合考虑以上因素。选取常用的MCP6S2X可编程增益放大器对原始信号进行放大,OP07CP做后续滤波芯片。
2.2微处理器
微处理器是系统工作的核心,其性能的好坏直接决定了数据采集系统性能的优劣。基于本采集系统对数据实时性和精度的要求,以及易操作性方面的考虑,选择32位的ARM7系列处理器,它具有以下特点:
体积小、低功耗、低成本、高性能;
支持Thumb(16位)/ARM(32位)双指令,能很好兼容8位/16位器件;
大量使用寄存器,指令执行速度快;
指令长度固定;
寻址方式灵活简单,执行效率高
本系统采用PHILIPS公司的单片32位微控制器LPC2134,它是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI2STMCPU,含有128KB的FLASH,该存储器用作代码和数据的存储。
LPC2134拥有两个异步串行口UART0和UART1,本系统中将UART0与GPRS终端相连,实现数据传输。它采用16字节收发FIFO,内置波特率发生器,包含使能实现软件控制的机制。
硬件SPI接口是一个同步、全双工串行接口,最大数据位速率为时钟速率的1/8,可配置为主机或从机。本系统中SPI接口作为主机,根据不同的中断,控制多个从机,包括可编程增益放大器MCP6S2X,使用SPI总线访问SD卡,以及控制开发板上的数码管显示。
A/D转换器是2个8路10位逼近式模/数转换器,测量范围是0~313V,10位转换时间大于或等于2144μS,一个或多个Burst转换模式。
2.3GPRS终端
GPRS终端选用的是南京傲屹电子有限公司的AYG285C,它是采用GPRS模块专为工业集成设计的,在温度范围、震动、电磁兼容性和接口多样性等方面均采用特殊设计,保证了恶劣环境下的工作稳定性,基于GPRS公网的数据传输具有通信范围广,传输稳定可靠等特点。通过按键可以进行模块参数设置或者进行网络数据通信,串口波特率在300~115200bps可调,校验位可选:无校验,奇校验,偶校验。支持协议PPP、IP、TCP、UDP、DNS、PING的客户端功能。另外,电源、工作状态有LED指示,方便现场查看MODEM运行情况。
3系统软件实现
3.1μC/OS2Ⅱ嵌入式操作系统
当需要进行多任务处理和调度时,一个嵌入式实时操作系统就必不可少。为此系统中采用源码公开的μC/OS2Ⅱ操作系统,它具有执行效率高、占用空间小、实时性能优良以及可扩展性强等特点,最小内核可编译至2K字节。
μC/OS2Ⅱ的移植需要满足以下要求:
处理器的C编译器可以产生可重入代码;
可以使用C调用进入和退出临界区代码;
处理器必须支持硬件中断,并且需要一个定时中断源;
处理器需要能够容纳一定数据的硬件堆栈;
处理器需要有能够在CPU寄存器与内核和堆栈交换数据的指令。
本系统使用的LPC2134ARM7处理器满足以上所有条件,因此可以对其进行移植。根据μC/OS2Ⅱ的要求,移植μC/OS2Ⅱ到一个LPC2134ARM7体系结构上需要提供2个或3个文件:OSCPU.H(C语言头文件)、OS-CPU-C.C(C程序源文件)及OS-CPU-A.ASM(汇编程序源文件)。
数据采集任务中,采用C语言进行编程,但对于系统的初始化,仍然采用汇编来制作启动代码,它可以实现向量表定义、堆栈初始化、系统变量的初始化、中断系统初始化、I/O初始化、外围初始化、地址映射等操作。
芯片复位后,系统初始化流程如图2所示。
图2系统初始化流程图
3.2接口程序及SD卡驱动的实现
在实时内核下,接口程序读取A/D采样数据的方法通常有三种:程序延时法、ADC转换完毕时产生中断法和程序循环等待的方法。其中循环等待的方法CPU开销小,不需要中断服务,比较适合嵌入式系统中采用。
循环等待A/D读取数据的伪代码如下:
之间通过串口相连,采集数据先通过开发板串口UART0发送到无线数据终端AYG285C的缓冲区,然后缓冲区将数据打成一个个数据包,通过GPRS网络发送到远程数据处理中心。因此,在μC/OS2Ⅱ下LPC2134的UART底层接口驱动显得尤为重要。
UART0初始化函数片断如下:
在本系统中,串口通信采用8位数据位,1位停止位,奇校验,无流控制。在实际使用中为接收数据稳定波特率设置为9600bps效果较好。在测试系统中,测量到的数据范围为10-6~101,有效数字为4位,所以在发送数据时采用每帧数据由3个字节组成,第1个字节为数据指数部分,高四位为0,低四位中的第四位表示指数符号,0表示正数,1表示负数;其余三位表示指数的数值部分。
后续两个字节为数据底数部分,采用压缩的BCD码编码方式,高位在前,低位在后,即一个字节表示两位十进制数,则两个字节表示四位十进制数。
LPC2134的UART0使用中断方式进行通信,这样不会占用CPU很多时间,效率比较高。当中断服务处理子程序接收到一次中断,它仅能知道UART0产生了中断,还需要查询中断标志寄存器U0IIR,依据不同中断源类型进行不同处理。在处理完当前的中断源类型之后,不能立即退出服务,而应当继续判断U0IIR寄存器最低位是否为0。
如果为0,则表示还有尚未处理的中断,应该继续根据U0IIR[3∶0]判断中断源类型,进行处理,直到U0IIR的最低位为1,最后发送中断结束命令结束中断服务处理程序。
SD卡读写软件移植到ARM7微处理器LPC2134上的结构图如图3所示。其中硬件抽象层是读写SD卡的硬件条件配置,是与硬件相关的函数;命令层包含SD卡的相关命令以及卡与主机之间数据流的控制,这一层与实时操作系统μC/OSⅡ相关,与硬件无关;应用层是向应用程序提供卡的API函数,这一层由实时操作系统μC/OSⅡ控制。
图3SD卡读写软件移植结构图
3.3应用程序实现
系统初始化完成后,创建各个任务,进入多任务调度处理。应用程序框架流程如图4所示。
图4应用程序框架流程图
本系统的主要任务是完成数据采集。系统在得到远程数据中心的采集命令后,选择适当的采集通道,并设置A/D模块参数。在采集过程中判断是否要停止,如果停止,任务处于等待挂起状态。
4结语
本系统采用了ARM+RTOS以及ARM+GPRS的方案,选取适当的器件构成了多路的数据采集系统,具有一定的实用价值。考虑到现场采集到的多是小信号,为了有较好的准确度和精确度,对A/D后的采集数据还要进行分析和调整,然后再发送到数据处理中心。为此,可以进行反复实验,获得多组数据,最后通过最小二乘法曲线拟合来提高准确度。另外,随外界环境的变化,也可以修改拟合曲线以适应具体的应用。随着3G时代的来临,大量数据信息的传输成为可能,可以考虑采集现场的相关视频信号。在短消息功能,数据加密技术以及软件操作和文件管理上还有待进一步开发和优化。