全部博文(776)
分类: LINUX
2010-03-12 20:59:47
基于GPRS的远程数据采集模块
针对传统的数据采集系统对系统构建的方便性与数据传输的可靠性的要求,提出了一种基于移动GPRS无线通信的远程数据采集方案。该方案利用GPRS的Internet接入功能,通过移动公司的网络来实现数据采集模块与远程主机之间的无线通信。分析了该数据采集模块的原理与结构,嵌入式TCP/IP/PPP协议的实现,以及GPRS模块的驱动设计。并由此研制出一台基于Winbond单片机与c;PRS模块的无线数据采集系统,测试结果证明了访采集模块的稳定性与可靠性。
关键词:GPRS模块;数据采集;TCP/IP/PPP协议;MC35i
0 引 言
数据采集与工业生产和国民生活息息相关,大到电力部门各变电站的远程监控、矿业生产单位的安全生产,小到社区居民的电表、水表抄表系统,因此数据采集与通信系统直接关系到人们生活质量的提高。传统的电表、水表的数据采集多采取人工抄表的方式,不仅浪费了大量的人力物力,抄表精度也不高;当前的卡式预付费表由于要将付费额与消费量存入IC卡中,作为电表、水表与监控中心的通信媒介,安全性有待提高;工业生产中多采用Internet网络通信或是RS 485总线来实现各监测点与监控中心的数据通信,对于采集点分布集中时尚可实现,但是像电力系统变电站等多分布在郊区且节点多的系统来说不仅通信线路的铺设是一笔巨大的费用,受自然环境的影响也特别大,可靠性得不到保障。
GPRS无线上网技术的快速发展给数据采集技术的发展带来了新的活力。GPRS(General Packet,RadioService)是当前GSM网络通信向3G标准的过渡阶段,即2.5G标准。GPRS在现有的GSM网络的基础上引入分组交换的功能,支持TCP/IP协议,可以与Inter—net直接相通,因此已在消费电子中得到了广泛的应用。GPRS理论最高通信速率可达到171.2 Kb/s,且国内外各大通信公司均推出了各自的GPRS通信模块,稳定性好,完全能够满足各种数据采集系统的需要,因此,GPRS无线通信技术的应用必将给数据采集系统的发展带来巨大的变化。
l GPRS通信原理及数据采集模块的整体结构
1.1 GPRS无线通信原理
基于GPRS的无线网络通信系统结构如图1所示,主要由三部分构成:位于数据采集现场的GPRS数据采集模块、网络运营商提供GPRS网络与远程服务器。数据采集模块位于各个数据采集现场,由于移动公司的通信范围已覆盖我国的绝大部分地区,各数据采集模块可分散地安装在各种复杂的地理环境中而不必考虑线路铺设等复杂的问题。GPRS网络是现场数据采集系统与远程监控中心数据交换的桥梁。数据采集模块与测量仪表进行数据通信,将测量仪表产生的检测数据通过移动基站实时发送到GPRS网络服务商所提供的GGSN(Gateway GPRS Support Node)服务器,GGSN分配给GPRS数据采集终端相应的IP地址,从而实现了数据采集终端与Internet的连接,再通过In—ternet网络将采集的数据发送到位于监控中心的数据采集服务器。GPRS模块可以是始终在线的,因此位于监控中心的工作人员可以实时了解到终端设备的工作情况并做出相应的工作指示。
1.2 数据采集模块的结构
数据采集模块负责检测仪器与远程监测终端的无线数据传输,如图2所示,模块以Winbond的高性能单片机W77E58为控制核心,通过将串口采集到的数据经初步处理后传送给GPRS模块实现无线网络通信。
W77E58是Winbond公司推出的一款快速8051兼容微控制器,它的内核经过重新设计,整体运行速度要比标准的8051快2.5倍。W77E58具有1 KB的片上外部数据存储器和32 KB的FLASH EPROM,省去了外扩SRAM所需的I/O引脚,从而用来扩展键盘与液晶显示屏。
W77E58较为突出的特性是它具有两个增强型全双工串行口,在数据采集模块中可将一个串口采用RS 232协议与GPRS模块进行数据通信,另外一个串口则采用RS 485协议接收检测仪器发送的数据。RS 485是在工业检测现场应用非常广泛的现场总线,总线上一台主机可以与多达32台从机进行通信。在实际应用中可将一台GPRS数据采集模块与多台检测设备通过RS 485总线相连,提高通信模块的利用率,这在电表、水表等低成本的检测仪表无线通信应用中十分重要。
GPRS无线通信模块负责整个系统的数据收发,GPRS无线网络通信需要TCP/IP/PPP协议支持,当前常见的GPRS模块可分为自带TCP/IP协议栈与不带协议栈的两大类,自带协议栈的模块有Simcom的SIMl00,使用方便,用户只需通过AT指令来控制数据传输就能实现无线通信,当然价格相对较高;而不带协议栈的模块还需用户自己在单片机中实现嵌入式TCP/IP/PPP协议栈来实现数据传输。考虑到模块的成本与W77E58高性能,这里选用了西门子的MC35i通信模块。MC35i稳定性及性价比都比较高,接口简单,AT指令完善,支持GPRS CLASS 10。使用时只需自行设计外围电路,包括电源供电、RS 232通信、SIM卡接口电路以及通信天线。该模块不带TCP/IP/PPP协议,需要自己编写,在单片机中实现。
2 TCP/IP/PPP协议的实现
通常的Internet网络通信只需实现TCP/IP协议簇,但是对于无线网络的接入还需实现PPP协议。TCP/IP/PPP协议其实是一系列网络通信协议的集合,为了能在资源有限的单片机中实现网络数据传输,只能根据特定的功能来实现相应的协议,这包括PPP,IP,ICMP,UDP,TCP等协议,并在此基础上构建应用程序的API接口。
网络协议采用分层结构,在GPRS无线通信模块中采用了5层结构。如图3所示,位于最底层的是网络硬件驱动程序,也就是GPRS模块的驱动,MC35i与GPRS网络的连接、断开以及数据通信都是通过一系列的AT指令来实现。
接下来是数据链路层,数据链路层控制互联网上主机之间数据链路的建立,该层实现了精简的PPP(Point—to—Point Protoco1)点到点协议。GPRS模块在拨号后首先要与GPRS网关进行通信链路的协商,即协商点到点的各种链路参数配置。协商过程遵守LCP(Link Control Protoco1),PAP(Password Authen—tication Protoco1)和IPCP(Internet Protocol ControlProtoco1)等协议。其中LCP协议用于建立、构造、测试链路连接;PAP协议用于处理密码验证部分;IPCP协议用于设置网络协议环境,并分配IP地址。一旦协商完成,链路已经创建,IP地址已经分配就可以按照协商的标准进行IP报文的传输了。数据传输完成之后,单片机会向GGSN发送LCP的断开连接报文,以终止网络连接。
GPRS模块与网络服务器连接成功后便可以进行数据通信。网际层实现了ICMP协议与IP协议。IC—MP协议是网际控制报文协议,负责传递网络状况信息。IP协议为TCP/IP协议中最为核心的协议,它负责数据报路由的选择,以及将上层协议传输的数据包加上IP报头后传送给下层协议,并将下层协议接收到的IP数据包剥离包头检验信息后接收或是丢弃。
传输层实现了TCP和UDP协议。UDP是面向数据报的传输协议,不能保证可靠的数据交付,但开销较小发送数据的时延也相对少。如果对可靠性要求高,可以选择TCP协议,TCP为不可靠的IP连接提供可靠的、具有流量控制的、端到端的数据传输,但对系统资源的要求相应增加。实际应用时可根据传输数据的内容来选取传输协议。
为了方便上层程序调用相关的协议进行通信,可以建立一个数据结构,将本地和远程的IP地址、端口号以及通信状态封装起来构成一个Socket,并提供相应的API函数供应用程序调用,这就是应用层接口。
3 MC35i驱动及AT指令的编写
3.1 MC35i的开关机及初始化
MC35i的开关机需要在模块的0N/OFF引脚上加上脉宽1 s以上的低电平。当模块处于关机状态检测到0N/OFF引脚的下降沿并持续1 s以上的低电平时启动整个模块,同理,当模块启动后检测到持续1 s以上的低电平,则延时8 s关机。所有的AT指令操作都必须在开机状态下才能执行。
开机后还要对MC35i进行初始化来实现单片机对模块的控制:首先要测试模块串口的连接状况,通过发送AT指令,等待模块的回复,返回OK则连接成功,没有响应则表示模块连接存在问题;接着还要向模块发送ATEO指令来关闭回显。回显功能主要用于串口调试,具体应用时应关闭该功能,防止回显字符和返回参数混合。
3.2 MC35i的AT控制指令
MC35i模块是采用AT指令集进行控制的,采用AT指令集可以实现模块参数的设置,数据的发送与接收。AT指令集是调制解调器通信接口的工业标准,指令由ASCII字符组成,除“A/”、“+++”指令外,所有指令都是以”AT”开头,以<回车><换行>结束,绝大多数指令被执行后都有返回参数。
常见的AT指令有:
设置通信波特率:使用AT+IPR=19200命令,把波特率设为19 200 b/s;
设置接入网关:通过AT+CGD CONT=1,“IP”。“CMNET”命令设置GPRS接入网关为移动梦网;
设置移动终端的类别:通过AT+CGCLASS=“B”设置移动终端的类别为B类,即同时监控多种业务,但只能运行一种业务,即在同一时间只能使用GPRS上网,或者使用GSM的语音通信;
测试GPRS服务是否开通:使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,则GPRS连接成功;如果返回ERROR,则意味着GPRS失败。中国移动在GPRS与Internet网中间建立了许多的网关支持节点(GGSN),以连接GPRS网与外部的Internet网络。GPRS模块可以通过拨“*99***1#”登录到GGSN上,并通过PPP协议获取动态分配到In—ternet网的IP地址。
4 使用需注意的问题
由于GPRS网络通信是以GSM网络为基础,GSM网络的语音通信优先级较高,当GPRS长时间在线但不产生流量时,数据业务的优先级会自动降低,GGSN服务器则会为了节省线路带宽断开其网络连接,此时对于GPRS模块来说,虽说IP地址还在,但已无法进行数据传输。为了防止这种情况导致网络的中断,可在系统中设定“心跳”功能,通过单片机的定时器来实现,每隔一段时间向服务器发送一个TCP数据包,以保证系统的网络连接不断线。“心跳”频率应根据实际情况来设定,频率不宜过高,以免产生过高的额外流量。
由于GPRS无线网络受天气环境影响较大,当出现雷雨等恶劣天气或是信息拥塞时可能会发生数据包丢失、掉线等现象。为了防止丢包的现象发生,可以根据数据的重要性与否采取TCP或是UDP协议,TCP协议具有延时重发功能,对于UDP方式,则必须自行设计校验和纠错规则。对于受干扰掉线的问题则可定时测试网络连通状况,向远程数据终端发送ICMP回显请求(即ping命令),根据终端的应答情况来判断网络状况。当多次请求未回应时即启动GPRS模块重新连接。
当数据采集模块处于电磁干扰特别强烈的电力变压器、电力整流器、电力开关产生的火花等环境中时,GPRS模块和SIM卡运行时间长了偶尔会出现死机的现象,因此要对GPRS模块和SIM卡实时监测。
对GPRS模块的监测:每隔一定的时间对模块进行AT指令测试,如果模块有返回数据则说明模块运行正常,没有死机;如果没有返回,则模块出现问题,此时用单片机控制关闭模块电源,几秒钟后再打开电源,重新启动模块。
对SIM卡的监测:在模块测试完毕后接着发送关于SIM卡的AT指令,如果返回OK则SIM卡工作正常,如果返回ERROR则SIM卡复位或者死机,此时可用AT指令重新启动模块。
5 结 语
本套数据采集模块采用GPRS方式接入Internet网络,不受地点与空间的限制,克服了传统的电力系统设备监控布线困难或是抄表系统效率低,可靠性差的缺点,可广泛应用于电力工矿等生产行业设备运行监控,居民生活区远程抄表系统,甚至于各种远程家居电器控制系统等小流量高实时性的通信系统中。随着3G网络通信技术的成熟与应用,无线网络通信的速度与可靠性将有变革性的提高,相信随着新一代通信技术的发展,基于无线网络的数据采集系统将有着更为广阔的应用前景。