金笛工业手机论坛  

返回   金笛工业手机论坛 > 开发者乐园 > 短信开发资料

短信开发资料 短信开发技巧,代码分析

回复
 
LinkBack 主题工具 显示模式
旧 2012-08-08   #1 (permalink)
普通会员
 
hek320 的头像
 
注册日期: 2012-01-12
帖子: 50
hek320 正向着好的方向发展
默认 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 网络监控系统结构图
2 GP RS DTU 特点与数据中心通信功能
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 来获取指定信道。
在监控系统中, 这种数据中心通信的设计可以满足主站监控系统( 数据中心) 对下面各个子站的数据采集、控制和设置功能。
hek320 当前离线   回复时引用此帖
回复

书签


当前查看此主题的会员: 1 (0 位会员和 1 位游客)
 

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用


相似的主题
主题 主题作者 版面 回复 最后发表
银行储蓄所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


所有时间均为北京时间。现在的时间是 10:28


Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2024,Jelsoft Enterprises Ltd.