随着计算机和网络技术的发展,基于TCP/IP协议的有线以太网为工业监控网络带来了一个新的时代,这是因为基于TCP/IP协议的有线以太网相对于以往的工业控制网络有更高的通信带宽,能满足不断增长的数据通信的需要。然而对于作业点分散、环境恶劣、远程监控为特点的工业现场,特别是存在突发、小数据量传输的场合,以有线来做通信媒介显然已不太合适,这迅速推动了无线通信技术在工业控制领域的发展。
GPRS(General Packet Radio System)的出现,为构建低成本的无线工业监控网络提供了可能, GPRS是架构在传统的GSM网络之上的一种标准化的分组交换数据业务,提供端到端的广域的无线 IP链接。由于GPRS采用了分组交换技术,在通信过程中不需要建立和保持电路,且存在呼叫建立时间极短,提供实时在线、按流量计费、大的覆盖区域等特点,在远程突发性数据传输中,相对于有线网络有不可比拟的优越性。另外,采用大功率、电信专线、卫星通信等方式构建的监控网络,组网成本很高,特别对大范围、分散的远程监控系统基本上是不可行的。采用GPRS构建的工业远程监控系统,其构建成本(粗略估计)仅为有线网络的十分之一,而且运行成本亦很低。正是由于这些优点,基于GPRS构建的监控系统正在成为当今的热点领域之一。
二、GPRS监控系统的构建
作为监控系统关键部分的GPRS DTU(Data Transmission Unit)的设计显得尤为重要,因为系统的稳定性和可靠性要由GPRS DTU来实现。目前国内外很多公司开发的基于GPRS的监控系统,其GPRS DTU只实现了TCP/IP协议,所有的通信联络都由监控主机来实现,这种模式在有线网络上是可行的,但是在无线网络上就不合适了,因为无线网络上有太多的异常,而这些异常应该划分到底层协议中去。
通过对目前开发的产品及GPRS网络的传输特性进行分析研究,我们提出了一个比较实用的、易于实现的基于GPRS的监控系统(如图1)。该系统由GPRS DTU、GPRS AS(Access Server)、监控主机、数据备份服务器、新浪邮件服务器(Mail Server)组成,监控主机与GPRS AS通过1OM/100M的以太网互连,一直不停的交流各自的负荷信息和各种动态表。GPRS AS是整个监控系统的通信联络中心,负责设备群的远程接入(本文主要论述GPRS DTU的实现,GPRS AS的实现暂不论述)。
下面详细介绍GPRS DTU的硬件及其软件的具体实现。

三、GPRS DTU的硬件实现
在本系统中,GPRS DTU的硬件框图如图2所示,主要的硬件芯片:CPU采用ARM S3CA510B,通信模块采用MC35(西门子的GPRS Modem)。
ARM芯片S3CA510B通过RS232串口与 GPRS通信模块MC35连接,ARM芯片完成对MC35模块的初始化和数据收发功能;同时扩展 MMX232标准串口与微控制单元MCU(Micro - Control Unit)进行数据交换。

S3CA510B是由Samsung公司生产的基于以太网应用系统的高性价比16/32位RISC微控制器,内含一个由ARM公司设计的16/32位 ARM7TDMI RISC处理器,ARM7TDMI低功耗、高性能的16/32核,最适合用于对价格及功耗敏感的应用场合,如:工业控制、移动电话、嵌入式应用等。
MC35是西门子公司生产的GPRS无线通信模块,双频EGSM900和GSMl800(GSM Phase2+),支持声音、数据、SMS(短消息)、FAX(传真);进行GPRS数据传输时,工作电流只有360mA,空闲时电流为15mA;数据上传速度达到21.4Kbps,下载速度更是高达85.6Kbps;用户可通过AT指令与MC35进行命令与数据的交互,MC35是通过 RS232双向串行通道与用户连接的。MC35的主要优点是永久在线连接、快速的数据存储及更快的数据传输速度。
系统ROM选用一片16Mbit的HY29LVl60来构建16位的Flash存储芯片,其存储容量为2MB,对于我们的系统此容量已经足够;Flash存储器在系统中用于存放程序的代码,系统上电或复位后从此获取指令并开始执行,因此要将存有程序代码的Flash存储器配置到ROM/SRAM/FLASH BankO,即将S3CA510B的nRCS<0>(pin75)接至 HY29LV-160的CE#端。
系统采用32位的SDRAM存储器系统,即采用两片HY57V641620来构建32位的RAM存储系统,其单片容量为8MB。这能充分发挥32位 CPU的数据处理能力,满足嵌入式操作系统及各种相对较复杂的算法的运行要求。
四、GPRS DTU的软件实现
GPRS DTU的软件实现由操作系统、TCP/IP协议、PPP协议以及一些应用软件等组成。
(一)应用软件部分
这部分通常跟MCU(微控制单元)联系紧密,主要是控制MCU进行数据采集,或者是控制 MCU进行相关操作。
(二)操作系统部分
操作系统采用的是原码公开的uC/OS-Ⅱ,uC/OS -Ⅱ采用C语言和汇编语言,其中绝大部分是C语言,结构简单。且可移植性非常好,已经成功移植到了ARM芯片上,而且在移植过程中,只需修改跟操作系统相关的部分即可。
(三)TCP/IP协议部分
GPRS核心网络基于IP技术,因此,基于 GPRS的监控系统的DTU需要利用TCP/IP协议来完成GPRS业务数据的装帧和拆帧,以及保证数据在网络中的安全可靠传输。
本设计中TCP/IP协议采用的是瑞士计算机科学院的Adam Dunkels等开发的一套用于嵌入式系统的源代码开放的TCP/IP协议栈1wip。1wip支持多网络接口下的IP转发、支持ICMP协议、支持PPP协议、支持DHCP协议、动态分配IP地址等特点。
lwip中所有的TCP/IP协议都在一个进程(对uC/OSⅡ来说,进程即系统任务)当中,这样 TCP/IP协议栈就和内核分开了,不再限定于特定的操作系统内核,这便于协议栈在不同操作系统间的移植。之所以把所有TCP/IP协议都放在一个进程内,也是为了减少任务切换的次数(若把协议的每一层作为一个单独的进程,当接收一个tcp segment时,要进行多次任务切换),任务切换是很浪费时间的。
下面是创建一个和TCP/IP相关的新进程的代码示例:
#define LWIP-STK-SIZE 10*1024
//和tcp/ip相关任务的堆栈大小
#define LWIP-TASK-MAX 5
//和tcp/ip相关任务最多数目
#define LWIP-START-PRIO 5
//和tcp/ip相关任务的起始优先级
OS-STK LWIP-TASK-STK[LWIP-TASK-MAX]
[LWIP-STK-SIZE];//和tcp/ip相关堆栈区
0 u8-t curr-prio-offset:
sys-thread-t;sys-systhread-new(void(*function)(void*arg),void*arg,int prio)
{//略
}
(四)PPP协议部分
业务数据按照TCP或UDP的格式封装成 TCP数据包或者UDP数据包,然后加上IP报头和报尾封装成IP数据报。由于处理器与无线通信模块的通信遵循PPP(Point to Point Protoc01)协议,因而需要将IP数据报按照PPP的帧格式封装成PPP帧,然后才能通过串口传给无线通信模块。
PPP协议包含三个组成部分:
1.压缩多协议自寻址数据包的方法。
2.用于建立、设定和测试数据链路连接的LCP(Link Control Protoc01)。
3.一族用于建立、设定不同网络层协议的 NCP(Network Control Protoc01)。
此外,还要涉及具体的PAP(Password Authen- tication Protocol,密码认证协议)和IPCP(Internet Protocol Control Protocol,Internet协议控制协议)等。
DTU要跟外部网络建立连接,首先要附着在 GPRS网上,然后发起PDP(Packet Data Protocol,分组数据协议)上下文激活过程。只有通过此过程,DTU才能与GGSN(Gateway GPRS Support Node,网关GPRS支持点)建立一条逻辑通路,才能跟外部网络建立连接,从而使数据以IP报的形式进行传送。分组协议上下文激活过程如下:
(1)系统发送AT指令给无线通信模块要求建立连接,在指令中包含系统想要连接的APN(Access Point Name,访问点名称);
(2)系统发送PPP LCP帧给无线模块,此LCP帧的配置选项告诉无线通信模块想要鉴定的协议是PAP(Password Authentication Protoc01)(在配置中赋值为C023),不是CHAP(Challenge Handshake Authentication Protoc01)(在配置选项中赋值为 C223);
(3)系统开始进行PAP认证,认证通过后,无线通信模块将对系统给以回应,表明承认其身份,并且会将用户ID和密码储存下来;
(4)系统通过发送NCP—IPCP配置请求信息给无线模块,帧内IP地址为空,表明请求动态分配IP地址;
(5)无线模块向SGSN发送激活PDP上下文的请求信息;GPRS网络经过认证后动态分配一个IP地址;SGSN向无线模块发送激活PDP上下文接受消息;
(6)无线模块发送NCP—IPCP配置回应帧给系统,回应帧中包含了被动态分配的IP地址。
至此,PDP上下文激活过程全部完成,DTU与外部数据网之间的数据通道建立起来了。PDP上下文激活过程如图(3)所示:

(五)程序流程图
本DTU采用了uC/0S-II+lwip+PPP的方案,程序流程图如图(4)所示。

通上电后,首先进行硬件初始化,再对操作系统初始化,然后进行系统文件配置,创建任务,并对网络(TCP/IP,PPP)进行初始化,启动多任务调度;通过PPP发送LCP packets进行设定和测试数据链路,跟MC35模块进行链接;然后,进行PAP认证;通过后,PPP发送NCP packets选择和设定一个或更多的网络层协议,一旦协议都被设定好了,GPRS DTU就可以发送数据了。
DTU创建的一个任务发送短消息给GPRS AS报告其IP地址,GPRS AS得到DTU的IP地址后,就可以跟DTU进行通讯了,基于GPRS的监控系统也就构建起来了。
五、结束语
本文提出了一个比较实用的基于GPRS的监控系统,在此基础上对其DTU的软、硬件实现给出了一个完整的解决方案。随着GPRS网络的进一步完善,系统的优越性就得到更好的体现,这将使得其能够在如电力部门的电力系统远程监控、无人职守电站、电力抄表,水利水电部门的水文资料收集、河流监测、远程环境监控、工业控制部门的野外作业点的数据采集、遥控机器人,通信部门的远端无人职守机房监控和远程维护等等领域得到广泛的应用。