2012-08-08 | #1 (permalink) |
普通会员
注册日期: 2012-01-12
帖子: 50
|
GPRS DTU数据中心的通信设计
1 系统结构 组建一个基于GPRS 网络监控系统需要如下设备和程序: 1 ) GPRS DTU设备和SIM 卡。每个站点一般1 台DTU , 通过RS232 或者RS485与子站的RTU相连,实现与主站的数据传输。各个DTU 需要一张SIM卡。卡向移动公司购买月租费比较便宜的卡,根据实际数据流量需要,申请开通合适的GPRS 资费套餐。 2 ) 子站的电力参数采集设备和程序。该部分完成采集各种电力参数,保存并根据主站的需要通过GPRS网络上传数据。 3 ) 数据中心服务器。可以采用普通的PC机。该PC机要求连接上互联网,有固定的IP 地址。 4 ) 数据中心的监控系统程序。该系统可以实现与各个DTU通信,并且具有监控系统的一般功能,实现遥控、遥测、遥调、遥信“四遥”功能。 整个基于GPRS 网络监控系统结构如图 1 。 图 1 基于GPRS 网络监控系统结构图 GPRS DTU的数据中心的通信功能,主要是通过网络编程来实现的。在网络中,GPRS DTU是客户端,与普通的客户端相比, 有自己的特点,需要对GPRS DTU的参数进行设置。在参数中,心跳包的时间设置值得认真考虑,要考虑设置长多的时间,此外还要注意DTU 注 册包消息,因为其包含了对有数据中心很有用的消息。 2.1 心跳包时间设置 GPRS网络的特点是,如果长时间没有数据通信,那么移动网关将断开GPRS DTU与中心的连接。为了保持GPRS DTU永久在线,典型的GPRS DTU在设计上包含上电自动拨号 、采用心跳包、支持断线自动重连、自动重拨号这些功能,使得DTU具有永久在线功能。采用心跳包保持永久在线时, 存在一个心跳包时间设置为多少比较合适的问题。如果心跳包时间太短了,那么在DTU 发送的心跳包由于网络延迟,数据中心没有及时接收到心跳包,那么DTU就会判断连接断开,从而自动重连。相反,心跳包时间设置太长,,而这时没有数据 传输,那么移动网关将断开DTU 与数据中心的连接。通过大量的实验表明,把心跳包时间 设置为15分钟左右,可以基本保证DTU永久在线。 2.2 DTU注册包 DTU上电以后会根据设置的数据中心IP和端口号会主动去连接数据中心,一旦TCP链路建立成功,DTU将发送首次注册包,其中包含了DTU的基本信息,不同的厂家的DTU注册包应该不同。当DTU与数据中心在通信过程中,发生异常需要自动重拨号,也会重新连接数据中心再发送注册包。 数据中心接收到注册包后,就可以得到DTU所设置的ID号、所使用的 SIM 卡号、分配的 IP 地址。只有当数据中心接收、分析完注册包后,才可以确认DTU与数据中心建立通信连 接,接下来就可以进行稳定的、可靠地数据传输。 2.3 数据中心通信功能 基于GPRS 网络监控系统可采用客户机/ 服务器模式,即C /S 模式。GPRS DTU相当于一个客户端,而数据中心就是服务器端。我们可以把DTU 设置成采用TCP /IP协议透明数据传输的工作模式,数据中心的服务器采用流式套接字。数据中心的通信功能可以通过网络编程来实现。 数据中心服务器端的设计采用被动方式,都是根据DTU 的状态和上传数据,来作相应的处理。通信部分要完成基本功能如下: 1 ) 可以建立多个客户端( DTU ) 与服务器端的通信连接,并可以与各个客户端通信。即一个服务器对应多个DTU 。 2 ) 管理各个DTU 与数据中心的建立信道。当某个DTU 重新拨号,重连数据中心时,要更新信道。 3 ) 接收从某个DTU 上传的数据,并区分注册包数据和普通的数据,当接收到注册包数据时,按注册包格式完成分析;接收到普通数据时,按DTU 与数据中心约定的协议分析数据。 4 ) 数据中心发送数据到指定的DTU 。 3 VC平台的数据中心实现 数据中心通信功能的设计,是基于TCP/IP协议栈的网络编程,采用C/S模式。在VC++6.0开发环境下,运用C Async Socket 类来实现。这个类在低层次上对Windows Socket AP I进行了封装,可以充分利用Windows Socket AP I编程的灵活性并能满足当有网络事件发生时,利用消息驱动机制处理网络事件。和通常的网络编程的服务器端一样,要构造从C Async Socket类继承的两个类,一个用于监听客户端的连接请求,在程序中这个类命名为CServerListen;一个用于与客户端建立通信连接并交换数据,类名为CDTUClient。数据中心的通信功能的实现除了设计这两个类外, 还做其他的处理。 CDTUClient类从C Async Socket类继承而来的, 完成数据中心与DTU 的通信功能。处理FD_READ事件和FD_CLOSE事件,当接收到GPRS DTU 发送的数据时, 产生FD_READ 事件, 在其事件处理函数void CDTUClient::OnReceive ( int nErrorCode )要做数据接收处理。同样地, 在FD_CLOSE事件的处理函数void CDTUClient::OnClose( int nErrorCode ) 要做通信链路关闭处理。此外,根据G P RS DTU 的通信特点, 由这个这生成的对象能够区分对应的DTU 是否已经上传过注册包,完成向数据中心的注册。DTU 当完成向数据中心注册后, 这个对象应该根据注册包信息分别把成员数据m _strID 、m _s trPhone、m _s trIPAddr和m _strLog inTime设置为DTU的设备ID、S IM卡号码、动态地址IP、DTU登陆注册时间日前, 这些设置是在成员函数SetDTUParam()中完成的。 由于监控系统的通信模式一般可采用召调式, 此种模式即通信主动权在数据中心。当监控系统需要采集某个监测点参数时, 必须主动下发召调报文到指定的子站。数据中心通信的功能中, 可以按照C DTUClient 类对象中的数据成员m _iIndex在链表中来搜寻到指定的信道, 也可以通过对象中数据成员m _s trID 来获取指定信道。 在监控系统中, 这种数据中心通信的设计可以满足主站监控系统( 数据中心) 对下面各个子站的数据采集、控制和设置功能。 |
书签 |
当前查看此主题的会员: 1 (0 位会员和 1 位游客) | |
|
|
相似的主题 | ||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
银行储蓄所GPRS新方案 | 短信销售筱萱 | 行业的笛声 | 0 | 2011-06-10 18:57 |
银行储蓄所GPRS新方案 | zxm | 行业的笛声 | 0 | 2010-11-04 14:43 |
【转】基于GPRS的客户用电在线监测系统 | admin | 行业的笛声 | 0 | 2010-10-27 15:41 |
GPRS常见问题——常识类[GPRS-GPS] | zxm | 产品资料专区 | 2 | 2009-08-05 20:01 |
用于GPRS的AT命令 | s0z0y | 售后服务专区 | 0 | 2009-07-10 13:24 |