引言
能用分组无线业务GPRS(General Packet Radio Service)是在现有的GSM系统上发展出来的一种新的承载业务,目的是为GSM用户提供分组形式的数据业务。基于这种业务的各种应用也蓬勃发展起来。以GSM网络作为数据无线传输网络,可以开发出多种前景极其乐观的各类应用,如无线数据的双向传送、无线远程检测和控制等。典型的应用有:工业控制、环境保护、道路交通、商务金融、移动办公、零售服务等等。
GPRS允许用户在端到端分组转移模式下发送和接收数据,需不需要利用电路交换模式的网络资源;从而提供了一种高效、低成本的无线分组数据业务,特别适用于间断的、突发性的和频繁的、少量的数据传输,也适用于偶尔的大数据量传输。
本文设计的GPRS无线通信控制器(以下简称控制器),内嵌了TCP/IP协议栈,采用工业级的GPRS模块;适用于主机没有TCP/IP协议栈,但使用串口通信的情况,例如单片机数据采集传输系统。
1 GPRS网络数据的收发
终端设备通过串行方式接到控制器上并与GSM基站通道,但与电路交换或数据呼叫不同。GPRS数据分组是从基站发送到SGSN节点,而不是通过移动交换中心MSC连接到语音网络上。SGSN与网关支持节点GGSM进行通信。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是各引脚的详细说明。
表1 外部接口引脚说明
功能
名称
引脚号
I/O
信号电平
注 释
强制复位
RST
1
I/O
当模块处于空闲或数据传输状态时,该引脚下拉至0.45V以下(需至少0.1mA的下拉能力),持续3.5s可使系统复位。该引脚同时还作为系统看门狗信号输出,可据此监视系统工作状态fout,min=0.16Hz fout,max=1.53Hz
正常情况下,该引脚处于看门狗信号输出状态并且输出电流很微弱(0.01mA),因此必须使其处于高阻状态;不得有外部上下拉电路
RS232
RXD
2
I
该组引脚系标准RS232电平信号,可直接与PC机连接
如果连接PC机上Internet网,则需要使用CTS和RTS,其它通信方式示不需要这两个引脚
TxD
3
O
CTS
4
O
RTS
5
I
SGGND
8
0
SGGND是RS232信号地,在模块内部与GND相连
RS485
A
6
I/O
该组引脚系标准RS485电平信号,模块内部已加120匹配电阻
模块内部光电隔离电路
B
7
为使控制器运行稳定可靠,对其看门狗电路进行了精心设计。
3 控制器的软件接口
在本设计中,需要利用TCP/IP协议来完成GPRS业务数据的打包和解包。由于W77E58资源有限,怎样在有限的资源上完成必需的功能,就是嵌入式TCP/IP协议实现的关系所在,也就是合理地简化协议。
TCP/IP协议是一个为广域网(WAN)设计的标准协议套件,可以用一个分成四个层次的模型来描述:数据链路层、互联网层、传输层和应用层。其分层模型及协议如表2所列。
表2 TCP/IP协议结构
应用层
HTTP、Telnet、FIT、SMTP、SNMP
传输层
TCP、UDP
互联网层
IP、ARP、RARP、ICMP、IGMP
数据链路层
Ethernet、X.25、SLIP、PPP
应用层(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网络覆盖区,将进行数据发送缓存处理,同时将数据放进发送队列等待发送。
结语
本文采用嵌入式TCP/IP协议,在高速的8位微控制器上实现了对MC35模块的控制,并实现了GPRS业务的数据传输功能;具有外围器件少、电路简单、系统成本低等优点。本文设计的GPRS无线通信控制器,自2002年1月份起,在广东省东莞市的环保污水综合处理系统中使用至今,运行效果良好,实践证明,产品工作稳定、可靠。