本系统的终端设备采用模块化的结构设计思想,将终端设备分为主控模块和各个功能模块。主控模块和各功能模块之间有统一的或者特定的接口形式,用户可根据实际情况选用不同的功能模块。各种类型的数据可以在系统中同时传输而不相互干扰,同时也可根据市场变换的需求继续扩展其他功能模块。
温度远程无线监控系统的几个主要模块功能如下:
①传感器数据处理模块。根据实际需要,采集热电偶温度传感器数据。当采集到的数据值高于或者低于报警值时,启动自动报警模块,提醒巡查人员注意。
②LCD显示模块。显示检测到的温度数据及相关的系统核心参数,以便相关工作人员观测数据。
③自动报警模块。在系统检查到有效报警信息后,该模块马上使嵌入式设备上的蜂鸣器发出警报声,与此同时发送报警信息。该信息通过GPRS网络及时传回远端的监控管理中心,以便工作人员及时发现并采取相应的处理措施。
④参数配置模块。系统的核心参数配置通过I2C总线保存在Atmel AT24C01芯片里,系统启动时读取相关参数。参数的设置可以通过多种方式(串口、短信和网络)实现。
⑤ARM7核心控制模块。采用低功耗、高性能嵌入式SoC芯片Samsung S3C4480X以及8MB RAM和2 MBFlash ROM。
⑥热电偶温度采集处理模块。通用I/O口用软件来模拟SPI操作,实现ARM7与MAX6675的通信。
⑦GPRS无线数据传输模块。考虑到系统的实际需求,采用华为GTM900A模块。该模块支持AT指令,模块的控制、数据的传输可以通过AT指令发送或者读取该设备的串口。
⑧远程监控软件模块。远程监控软件采集端和控制端。采集端需要连接到Internet上,有固定的IP地址,负责远程终端数据的接收和发送。控制端由操作人员使用,在界面上显示各个终端的运行情况、当前的实时温度数据,操作人员的指令通过控制端下发到采集端,最后通过采集端发送到各个对应的终端。
2 系统的软件设计流程
系统启动时,为支持通过串口设置相关参数,按照顺序提示用户输入相关配置参数。如果用户超过了一定的时间不操作,系统就进入初始化模块,启动GPRS模块,对短信命令进行处理(初始化自有点到点协议模块)。主应用程序的流程如图2所示。
系统运行中,TimerO的中断处理程序处理自有的点到点协议,包括处理“登陆”、“心跳”和“退出”命令。在系统的发送数据缓冲队列中读取数据,将数据打包成“数据”命令,通过串口发送到GPRS模块。如果GPRS模块有数据,再在串口中读出远程监控中心发送过来自有协议的各种命令,只将“数据”命令解析后存入接收数据缓冲队列中,其他协议维持命令由相应的子程序进行处理。
主应用程序通过少数几个系统状态全局变量、发送数据缓冲队列和接收数据缓冲队列与数据通信模块进行交互,也就是与TimerO的中断处理程序进行交互。主应用程序不需要了解自有点到点协议的编解码过程以及数据链路的维护工作,使模块直接的耦合度降低。主应用程序通过SPI总线实时地读取MAX6675采集到的热电偶温度数据,实时检查GPRS模块状态(如果GPRS模块错误超过规定次数,重新启动GPRS模块),实时地将报警数据存入发送数据缓冲队列中并同时启动报警模块,实时地处理接收数据缓冲队列中的数据,实时处理GPRS模块短信命令数据,实时显示系统采集的温度数据和状态信息,定时地将采集到的数据存入发送数据缓冲队列中。
3 MAX6675与S3C4480X的接口实现
MAX6675芯片内部集成了冷端补偿电路。该芯片有简单的3位串行SPI接口,可将温度信号转换成12位的数字量,温度分辨率达O.25℃。芯片内部含有热电偶断线检测电路。其冷端补偿温度范围为-20~80℃,应用的环境温度范围比较宽,可以测量0~1 023.75℃的被测温度,基本符合工业温度测量的实际需要。当MAX6675的CS引脚从高电平变为低电平时,芯片将停止任何信号转换并在时钟SCK的作用下通过S0引脚向外输出已转化的数据,此数据是经过放大了的A/D转换后的数字量与冷端补偿之和;相反,当芯片的CS引脚从低电平变回高电平时,MAX-6675芯片将进行新的温度数字化工作。CS引脚从高电平变为低电平时,第1个字节D15出现在引脚SO上。该系列芯片的1个完整的数据读过程需要16个时钟周期,数据的读取通常在SCK的下降沿完成。需要指出的是,此芯片的A/D转换耗时在O.17~0.22 s之间,比一般的A/D转换芯片μs级的转换时间要长许多,相应的温度转换模块需要进行相应的优化设计,不能占用太多CPU资源。
MAlX6675采用标准的SPI串行外设总线与ARM7进行对接,因此该芯片只能作为从设备(即串行接口芯片)。SPI(SeriaI Peripheral Int-erface)总线系统是一种同步串行外设接口,是Motorola公司推出的总线标准,它可以使ARM7单片机与各种外围设备以串行方式进行通信。由于S3C44BOX单片机不具有SPI串行总线接口,在芯片对接时可以使用通用I/O口,用软件来模拟SPI操作,包括串行时钟、数据输入/输出。
4 GPRS无线数据传输模块
温度采集处理模块采集到的数据通过SPI总线传送到处理器,经过串口AT指令传输到GPRS模块,然后由GPRS模块通过GPRS网络和Internet网络将数据传送到远端接在互联网上的控制中心主机,在控制中心的网络上可以通过组态软件建立小型集散控制系统。至于组态软件的选择,可以根据需要选用商业组态软件,或者像笔者硕士毕业论文所做的小型集散控制系统控制软件。
有关利用AT命令操作GPRS模块在相关文献中已有描述,这里以华为GTM900A模块为例说明相关操作。表1描述了华为GPRS模块AT指令基本功能指令集,通过对这些指令的运用就可以进行GPRS模块的初始化、打开链路、发送数据、接收数据、关闭链路等一些常用的操作。
基于ARM系列的32位单片机RAM资源比较丰富,利用C、C++等高级语言就能够编写应用软件。在这里选用C语言开发GPRS模块功能程序。利用ARM7S3C4480X芯片上提供的16字节的FIFO串口,向串口传送AT命令对GPRS模块进行操作。下面是一段用C语言编写的打开TCP连接的模块程序: