基于GPRS无线网络的机车远程数据传输系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
按流量计费,从而提供了一种高效、低成本的无线分组数据业务。特别适用于间断的、突发性的和频繁的、点多分散、中小流量的数据传输,也适用于偶尔的大数据量传输。
本文将针对GPRS无线通信技术在机车远程监控管理系统中的应用,着重探讨它的系统组网方式和数据传
输实现方法。
2 系统概述
2.1 系统简介
机车远程数据传输系统充分利用中国移动公网资源,建立了基于GPRS无线网络的远程数据传输平台。如图1所示,该系统主要三部分组成:车载部分,网络通信部分和地面部分。车载部分主要负责机车相关数据的采集、存储和发送;网络通信部分负责数据的传输;地面部分则主要负责数据的接收、存储和处理。通过该系统就可以将机车远程数据传输到地面数据中心计算机,供地面对运行机车的状态进行实时监测和
故障诊断,为机车的安全运行起到保障作用。
同时,当通信链路建立后,车载和地面是双向通信的,通过其通信协议的配合使用,可以实现地面对车载的远程配置和命令响应。该系统采用模块化设计思想,可对系统功能模块进行删减或扩展以符合具体需求和应用。由于本文的侧重点在于机车远程数据传输方法的介绍,对此不再详述。
图1 机车远程数据传输系统组织结构框图
2.2 系统组网
要构建机车的远程监控管理系统,首先必须建立无线数据传输链路。只要GPRS模块配备的SIM卡开通
移动互联网业务(即GPRS业务),就可使与之连接的电脑或其它设备方便、轻松地登录网络,进行INT ERNET连接,从而实现车载设备和地面数据中心计算机的网络连接,进而完成数据传输。
目前系统组网方式主要有以下两种选择:
1、数据中心计算机和车载终端设备都通过GPRS模块采用无线接入方式。这种接入方式具体有两种不同情况,要么两者都申请为具有固定IP的SIM卡,此时,中心和终端可双向随时随地地建立连接;要么数据中心在模块上设置移动内网固定IP,终端为普通SIM卡,这时,终端必须主动向中心发起连接。这种接
入方式需要当地的GPRS网络支持APN功能。
2、数据中心计算机采用公网接入,也即INTERNET接入方式,终端设备通过GPRS模块采用无线接入方式。这种接入方式具体也分两种不同情况,一种是数据中心计算机采用公网固定IP,登录到移动网络的G PRS终端主动向数据中心固定IP和对其开放的端口发起连接。另一种是采用动态域名方式,它不需要数据中心计算机具有固定IP,但需要为数据中心计算机申请一个动态域名,通过域名解析服务器就可以将域名解析成对应的IP地址,车载GPRS终端可以通过一个固定域名与数据中心计算机建立连接。
比较上述两种组网方案,由于费用和稳定性等方面的因素,本文采用第二种组网方案,数据中心由INTE RNET获取固定IP,终端设备通过GPRS网络获取动态IP,由车载终端设备主动连接数据中心。
3 数据传输的实现
3.1 系统通信方案
根据系统需求,机车远程数据传输系统采用了如图2所示的数据传输回路,它实际上提供了两个独立的数传回路。一是通过GPRS网络和INTERNET网络构成的网络通信回路,二是通过GSM网络构成的短信回路。其中前者是本系统的主要回路,负责机车远程数据的传输,后者作为特殊功能所用,或当GPRS回路异常时的一个备用通信手段。另外保留了电话呼叫的命令接口,但由于车载设备暂无人机交互界面,故没有实际使用其语音通话功能,仅当车载出现无法自行恢复的错误或故障时,呼叫中心号码,达到报警的目的,或者用来数据中心通过电话呼叫而激活车载终端,要求其上线,从而争取在网络连接中的主动性。图2中的GPRS模块和GSM模块实质上是同一款模块,为了从功能上有所区分,笔者将车载端开通了G PRS功能的模块称之为GPRS模块,将数据中心不需要开通GPRS功能的普通模块称之为GSM模块。针
对上述的GPRS数据传输回路有几个地方值得注意:
图2 数据传输回路框图
1、车连地。在现有的网络环境下,终端必须主动连接数据中心,否则数据中心无法通过网络找到终端设
备。为此设定车载终端上电后自动向给定的数据中心IP地址和端口发起连接。
2、车载GPRS模块获得的端口是有时效的。车载终端连接并注册到数据中心后,如果一段时间双方没有数据传输动作,车载终端的端口可能被收回,这时数据中心再按照原来的IP和端口是无法找到车载终端的。若想使车载终端和数据中心保持实时通信,必须通过发送心跳包来维持此连接。否则只能在需要时,
用电话或短信唤醒的方式,通知车载终端上线。
3、TCP连接方式。内嵌了TCP/IP协议的GPRS模块为用户提供了TCP和UDP两种连接方式的选择,虽然UDP的传输效率较高,但是考虑到本系统传输数据量较大且要求可靠性较高等因素,笔者采用了TCP
连接方式。
对于只作为本系统后备通信手段的短信回路,由于篇幅有限,在此就不详加介绍了,短信部分在C++ Bu ilder6.0环境中用C语言编写调试,方便下位机移植,增强代码的可移植性和重用性。
3.2 数据中心网络通信实现方法
套接字(SOCKET)是网络通信的基本构件。在Window系统下通过一套Winsock函数来实现套接字技术,不过使用Delphi设计基于套接字技术的网络通信程序大可不必关心这些系统功能,因为Delphi将这些功
能都封装在套接字控件之中了。
本系统采用的是典型的客户机/服务器(C/S)通信模式,其服务端(即数据中心计算机)的开发使用了I nternet组件中的TServerSocket控件。Delphi的VCL提供的套接字基类(TServerClientWinSocket)封装了
Windows的套接字API函数,为TServerSocket控件提供了基础的TCP/IP网络功能支持,这使得我们在开发应用程序时不必关心套接字实现细节问题,只在其控件的使用上下功夫,就可以开发出满足自己设计需要的网络通信服务端应用程序,节省了大量的时间和精力。
TServerSocket控件的ServerType属性有两种选择:stThreadBlocking和stNonBlocking,即阻塞式和非阻塞式。本文适应系统需要选择了阻塞式通信方式,为了避免主线程的阻塞,必须使用多线程技术,为每个连接创建独立的线程处理数据传输任务。首先在Port属性中设置用于监听客户端连接的端口,当侦听到有客户端连接后,只需要在其OnGetThread事件函数中执行如下语句:
SocketThread := GPRSThread.Create (false,ClientSocket);
便为该连接创建了一个新线程,并马上进入到我们的自定义线程GPRSThread中,从而所有与这个客户相关的事务都由该线程来处理。而在GPRSThread线程中,实际上所有的任务都是在GPRSThread.Execute 过程中完成的,于是所有负责数据传输任务的用户代码都写在这里,并且顺序执行。
在使用套接字的ThreadBlocking阻塞式通信方式时,客户端和服务器的信息交互是连续的,这里的套接字读写操作都是通过流来实现的,这种操作方式能够方便程序设计,而且具有一定的安全性,VCL提供了实现这种流操作功能的类TWinSocketStream。在使用套接字流读写套节字中的信息前,需要先创建之并
将其与套接字建立联系,代码如下所示:
Stream := TWinSocketStream.Create (ClientSocket,TimeOut); TWinSocketStream提供了Winsock中没有的超时机制,其中的TimeOut是设定的超时值,以毫秒为单位,
为套接字的读写操作提供准备时间。
3.3 车载终端网络通信实现方法
GPRS模块主要完成无线上网的功能。市场有一些成熟的产品,现在很多模块内部已经内嵌了TCP/IP协议,使上网更简单,只通过AT命令即可轻松上网,使用起来非常的方便。
华为GTM900便是一款内嵌了TCP/IP协议的GPRS模块,其建立GPRS连接并实现数据传输所使用的主
要AT命令如表1所示。
表1 TCP/IP常用AT命令列表