微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于GPRS的远程数据采集模块

基于GPRS的远程数据采集模块

时间:04-29 来源:互联网 点击:

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指令重新启动模块。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top