原文链接地址:http://tech.c114.net/164/a663339.html
摘要:按照石化公司的要求,设计了一个基于GPRS无线网络与嵌入式操作系统μC/OS-Ⅱ的远程车载监测系统,用于监测槽罐车槽罐储液温度及其地理位置信息。车栽终端采用虚拟IP无线网络技术以及GPS卫星定位技术。数据监测中心设计了基于UDP协议的GPRS数据接收软件并采用Access数据库链接技术,成功实现了远程车载信息的现场采集与异地接收。最后给出了系统的运行结果。
0 引言
随着后PC时代的到来,嵌入式系统的应用已经越来越普遍,而基于GPRS无线网络的远程监测系统也在诸多工业工程领域有着广泛应用。本文将阐述基于GPRS无线网络的嵌入式远程车载监测系统,用于槽罐车槽罐储液温度以及地理位置信息的异地远程监测,其目的在于使石化公司及时掌握运输途中的储罐的温度随时问、地点的变化状况,为防止储罐因温度超限引发危险而起到预警作用,确保储罐铁路运输的安全。本文重点介绍其系统构成与车载GPS卫星定位技术以及远程数据的无线网络传输实现方法。
1 系统实现方案与构成
整个车载系统可以分为车载终端和监控数据中心两个部分,如图1所示。车载终端的核心是三星公司推出的16/32位RISC微处理器S3C24 40A。它有三个串口,其中串口1接GPRS无线发射模块,串口2接GPS卫星定位模块,由其自带的A/D转换接口来完成模拟信号向数字信号的转化。采集完成的定位数据与温度数据通过GPRS无线网络发送到远程数据监控中心,监控中心将接收到的数据存入本地数据库,以供查询和参考。
2 车载终端数据采集模块与GPRS无线发射模块的设计
2.1 车载终端数据采集模块的设计
车载终端数据采集模块包括槽罐储液温度与GPS卫星定位数据的采集。其电路原理图如图2所示。图中左端为温度采集原理图,使用温度变送器可以将槽罐储液温度转化为0~40mA的标准电流输出,电流经过变阻器后就可以将其转变为可供ARM微处理器处理的模拟电压,电压值范围应控制在0~3.3V。图2右端为GPS数据采集原理图,GPS接收机采用台湾鼎天国际最新推出的GPS导航模块REB-1315。
模块的供电电压为直流3.3V,由直流5V通过LM1117芯片转化后得到。19脚GPS_RF_IN为GPS信号输入端,接GPS接收天线,并由模块自身的17脚RF_VOUT信号为其提供偏置电压,来保证天线的正常工作。4脚TXA为模块的串口发送信号,它是模块主要的数据传输通道,被用来输出定位数据,本设计利用其得到定位信息。由于REB-1315模块的输出为TTL电平,故使用MAX232将信号电平转换为RS232电平。为了方便,这里使用DB9的1脚为模块提供5V的直流输入电压。当模块GPS天线接好并上电正常工作后,GPS定位数据就会连续不断地从4脚输出。图2右侧为A/D采集接口,温度变送器标准输出为0~40mA,经过变阻器将其转化为0~3.3V的模拟电压后送到S3C2440A的模拟通道AIN0进行A/D转换。
2.2 GPRS无线发射模块的设计
车载终端的GPRS模块采用华为EM310模块,基于EM310模块的GPRS无线发射模块的电路原理图如图3所示。模块的供电电压为3.8V,1~6管脚为SIM卡控制接口,13管脚为网络连接状态指示接口,串口0用于和MCU进行通信。
3 车载终端的软件设计
本系统软件编写语言为C语言,借助ARM Developer Suite v1.2集成开发环境进行编译和调试。这是一个多任务系统,终端需要同时完成温度采集、GPS卫星定位数据的采集和GPRS数据的无线发送工作,为了满足系统需要,采用嵌入式操作系统μC/OS-Ⅱ来实现多任务的调度。操作系统的设计流程如图4所示。
操作系统一开始要完成对车载终端硬件电路板的初始化工作,然后是初始化μC/OS-Ⅱ。μC/OS-Ⅱ是实时操作系统,它对系统时钟有着非常严格的要求,所以接下来要初始化系统的时基。为保证操作系统的可移植性与完整性,这里将串口初始化和中断等初始化工作放在初始化任务MainTask中来完成。最后启动操作系统。车载终端的温度采集、GPS卫星定位数据采集和GPRS数据无线发送,作为三个独立而紧密连接的任务在MainTask中建立,且这三个任务的优先级依次降低。主任务Main Task的设计流程图如图5所示,先初始化时钟节拍,因为操作系统当中的所有任务都是在时钟节拍的作用下准确执行的。然后建立内存分区以及串口消息队列,最后建立并执行多任务。这里利用了μC/OS-Ⅱ操作系统的消息邮箱机制,把A/D采集结果和GPS卫星定位数据依次投递到消息队列当中,在GPRS任务执行时再从消息对列中将它们分别取出来发送。
由于A/D采集比较容易,所以以下仅介绍GPS卫星定位数据的采集以及GPRS数据的无线发送过程。
3.1 GPS卫星定位数据的采集过程
GPS卫星定位数据采集包括GPS定位信息的提取、解析和消息投递,包含GPS数据处理的全部的步骤和方法。程序流程图如图6所示。
GPS定位信息的提取、解析和消息投递工作放在while(1)循环中进行。在投递定位信息前需要判断是否解析到$GPGGA数据帧。GPS数据处理函数GPSproc()的代码如下:
程序先将定位信息提取到数据缓冲区中,然后对其中的数据进行解析并存放到定义好的结构体当中,该结构体的数据成员包括时间、经度和纬度以及$GPGGA数据帧标志,如果解析到了$GPGGA数据帧,则进行消息投递工作。对于GPS定位信息解析函数void GPSReceire(GPSINFO* info,UInt8*pStrearn,UInt8len),它是得到定位数据最关键的一步,这里需要特别说明,其工作流程图如图7所示。为了保证数据的可靠性以及准确性,需要对每一帧数据进行异或校验,如果异或校验正确,则开始提取并处理数据帧当中的有效字段。
3.2 GPRS数据网络的买现方案
车载数据异地远程无线发送的关键是GPRS无线网络通道的建立。在实际应用当中,可以利用公网静态IP,动态域名解析,短消息通讯,APN专线接入等组网方案。但公网静态IP需要相当一部分的使用费用,不利于系统开发成本的降低。动态域名解析方案的稳定性受制于DNS服务器,也需要一定的开发费用。短消息通讯容易收到干扰且不具有实时性。APN专线接入方案通常适用于安全性要求较高、监控点较多和实时性要求较高的场合,但这一技术使用起来较为复杂。
鉴于此,本系统采用虚拟IP技术,它是一种类似于电子邮件的技术,适于需要公网静态IP的场合,其组网方便,通过远程服务器,可以在不同网段内任意转发数据。网络结构如图8所示。
GPRS模块使用SIM卡登录到移动互联网,位于主站的计算机也接入到互联网。给GPRS模块和主站计算机分配地位等价的虚拟IP地址(这里分别为10.1.90.0和10.1.90.1)。对于远程虚拟IP服务器,可以自己搭建,也可以由商业公司提供,由于它能够在不同网段内任意接收数据和提供下载服务,因此它是具有公网静态IP的,为了统一起来,它也被分配了自己的虚拟IP地址,同时它还被设定了对应的端口号(这里为7002)。在应用时,车载GPRS模块将先采集到的数据按照UDP数据报发送到服务器,然后服务器将会解析这一数据报并将其转发到目标IP地址,主站也就是监控中心计算机上运行有遵从UDP协议的数据接收软件,这样就实现了车载数据向远程监控中心的发送。UDP数据报结构见表1。如果编号为10.1.90.1的终端发送字符串ABCD,服务密码为123456,则这一数据报为:0A015A000A015A01313233343536000441424344。若发送内容包含有汉字,则其为GB2312汉字编码。
3.3 GPRS模块发送数据的操作
要使GPRS模块建立网络连接并实现数据的远程发送是通过向控制串口发送一系列AT指令来实现的。对于EM310模块,其主要使用的AT指令如下:
在μC/OS-Ⅱ的GPRS任务中,上述的AT指令被写到C语言代码中,也即写入到串口打印操作语句中,为了使GPRS模块硬件更好的响应命令,需要在每条指令后延迟数秒。所发送的数据是从消息队列当中取出来的。
4 系统的运行结果
车载终端使用嵌入式集成开发软件ADS 1.2,采用C语言编写。数据监控中心的数据接收软件使用MFC设计,同时还使用了ADO技术,能将接收到的数据通过处理及时存放到本地Access数据库,并且还能供工作人员随时查询数据库信息。
图9为数据中心接收软件接收远程GPRS数据的情况,图10为数据库的查询结果。可以看到,本系统在测试运行时得到了良好的效果。
5 结语
本系统虽然针对石化企业的槽罐车的监控开展研究工作,但其技术方案及形成的技术成果将可推广至其他行业的产品运输、工农业装备运行状况的远程监测与控制,以及远程医疗等诸多领域,有着广阔的应用前景。