基于ARM7无线传输的热电偶远程监控系统
2010-08-14明五一沈娣丽刘武发
明五一,沈娣丽,刘武发
(1.郑州大学 机械工程学院,郑州450001; 2.中州大学)
明五一(硕士研究生),主要从事机电一体化、嵌入式设备软件开发研究;沈娣丽(讲师),主要从事嵌入式设备研究、组态软件开发工作;刘武发(副教授),主要从事机电一体化技术研究。
引 言
目前,很多功能强大的嵌入式处理器都基于ARM内核构建。这样的配置系统性价比高,可扩展性能强。
工业检测系统应用中,作为一种主要的测温元件,热电偶具有结构简单、制造容易、使用方便、测温范围宽、测温精度高等特点,可以广泛应用于工业温度控制过程中。但是热电偶输出电势极其微弱,而且存在冷端温度误差和输出电势与被测温度的非线性问题,易引起较大测量误差,需要极其复杂的信号处理电路。MAX6675是Maxim公司推出的K型热电偶串行模数转换器,该型号芯片能够独立完成信号放大、冷端补偿、线性化、A/D转换及SPI串口数字化输出功能,能够简化热电偶测量智能装置的软硬件模块的设计。
移动检测终端可以快速投入现场,系统调试周期短。随着无线3G业务的普及,各种基于无线通信的传输成本快速下降,无线、移动、远程测温控制系统将更加普及。国内外基于无线通信的相关研究也开始变得很热门,有相关产品投入市场。本文根据温度监控领域的发展趋势,开发一套基于ARM7处理器和GPRS无线传输模块的嵌入式无线热电偶测温控制系统。
1 系统的构成和工作原理
温度远程无线监控系统以应用为中心,由SPI接口连接MAX6675采集温度数据,通过串口发送到华为GTM900A无线传输模块。由于GPRS网络(2.5G移动通信技术)支持TCP/IP协议,这使得无线数据传输变得更加轻松,而且相对价格比短消息等要便宜许多。为了能够远程设置参数,系统支持通过短信的方式设置相关核心参数。终端设备系统结构框图如图1所示。
图1 系统结构框图
本系统的终端设备采用模块化的结构设计思想,将终端设备分为主控模块和各个功能模块。主控模块和各功能模块之间有统一的或者特定的接口形式,用户可根据实际情况选用不同的功能模块。各种类型的数据可以在系统中同时传输而不相互干扰,同时也可根据市场变换的需求继续扩展其他功能模块。
温度远程无线监控系统的几个主要模块功能如下:
①传感器数据处理模块。根据实际需要,采集热电偶温度传感器数据。当采集到的数据值高于或者低于报警值时,启动自动报警模块,提醒巡查人员注意。
②LCD显示模块。显示检测到的温度数据及相关的系统核心参数,以便相关工作人员观测数据。
③自动报警模块。在系统检查到有效报警信息后,该模块马上使嵌入式设备上的蜂鸣器发出警报声,与此同时发送报警信息。该信息通过GPRS网络及时传回远端的监控管理中心,以便工作人员及时发现并采取相应的处理措施。
④参数配置模块。系统的核心参数配置通过I2C总线保存在Atmel AT 24C01芯片里,系统启动时读取相关参数。参数的设置可以通过多种方式(串口、短信和网络)实现。
⑤ARM7核心控制模块。采用低功耗、高性能嵌入式SoC芯片Samsung S3C44B0X以及8MB RAM和2 MB Flash ROM。
⑥热电偶温度采集处理模块。通用I/O口用软件来模拟SPI操作,实现ARM7与MAX6675的通信。
⑦GPRS无线数据传输模块。考虑到系统的实际需求,采用华为GTM900A模块。该模块支持AT指令,模块的控制、数据的传输可以通过AT指令发送或者读取该设备的串口。
⑧远程监控软件模块。远程监控软件采集端和控制端。采集端需要连接到Internet上,有固定的IP地址,负责远程终端数据的接收和发送。控制端由操作人员使用,在界面上显示各个终端的运行情况、当前的实时温度数据,操作人员的指令通过控制端下发到采集端,最后通过采集端发送到各个对应的终端。
2 系统的软件设计流程
系统启动时,为支持通过串口设置相关参数,按照顺序提示用户输入相关配置参数。如果用户超过了一定的时间不操作,系统就进入初始化模块,启动GPRS模块,对短信命令进行处理(初始化自有点到点协议模块)。主应用程序的流程如图2所示。
系统运行中,Timer0的中断处理程序处理自有的点到点协议,包括处理“登陆”、“心跳”和“退出”命令。在系统的发送数据缓冲队列中读取数据,将数据打包成“数据”命令,通过串口发送到GPRS模块。如果GPRS模块有数据,再在串口中读出远程监控中心发送过来自有协议的各种命令,只将“数据”命令解析后存入接收数据缓冲队列中,其他协议维持命令由相应的子程序进行处理。
主应用程序通过少数几个系统状态全局变量、发送数据缓冲队列和接收数据缓冲队列与数据通信模块进行交互,也就是与Timer0的中断处理程序进行交互。主应用程序不需要了解自有点到点协议的编解码过程以及数据链路的维护工作,使模块直接的耦合度降低。主应用程序通过SPI总线实时地读取MAX6675采集到的热电偶温度数据,实时检查GPRS模块状态(如果GPRS模块错误超过规定次数,重新启动GPRS模块),实时地将报警数据存入发送数据缓冲队列中并同时启动报警模块,实时地处理接收数据缓冲队列中的数据,实时处理GPRS模块短信命令数据,实时显示系统采集的温度数据和状态信息,定时地将采集到的数据存入发送数据缓冲队列中。
3 MAX6675与S3C44B0X的接口实现
MAX6675芯片内部集成了冷端补偿电路。该芯片有简单的3位串行SPI接口,可将温度信号转换成12位的数字量,温度分辨率达0.25℃。芯片内部含有热电偶断线检测电路。其冷端补偿温度范围为-20~80℃,应用的环境温度范围比较宽,可以测量0~1 023.75℃的被测温度,基本符合工业温度测量的实际需要。当MAX6675的CS引脚从高电平变为低电平时,芯片将停止任何信号转换并在时钟SCK的作用下通过SO引脚向外输出已转化的数据,此数据是经过放大了的A/D转换后的数字量与冷端补偿之和;相反,当芯片的CS引脚从低电平变回高电平时,MAX6675芯片将进行新的温度数字化工作。CS引脚从高电平变为低电平时,第1个字节D15出现在引脚SO上。该系列芯片的1个完整的数据读过程需要16个时钟周期,数据的读取通常在SCK的下降沿完成。需要指出的是,此芯片的A/D转换耗时在0.17~0.22 s之间,比一般的A/D转换芯片μ s级的转换时间要长许多,相应的温度转换模块需要进行相应的优化设计,不能占用太多CPU资源。
图2 主应用程序流程
MAX6675采用标准的 SPI串行外设总线与 ARM7进行对接,因此该芯片只能作为从设备(即串行接口芯片)。SPI(Serial Peripheral Interface)总线系统是一种同步串行外设接口,是Motorola公司推出的总线标准,它可以使ARM7单片机与各种外围设备以串行方式进行通信。由于S3C44B0X单片机不具有SPI串行总线接口,在芯片对接时可以使用通用I/O口,用软件来模拟SPI操作,包括串行时钟、数据输入/输出。
4 GPRS无线数据传输模块
温度采集处理模块采集到的数据通过SPI总线传送到处理器,经过串口AT指令传输到GPRS模块,然后由GPRS模块通过GPRS网络和Internet网络将数据传送到远端接在互联网上的控制中心主机,在控制中心的网络上可以通过组态软件建立小型集散控制系统。至于组态软件的选择,可以根据需要选用商业组态软件,或者像笔者硕士毕业论文所做的小型集散控制系统控制软件。
有关利用AT命令操作GPRS模块在相关文献中已有描述,这里以华为GTM900A模块为例说明相关操作。表1描述了华为GPRS模块AT指令基本功能指令集,通过对这些指令的运用就可以进行GPRS模块的初始化、打开链路、发送数据、接收数据、关闭链路等一些常用的操作。
表1 华为GPRS模块AT指令基本功能集
基于ARM系列的32位单片机RAM资源比较丰富,利用C、C++等高级语言就能够编写应用软件。在这里选用C语言开发GPRS模块功能程序。利用ARM7 S3C44B0X芯片上提供的16字节的FIFO串口,向串口传送AT命令对GPRS模块进行操作。下面是一段用C语言编写的打开TCP连接的模块程序:
GPRS模块是具有登陆GPRS网络功能的芯片加上相应的协助处理数字电路,在模块内部装上开通GPRS功能的移动电话卡,通过串行协议与ARM7处理器进行通信。将数据以数据包的形式,先通过PPP和运营商的Internet接入服务器连接,然后把数据包发送到Internet上,最后到达控制中心主机。数据的发送和接收遵循自有的点到点传输协议,保证数据安全、可靠的发送和接收。
GPRS无线数据传输模块软件结构设计总体可分为4个部分:
①参数配置部分。投入安装前,通过串口将系统与PC机连接起来,在PC机上的超级终端设置远程监控中心主机IP地址、端口、设备ID以及心跳时间等参数,在系统运行中也可以通过串口、GPRS或者短信命令来设置系统相关参数。
②连接远程监控中心主机。在这一部分,系统将发起1个TCP或UDP连接到远程监控中心。本系统选用基于TCP的自有点到点协议处理通信。
③自有协议处理。这个协议包括“登陆”、“数据”、“心跳” 、“退出”及应答命令。“登陆”、“心跳” 、“退出”命令及应答命令是协议的状态维持部分,系统与监控中心主机的双向沟通通过“数据”命令传递。基于ARM7处理器的内存配置可以达到8 MB,因此在软件设计中可以维护好基于TCP的点到点自有协议,使数据的传输更安全,确保关键数据不丢失。
④数据传输。处理器首先判断接收的数据是温度数据还是报警信号:如果是报警数据,则立刻停止其他数据的传输,将报警数据迅速发送出去;如果是温度数据,则按照一定的间隔传回监控中心。系统还通过GPRS模块读出从控制中心传来的各种命令,进行相应的处理。
5 远程监控软件模块
监控端位于监控管理中心,分为数据采集端和控制端两部分。数据采集端使用高性能PC机或者商业服务器,运行 Windows XP/2000/2003Server系统或者 Linux系统。在这里采用Delphi7语言编写基于CLX组件的数据采集系统,基于CLX组件的软件可以方便地移植到Linux系统中。数据采集系统将采集到数据存储在Oracle 9i数据库中,以便日后查询和制作报表。同时将数据通过TCP协议实时发送到各个控制端。
控制端模块采用笔者自己用Delphi7语言编写的组态软件。通过相关接口,组态软件与数据采集端进行数据交换。工作人员通过控制端查看系统中多个终端的温度采集数据和系统状态,也可以根据实际情况发送相关的命令到数据采集端,最后到达温度检测终端执行。控制端监控主界面运行图如图3所示。
图3 控制端监控主界面运行图
结 语
基于ARM7处理器的嵌入式温度远程无线监控系统,通过SPI接口连接MAX6675,不断地采集现场的监控温度,并通过自有点到点协议基于GPRS网络发送数据给远端的监控管理中心。在温度数据超过或者低于临界值时,及时发出报警,并将报警信号传回监控中心,实现了温度的无线远程监控,推进了工业温度监控的无线化、智能化,极大地减少了现场的硬件布线时间,同时也可作为移动在线检测终端使用。
[1]马忠梅,马广云.ARM嵌入式处理器结构与应用基础[M].北京:北京航空航天大学出版社,2002.
[2]Maxim.Cold-junction-compensated K-thermocouple-to-digital Converter[OL].[2009-10].http://www.maxim-ic.com.cn.
[3]刘天时,强新建,王瑞,等.ARM7嵌入式开发基础实验[M].北京:北京航空航天大学出版社,2007.
[4]深圳华为技术有限公司.华为GTM900无线模块AT命令手册,2007.
[5]沈娣丽.小型集散控制系统组态软件的设计[D].武汉:武汉华中农业大学,2005.