引言
近年来,无线通信技术得到广泛的应用,GPRS(General Packet Radio System)通用无线分组网络就是一种比较流行的无线通信网络。
GPRS网络具有覆盖范围广、数据传输速度快、通信质量高、永远在线和可按流量计费等优点。
本传输方案采用的是西门子GPRS无线通信模块MC35i,该模块支持标准的AT指令集,但并没有嵌入TCP/IP协议,不过系统采用的linux操作系统里面带有完整的TCP/IP协议栈以及PPP协议,它不但减少了软件系统的复杂度,也增加了系统的稳定性。这样,本方案就可用于不同的场合,只要设计相应的上层软件处理系统即可。
1 系统总体设计
该系统主要由GPRS通讯模块和控制模块两部分组成,并采用嵌入式系统来设计GPRS终端。该嵌入式系统由硬件和应用软件组成,其架构可分为微处理器、内存、输入输出、操作系统和应用软件等五部分。系统的硬件由微处理器、GPRS模块、SIM卡座、外部接口和扩展数据存储器等部分组成。微处理器可控制GPRS模块的信息接收和发送,以通过标准RS232串口和外部控制器进行数据通讯,其系统原理结构如图1所示。
2 系统硬件设计
本系统硬件主要是以ARM为开发平台,以西门子公司的MC39i模块作为GPRS发送模块,从而使系统快速完成发送工作。
2.1 嵌入式微处理器单元
本硬件平台的CPU采用Samsung的基于ARM920T内核的S3C2410微处理器,S3C2410是采用0.18μm工艺制造的32位微控制器,该处理器拥有独立的16 KB指令Cache及16 KB数据Cache和MMU,并可支持TFT的LCD控制器、NAND闪存控制器、3路UART、4路DMA、4路带PWM的定时器、I/O 口、RTC、8路10位ADC、Touch Screen接口、IIC-BUS接口、IIS-BUS接口、2个USB主机、1个USB设备、SD主机和MMC接口和2路SPI。S3C2410处理器最高可运行在203MHz频率下。另外,通过提供一系列完整的系列外围设备,S3C2410X可大大减少整个系统的成本,消除了为系统配置额外器件的需要。
2.2 GPRS模块MC35i
MC35i是西门子公司最近推出的新一代双频GSM/GPRS通讯模块的无铅产品,它简洁的封装是很多应用系统中无线高速数据传输的理想解决方案,可进行数据、语音、SMS和FAX各个方面的应用,且功耗低。它为用户提供了永远在线、高速度、更简单的移动数据通信接入手段。 MC35i具有丰富的AT指令,而且功能强大,操作灵活方便,是继GPRS手机的又一种非常重要的GPRS移动通信系统的终端设备。它的出现给GPRS的发展注入了新的活力。
MC35i具有体积小、重量轻、功耗低等特点。MC35i的工作电压为3.3~4.8 V,典型电压为4.2V,最大工作电流为2 A。模块可工作在EGSM900和GSMl800两个频段。工作于EGSM900时的功耗为2 W,工作于GSMl800时的功耗为1 W,可利用AT指令进行控制,并支持文本和PDU模式的短消息、第i组的二类传真。MC35i模块常用的工作模式有省电模式、IDLE、TALK、数据等模式。通过独特的40脚连接器(ZIF)可实现电源连接、指令、数据、语音信号及控制信号的双向传输。MC35i模块主要由GSM基带控制器、射频模块、供电模块、闪存、ZIF连接器、射频功率放大器、天线接口等部分组成。
3 系统软件设计
根据系统需求,在操作系统Linux启动前,首先应该对微处理器和GPRS模块在内的系统内外部硬件进行初始化,在硬件初始化就绪后,可按系统要求划分并创建系统任务,最后启动Linux进行各任务的调度。应用程序共分为初始化任务、配置任务、数据发送任务、数据处理任务和用户串口中断服务等五个任务。本文主要完成系统的初始化以及拨号连入Internet等工作。
3.1 系统初始化
为了能利用TCP/PI协议进行数据传输。设计时必须对系统的硬件和软件进行初始化。图2所示为系统初始化部分的软件流程图。
本系统软件在开始时,首先需要通过检查0x90端口的输入电平是否为高来判断MC35i模块是否正常上电。若未能正常上电,那么,软件将通过0x90端口的输出使MC35i模块上电。
当MC35i模块上电后,软件将在内存中开辟一个缓存区做为包括PPP、IP、TCP、UDP等协议的数据缓存区。该缓存区内数据的存放方式采用双向链表的方式。
为了TCP协议实现中能够进行超时检测,在软件中应利用R8822CPU模块的内部定时器安装一个20ms的时钟中断。
ETR186可通过其串口COM2和MC35i模块相连接,用软件可通过安装串口中断来和MC35i模块进行数据传输。
在完成上述操作后,系统即可以利用AT命令登录GPRS网络。若不成功,即进行重试,超过重试次数后,即发送出错报告。最后就是进行PPP链路的连接,同时发送数据。
3.2 拨号原理
所谓初始化模块,主要就是设定APN:CMNET,
at+cgdcont=1,ip,cmnet,
然后利用chat程序拨号*99***1,#
待拨号连接成功后,再由pppd建立通信链路即可。其脚本改动如下:在ppp-on里改了电话号码为*99***1#,将账号与密码清除,再修改DIALER_SCRIPT的路径,同时把下面的设备改成/dev/ttyS0,速率改为115200,再将crtscts参数去掉。同时在ppp-on-dialer里把帐号密码去掉。其改动后的脚本如下:
改动完成后,执行脚本PPP-on/ppp-on,即可拨号上网。
3.3 无线数据传输
当GPRS拨号成功接入Internet后,就可以进行无线数据传输了,这可通过Linux下的网络编程实现。基于TCP/IP协议的网络编程主要有两种方式可以选择:TCP方式和UDP方式。采用UDP方式进行通信时,要求通信双方都知道对方的IP地址和端口号。但是目前GPRS网络并不提供固定的IP服务,通信链路中的GPRS终端的IP地址是由网关支持节点(GSN)动态分配的。因此,GPRS终端在进行每次数据发送后。它的IP地址和端口都可能发生变化。本方案中的网络数据通信采用TCP方式。即采用流套接字进行网络编程。
3.4 上位机软件设计
中心服务器端软件应提供一个可视化的监控界面,以便直观、方便、快捷地了解远程数据采集终端的状态,及时发现并处理异常和故障情况,实现与GPRS终端的通信。上位机部分采用的是Windows的平台,编译器采用VC6.0。为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,这实际上不是一种网络协议,而是一套开放的、可支持多种协议的、Windows下的网络编程接口,现在的Winsock已经基本上实现了与协议无关,可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。Socket在计算机中实际提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机进行通信。应用程序在网络上传输时,接收的信息都可通过这个Socket接口来实现。
在VC中进行WINSOCK的API编程开发时,需要在项目中使用下面三个文件,否则就会出现编译错误:
(1)WINSOCK.H:这是WINSOCKAPI的头文件,需要包含在项目之中;
(2) WSOCK32.LIB:WINSOCKAPI连接库文件。在使用中,一定要把它作为项目的非缺省的连接库包含到项目文件中去;
(3) WINSOCK.DLL:WINSOCK的动态连接库,位于WINDOWS的安装目录下。
4 结束语
该系统将无线通信技术与嵌入式技术有机的融合在一起,可使用户终端以低廉、快速、可靠的方式连入GPRS网络和互联网,并可使用户终端的数据信息简洁、实时的进行传送,从而为用户终端安全稳定的运行提供了可靠的保证。实验结果证明,该系统在上位机上能很好地接收数据,尤其在中低业务和低速率的数据传输中,能体现良好的性价比,同时可满足实时性的要求。