通用分组无线业务GPRS(General Packet Radio Service)是在现有GSM 系统上发展出来的一种新的承载业务,目的是为GSM 用户提供分组形式的数据业务。基于这种业务的各种应用也蓬勃发展起来。以GSM 网络作为数据无线传输网络,可以开发出多种前景极其乐观的各类应用,如无线数据的双向传送、无线远程检测和控制等。典型的应用有:工业控制、环境保护、道路交通、商务金融、移动办公、零售服务等等。
GPRS 允许用户在端到端分组转移模式下发送和接收数据,而不需要利用电路交换模式的网络资源;从而提供了一种高效、低成本的无线分组数据业务,特别适用于间断的、突发性的和频繁的、少量的数据传输,也适用于偶尔的大数据量传输。
本文设计的GPRS 无线通信控制器( 以下简称控制器),内嵌了TCP/IP 协议栈,采用工业级的GPRS 模块;适用于主机没有TCP/IP 协议栈,但使用串口通信的情况,例如单片机数据采集传输系统。
1 GPRS 网络数据包的收发
终端设备通过串行方式接到控制器上并与GSM 基站通信,但与电路交换或数据呼叫不同。GPRS 数据分组是从基站发送到SGSN 节点,而不是通过移动交换中心MSC 连接到语音网络上。SGSN 与网关支持节点GGSN进行通信。GGSN 对分组数据进行相应的处理,再发送到目的网络,如Internet 或X.25 网络,见图1 。
来自Internet、标识有移动台地址的IP 包,由GGSN 接收,再转发到SGSN ,继而传送到移动台上。控制器工作时,用户上位系统向控制器发送工作指令和数据,数据由IP 模块进行TCP/IP 协议转换,打成IP 数据包,再由MC35 模块以GPRS 数据包的形式发送到SGSN。
由于GPRS 网络工作方式是以IP 地址寻址为基础的,所以目标服务器端并非接入控制器与终端设备进行连接,只需要简单接入Internet,并具备公网分配的IP 地址即可。同时,因为GPRS 终端产品本身由网络提供商动态地分配IP 地址,在未进入连接待机状态时,其本身是不具备IP 地址的( 在连接中,模块的IP 地址为移动骨干网内局域网IP ,无法被公网服务器解析,动态分配的制度使获取此IP 地址无意义) 。因此在服务器与终端尚未建立连接前,目标服务器难以( 可将短信转换为命令内容) 对终端设备及控制器进行控制。必须先将控制器进行相应初始化,并由设备终端主动向服务器发送数据,进行连接。
2 控制器内部的硬件实现
控制器内部由四部分构成:嵌入TCP/IP 的单片机系统、MC35 模块、电源部分和外部接口部分。在设计时,考虑到双串口性能和高速的全静态CMOS 设计,嵌入式单片机系统选用台湾Winbond 的W77E58 芯片作为MCU 模块的处理器芯片。它是高速的、与MCS-51 指令兼容的、没有多余指令周期的微控制器,在相同时钟频率下,运行同样的指令要比传统的8051 快1.5~3.0 倍。它完全是静态CMOS 设计,工作电压为4.5V~5.5V,有32KB 的片内程序ROM,内部有1KB SRAM,最高时钟频率可达40MHz ;有双指针、双串口,13 个中断源,3 个16 位定时器。单片机W77E58 通过串口1 直接与MC35 模块相连接,完成对MC35 模块的初始化和基于GPRS 业务的数据收发功能;同时串口2 扩展MAX232标准串口与其它嵌入式系统或PC 机进行数据交换。图2 是系统的硬件框图。
MC35 模块是西门子公司生产的GSM 双频GSM900/GSM1800 无线模块。它支持2 种操作模式:一种是电路交换数据模式CSD ,支持语音、数据、SMS 和FAX 业务;一种是分组交换模式GPRS,采用多时隙,支持CS1-CS4 编码。两者最大的区别是,GPRS 传输数据时不需要再拨号。2 种模式的选择通过AT 指令来实现。MC35 模块提供40 线的ZIF 接口方式。
电源部分为单片机系统和GPRS 模块提供合适的电源。外部接口部分包括一个8 脚数据接口、SMA ( 射频同轴连接器)天线接口、SIM(Subscriber Identity Module,用户识别) 卡座接口。表1 是各引脚的详细说明。为使控制器运行稳定可靠,对其看门狗电路进行了精心设计。
3 控制器的软件接口
在本设计中,需要利用TCP/IP 协议来完成GPRS 业务数据的打包和解包。由于W77E58 资源有限,怎样在有限的资源上完成必需的功能,就是嵌入式TCP/IP 协议实现的关键所在,也就是合理地简化协议。
TCP/IP 协议是一个为广域网(WAN) 设计的标准协议套件,可以用一个分成四个层次的模型来描述:数据链路层、互联网层、传输层和应用层。其分层模型及协议如表2 所列。
应用层(application)负责处理特定的应用程序细节。在本系统中只实现HTTP 协议。传输层(transport)主要为2 台主机上的应用程序提供端到端的通信。TCP 协议是为2 台主机提供高可靠性的数据通信,这里采用TCP 传输控制协议。互联网层(Internet)的功能是寻址、定址、数据打包和安排路径。Internet 所有的数据都以IP 数据报格式传输,其最大特点是提供不可靠的和无连接的数据包传送服务。在GPRS 业务中,每一次链接都会具体分配一个IP 地址,因此用ARP/RARP 协议完成IP 地址与物理地址的映射( 即地址解析) ,用ICMP 协议判断网络是否连通。数据链路层(link)的任务是把要发出的帧送到线路中去,把要接收的帧从线路中取出来。GPRS 业务是采用IP Over PPP 实现数据终端的接入。这部分功能由单片机控制MC35 模块,采用PPP 协议实现。
数据打包处理程序处理数据时,每一层都把自己的信息添加到一个数据头中,而这个数据头又被下一层中的协议包装到数据体之中。数据解包处理程序接收到GPRS 数据时,把相应的数据头剥离,并把数据包的其余部分当作数据体对待。
在应用要求高的场合,通常需要支持完整的TCP/IP协议族,而在嵌入式系统中也是可以做到的; 但是,考虑到成本和具体的应用场合,没有必要包括所有的TCP/IP 协议族。可以看到,采用TCP/IP 协议需要对它进行合理的裁剪,以满足小ROM系统的情况。
系统在利用MC35 模块的GPRS 业务浏览HTTP 等功能之前,必须先激活GPRS 网的PDP 连接。单片机通过正确的AT 指令和GPRS 命令集对MC35 模块进行初始化和数据的接收发送,其工作流程如图3 所示。
单片机上电复位后,首先对MAX232 进行初始化,完成与外接模块协商处理,如波特率、是否有奇偶校验等。接着,通过串口1 对MC35 模块进行初始化,检查诸如SIM 卡情况、GPRS 网络覆盖情况、信号情况等。接下来,进行中断扫描,监控是否有数据到来。有关数据时,如果是外部数据,就启动数据打包处理过程;如果是GPRS 数据,就启动数据解包处理过程。如果没有数据,系统则进入节电模式。在数据打包处理过程中,如果检测到系统的信号不好,网络连接不畅通,或者不是GPRS 网络覆盖区,将进行数据发送缓存处理,同时将数据放进发送队列等待发送。