车辆监控中的通信原理

来源:互联网 发布:哪个音乐软件最好 编辑:程序博客网 时间:2024/05/05 01:50

         常用的移动网络有GSM、GPRS、3G网络。无线终端和互联网络的连接需要通过电信运营商提供网络支持。而不同的网络有不同的传输效率及性价比,因而适用范围也不相同。GSM为2G网,即传统的蜂窝网;GPRS是在GSM基础之上发展的2.5G网络,在GSM基础上发展起来的一种分组交换的数据承载和传输方式;3G则是第三代无线互联网通信技术。

        本文着重强调GPRS网络在车辆监控平台中的应用。

        一、网络通信

        GPRS与中心网数据交换,电信运营商提供固定的IP注册系统,每一个MS移动设备在电信运营商注册并获取动态IP。而每一次断线都需要重新从GGSN获取新的IP地址。所以移动终端没有固定的ip地址。大致流程如下图


        

       实际上GPRS DTU上实现的是协议栈是TCP/IP Over PPP。我们在使用时必须要有一些相应的概念。因此在下面我们就与GPRS模块使用相关的一些事项作一些简要的说明,如果您想详细了解这些协议,请参见相关书籍: 

       1. 每一次GPRS模块拨ATD*99***1#(或ATD*99***1#)之后其实都在采用PPP协议和移动的接入设备(一般是移动公司的一台特殊的GGSN路由器)进行握手,当PPP协议握手成功后,GPRS模块都会获得一个动态IP地址。一般来说,每一次GPRS模块下线后(挂断连接或者直接断电后)在重新进行拨号和PPP握手后取得的动态IP地址都是不一样的。但是移动公司可以通过为客户开通特定的APN和发行特殊的SIM卡,使得用这张SIM卡获得的动态IP地址每一次都不变。也就是说可以做到SIM卡和IP地址绑定。 

       2. 我们在做测试时,应当注意到如下事实:在采用公网的Apn(“cmnet”)的条件下,如果我们用GPRS模块主动向公网上的一个静态公网IP地址发起TCP连接,只要这个公网上的机器确实有侦听相应的端口,这样是可以连上的;但是相反地,如果是由公网上的静态IP向GPRS模块动态获得的IP地址主动发起的TCP连接将不会成功。这个现象的原因是:实际上GPRS模块获得的动态IP地址是移动的一个特殊的内部网段上的地址,这个特殊内部网段里的地址如果要和外部网(公网)的地址进行TCP通信,必须通过一个类似于TCP代理(或者NAT)的设备进行通信的转发。换句话说,这个动态地址对于网络上的其他机器来说是不可访问的。 GPRS模块每次登陆GPRS网络分到的动态地址是10.xx.xx.xx,这是APN为CMNET的GPRS网络内部的IP地址,不管采用的是TCP还是UDP协议,都只能GPRS模块先向公网(INTERNET)或者GPRS网络(同一个APN)的一个IP地址发起连接,同INTERNET网上IP地址的连接并不是直接连接,它要经过移动的网关来和这IP地址建立连接.而如果要通过公网上的IP地址向GPRS模块获得的IP地址就不能主动发起连接了,因为GPRS模块获得的IP地址仅仅是一个GPRS私网的IP地址。

       3. 标准AT命令+CGDCONT的主要作用是指定Apn。Apn是Access Point Name(访问接入点)的缩写,移动通过开通特殊的Apn为行业客户提供Vpn(Virtual Private Net)服务。比如说,如果是要上公网(Internet),应当使用“cmnet”作为Apn。又如,某企业向移动公司申请了Vpn服务,移动公司为其开通了一个Apn为“hxsw.gd”,则我们就应当用这个Apn来设置Gprs模块,格式如下:
AT+CGDCONT=1,“IP”,“hxsw.gd”

       4. 确定一条TCP连接有4个要素,这4个要素是双方的IP地址和双方的TCP端口号,这也就是GPRS模块为什么将本地端口、目的端口和目的IP地址结合起来作为连接的ID号(GPRS模块在PPP握手成功后获得的动态地址只要不断线重连就不会改变)的原因。


        二、数据传输

       使用TCP协议进行数据通信时,必须要经过三个阶段,第一个阶段是连接建立阶段,第二个阶段是数据收发阶段,第三个阶段是连接释放阶段:

      1).连接建立阶段:
      连接的建立又有主动连接和被动连接之分,一般来说客户机都是主动发起连接的,而服务器是被动接受连接的。

所谓的主动连接是指本方主动向远端发起连接请求, 而被动连接指的是本方侦听一个端口,等待远端及其主动向自己发起一个连接请求并且进行回应并且最终握手建链成功。

在连接成功,切换到数据态后,我们可以通过OPEN命令帧控制GPRS模块 进行主动连接。当然,连接时要指定对方的IP地址和端口号。至于被动连接,GPRS模块也可以支持,目前的程序只支持侦听一个端口。对方主动连接(GPRS模块被动连接)成功后将建立一条新的通信连接,GPRS模块将把这个被动连接成功的事件通知给上位机。

       2).数据收发阶段:
       当一条连接建立之后,我们就可以在这条连接上进行数据收发了。

我们可以使用SEND命令帧控制GPRS模块进行数据发送。当然,发送时要指定连接号(通过本地端口、目的地址和端口唯一确定)。

对于对方发送过来的数据,GPRS模块首先将其存储在自身的数据缓冲区中,然后将数据已到达此事件通知给上位机,上位机读取到数据已到达事件后,应当及时使用RECV命令帧控制GPRS模块将相应连接上的所有数据通过串口读出,当数据读出后,这些数据原先占用的数据缓冲区空间将会被释放。注意,由于GPRS模块的数据缓冲区有限(总量仅有25K Bytes),所以,对于对方发来的数据,上位机一定要及时读出,否则数据越积越多,可能会导致数据缓冲区溢出,丢失数据。

      3).挂断连接阶段:
      当一条连接上的所有数据都已经收发完成了,不再需要这条连接时,就可以把连接给挂断了。

和连接建立阶段相类似,挂断也分为主动挂断和被动挂断。

我们可以使用RSET命令帧控制GPRS模块进行连接的主动挂断。

如果连接被对方主动挂断,GPRS模块将会把这个事件通知给上位机进行处理。



原创粉丝点击