常规无线专用通信网络的最大缺点就是网络容量和覆盖范围太小,而公用无线通信网络的最大缺点就是通信费用过高。因此在本文所介绍的车辆监控系统采用Internet连接多个无线专用通信网络,其原理如图4.1所示。这样,该系统就具有了专用网络和公用网络的优点。该系统不需要支付无线网络通信费用,其网络容量和覆盖范围却增大了,系统的实时性较好而且便于扩展。

图4.1 通信网络结构图
基于GPS的车辆联网监控系统是有多个局域监控子系统构成。一个局域监控子系统中有一个监控中心和多个车辆终端组成。基地台与监控计算机合称为监控中心。当一个小型城市需要建立一个车辆监控系统时,如果被监控车量不是太多,则可以采用一个基地台覆盖整个城区,构建一个局域监控系统,这样监控计算机就不需要接入Internet,。例如小型城市警车监控系统完全可以采用一个局域监控系统。这是因为在一个城市内的警车数量不会太多,也就是说系统对网络所容纳的用户数量要求不大;此外警车的巡逻范围为城区,这样对监控网络的覆盖范围要求较低。故一个局域监控网络足以满足要求。当一个大型城市甚至是更大的地区需要建立车辆监控系统时,局域监控网络的系统容量和覆盖范围就不能满足要求,需要建立多个局域监控子系统,并通过Internet将各个监控中心连接起来,实现监控数据跨局域监控子系统传送。基于
GPS的车辆联网监控系统可以根据需要来建立局域监控子系统,并不追求无缝覆盖。例如在物流车辆监控中,当车辆进入城区时,其行使状态容易受到外界影响,需要对其进行监控;而当车辆离开城区进入高速公路时,其行驶比较平稳,通常不需要对其监控。这样我们就不需要在高速公路建立监控网络,而只需要在城区建设监控网络就可以满足要求了。
4.1 无线通信网络设计
在GPS车辆监控系统中,无线通信链路是联系监控中心和车载移动台的唯一途径,因此无线通信必不可少。车载移动台是可以运动的,因此这里所说的无线通信网络主要是指移动通信网络。
通信系统的性能指标可以从有效性、可靠性、适应性、标准性、经济性等多项指标来衡量。从信息传输的角度来说,其中最基本、最重要的性能指标有两个:通信的有效性和可靠性。有效性主要是指信息传输的“速度”问题,而可靠性主要是指信息传输的“质量”问题。对于数字信号系统,其有效性通常用信息传输速率来衡量。信息传输速率,定义为系统每秒钟传输的信息量,单位比特/秒。数字信号系统的可靠性是用差错率来衡量的。差错率可以用误码率来表示。无线通道中,存在多径衰落效应等多种影响因素;传输速率过高会导致误码率升高。因此有效性和可靠性的实现实际上两个相互矛盾的问题,通常只能依据实际要求取得相对的统一,或在满足一定可靠性指标下,尽量提高信息的传输速度;或在维持一定有效性下,使信息传输质量尽可能地提高。
为保证系统的监控和报警两大基本功能,通信网除满足基本的通信性能标准外,还特别地要满足以下两方面要求:一是所有车辆的定位信息都能及时送至监控中心并不断更新,以实现对车辆的实时跟踪,这称之为实时性。我们定义监控中心遍历系统内所有车载移动台的定位信息的最短时间为巡回检测周期,简称巡检周期。巡检周期可以用来衡量实时性的好坏。二是车载移动台报警触发后,报警信息能迅速传递至监控中心,即系统的警报快速反应能力。它是靠报警响应时间即车载台触发警报至中心站收到警报所需时间来衡量的。巡回检测周期和警报响应时间是衡量系统性能的两个关键指标。
经过多方面考虑,在基于GPS的车辆联网监控系统中的每个局域监控子系统的通信网络采用了常规无线通信网络。
4.1.1无线通信网络的工作方式
无线通信网络的工作方式可以分为三类:单工、半双工和全工三种。单工是指通信双方使用同一频率的按键通信方式,通信双方设备交替地进行接收和发送,即发射时不能接收,接收时不能发射。半双工是指收发信机分别使用两个不同的频率按键通信的方式,通信双方有一方使用双工方式,即收发信机同时工作且使用两个不同的频率,而另一方则采用双频单工的方式,即收发信机交替工作。双工是指通信双方收发信机均同时工作,即通信双方均可以在发送数据的同时接受数据[13]。
单工方式不需要天线共用装置,组网方便、设备简单、耗电小,造价低,但是容易造成强干扰。半双工方式设备简单、功耗较小、受邻台干扰小。双工方式功耗大、设备复杂、使用方便、抗干扰能力强。总之,各种方式都有其优缺点,采用哪种方式需要根据系统的具体条件而定。另外为了增加通信距离,可以设置中继站。
半双工方式具有设备简单,功耗较小,受邻台干扰小等特点,而基于GPS的车辆联网监控系统的局域监控子系统中的无线通信网络也要求投资少,组网简单,功耗小等,因此半双工电台可以满足系统要求,故系统了半双工电台。
在局域监控子系统移动台发出的呼叫只有基地台可以收到,而基地台发出的呼叫是广播式的,所有的移动台都可以收到,这有利于GPS差分信息的发送。由于基地台的天线可以架设的很高,因此通信范围较远,一般在地势起伏缓慢的地区通信距离可以达到20-50Km半径。系统中各移动台之间不能直接相互通信。
4.1.2 无线通信网络的访问控制方式
在局域监控子系统的无线通信网络中有一个基地台和多个移动台,各移动台都要与基地台进行通信,传输定位信息。但是在这个无线系统中只使用了一个物理信道,如果有两个或两个以上的移动台同时使用这个信道发送信号,则信号之间就会发生干扰,所有信号都将不能被正确接收,信道堵塞也就发生了。在局域监控子系统中,基地台和各个车载移动台都要使用此信道,信息必将发生冲突和碰撞,如果没有合适的管理规则,整个通信网络必将陷入瘫痪。因此必须要有完善的管理方式,所以在此先确定无线通信网络的系统的访问控制方式。
在网络的访问控制方式中,主要有信道划分协议、随机访问协议和轮流协议三种方式。
信道划分协议是指通过频分复用(FDMA)或时分复用(TDMA)等方法为每个通信节点划分固定信道。每个节点使用各自的信道发送数据。这种方法可以有效地避免冲突和碰撞的发生。在局域监控子系统的通信网中只有一个频道可以使用,显然频分复用不适合该系统。时分复用将信道平均分配给基地台和所有的移动台,即使它们没有数据要发送也同样占有信道,信道利用率低,而且要求各发射台精确计时,严格同步并控制时间片的大小,实现难度较大。
随机访问协议是指各个节点在发送信息时,占用整个信道全速发送数据,如果发生冲突或碰撞,则发射台延迟一段随机时间后重新发送。随机访问协议种类很多,常见的有ALOHA协议和CSMA(载波侦听多路访问)协议以及在它们的基础上改进的时隙ALOHA、CSMA/CD等协议。这种控制方式适合于负载不大的计算机网络,然而却不适合于这里的局域监控子系统。这是因为计算机网络中的各台计算机并不是在所有时刻都需要占用网络,它们几乎是随机使用网络总线,且各台计算机对总线使用情况也有很大差别,不适合预先分配信道的方式,而需要这种竞争的方式来获取通信时隙的办法来增大信道的利用率。然而局域监控子系统的无线通信网络不但负载大,而且同一个监控级别的移动台所发送的数据量几乎相等。若采用这种随即访问的控制方式,必将不断的产生冲突和碰撞,从而使整个通信网络陷入瘫痪。
轮流协议顾名思义指各个节点轮流使用通信信道。常用的轮流协议有轮询协议(polling protocol)和令牌传递协议(token-passing protocol)。令牌传递协议中没有主节点,令牌在各个节点之间以某个固定次序传递,这显然不符合局域监控子系统的无线通信网络,因为它存在主节点——基地台,而且节点(移动台)间不能直接通信。轮询协议要求存在主节点,主节点以循环的方式轮询每个节点。轮询协议消除了困扰随机访问协议的冲突和碰撞,但是它引入了轮询时延。这种方式显然可以应用于局域监控子系统的无线通信网络。监控中心的基地台可以作为主节点,移动台作为普通节点。监控中心的基地台按照一定顺序与通信网内各个车载移动台轮流交换信息。所有的车载台都遍历过后,监控中心就通过基地台获得了所有车载移动台的位置、状态等信息,然后再开始重复下一轮查询。在一般工作情况下,基地台向其网络发送广播查询信息(信息内含有被查询车辆的编号),对特定车辆进行查询。车载移动台收到查询信息后,判别自己是否为被查询的对象,若是被查询对象,则立刻向基地台发送自己的定位信息及其他车况信息;否则不响应,继续等待接收下一次的查询信息。在正常工作情况下,这种轮询方式保证了单信道上任意时刻最多只有一个电台发射信号,避免了信息碰撞的发生,从而提供了可靠的信息传送。但是,监控中心的基地台为了获得一辆车的定位信息就必须发出一次查询信令。这种信令本身完全可能是不必要的,而且信令中还含同步码、校验码等冗余信息,因而大大降低了信道的利用率,延长了车辆巡检周期,使系统容量受到了很大限制,成为系统发展和性能提高的“瓶颈”。更为重要的是,在这种通信网络中报警信息无法及时传送,必须当该车辆被查询时,方能将其报警信息传回监控中心,系统的报警响应时间过长,这样很可能错过了对警情处理的最佳时机。因此轮询控制方式也不适合应用于局域监控子系统的无线网络。
在车辆监控系统中,同一监控级别的移动台的使用通信信道的几率相同,且各个移动台每次发送的数据量差别不大。此外,监控系统要求报警信息及时传送等特点,因此可以根据这些特点为局域监控子系统设计专门的访问控制方式。
在基于GPS的车辆联网监控系统的局域监控子系统的通信网中可以采用信道划分、随机访问、和轮流协议相结合的访问控制方式。首先基地台以轮询的方式发布车辆组号,组内的各车辆以信道划分的方式向基地台发送数据。对于车辆报警则以随机访问的方式竞争信道向监控中心发送报警信息。
因为各移动台每次发送的数据量几乎相等,可以按照每次发送的数据量和通信速率来划分大小合适的时隙,如果时隙划分太小,则在一个时隙中定位数据不能完成发送,如果时隙太大,则造成信道浪费,增加巡检时间,所以时隙的大小以稍大于发送一次数据所需要的时间为宜。将本区域内所有被监控车辆分组管理,每组车辆不宜太多或太少,以10-20辆为宜,如果每个组的车辆太少,基地台就需要发送更多的查询信息,若是每组只有一辆车,则该退化为普通的轮询方式,基地台需要为每一辆车都发送查询信令;如果每个组内的车辆太多,则各移动台计时会出现误差,容易造成信息冲突或碰撞,若所有车辆划分为一个组则退化为信道划分方式,此外,为了实现对不同监控级别的车辆实行不同级别的监控,不宜将不同监控级别的车辆编入同一个组。
采用这种TDMA信道划分、ALOHA随机访问、Polling轮询相结合的方式可以有效地对车辆实行监控。基地台在每次发送车辆组号后,都预留一个时隙,这个时隙供所有局域内的需要报警的车辆所共用,它们对这个时隙供采用ALOHA随机访问的方式竞争使用,这样如果两个以上的移动台同时在该时隙发送报警信息,就会发生冲突或碰撞,使报警信息不能及时被收到,但是,移动台在随机等待一段延时后,仍然可以竞争以后的报警时隙。即使一直未能在报警时隙中成功发送报警信息,它也可以在自己被轮询到时,将报警信息与其定位信息一起发送。当然,冲突发生的话报警响应时间会较长,但是由于预留了较多的报警时隙,
发生报警冲突的几率很小。如果基地台对每一个移动台进行轮询,则大量的时间要花费发送查询信息上,造成信道利用率降低。基地台仅轮询到组,这样对每个组仅发送一次查询信息,而组内的车辆以TDMA的方式分别占有各自的信道。移动台依靠基地台发布查询组命令时携带的同步信息来统一时基并开始计时,以按照其组内编号确定自己的固定时隙,由于组内车辆数目不多稍微的计时偏差不会造成冲突的发生。采用多种访问方式相结合的办法可以有效地提高信道利用率,避免信息冲突或碰撞的发生,同时保证了报警响应的快速性和系统的实时性。
4.1.3 无线通信网络的体系结构
网络体系结构是计算机网络的分层、各层协议和层间接口的集合,不同的网络具有不同的体系结构。在网络中,每一层都是为了向它邻接的上层提供一定的服务而设置的,而且每一层都对上层屏蔽如何实现协议的具体细节。在发送数据时,每一层都把由数据和控制信息组成的报文分组传输给它的下一层,直到物理传输媒体;接收数据时,则是每层从它的下一层接收相应的分组,并去掉与本层有关的控制信息后,把剩余部分提交给与它邻接的上层。
如何定义层之间的接口是网络体系结构的关键问题之一。为了保证接口服务调用操作和响应的功能完整性,他们被设计成在执行过程中不允许中断的原语。在设计网络体系结构时,首先必须定义出每一层所要完成的功能集合,然后定义出上下层之间的接口,最后才设计为完成所需要功能的协议。
如何划分协议的层次是网络体系结构的另一个重要问题。层的划分必须适当。层次太多会造成系统处理时间增加和分组首部长度增加,从而使系统开销增加;层次太少又会造成每层的功能不明确,相邻层间接口不宜确定,从而使得协议的可靠性降低。

图4.2 OSI网络体系结构示意图
首先提出计算机网络体系结构概念的是IBM公司,IBM于1974年提出了系统网络体系结构(SNA)之后,
DEC公司于1975年提出了数字网络体系结构(DNA)。其它计算机厂商也分别提出了各自的计算机网络体系结构,特别是1978年国际标准化组织(ISO)提出了开放系统互联(OSI)参考模型,并陆续推出了有关协议的国际标准,从而确立了如图4.2所示的OSI网络体系结构[18]。
OSI网络体系结构是提出和定义的计算机网络分层、各层协议和层间接口的集合。OSI网络体系机构中,低层协议为相邻的高层协议提供相应服务,高层协议作为低层协议的用户而存在。它共分为物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。
在OSI网络体系结构中,高层协议通过服务访问点(Service Access Point,SAP)和低层协议发生作用。服务访问点是服务使用者和服务提供者之间的接口。同一层中的不同服务访问点用被称为地址的服务访问点标识来区别。相邻的高层协议和低层协议的交互作用通过服务原语来实现。服务原语是服务提供者和服务使用者交互作用的原子行动的描述,它描述服务提供者和服务使用者一次原子交互作用的功能和各参数的意义。
在OSI网络体系结构中,除了物理层外,网络中的数据的实际传输方向是垂直的。用户发送数据时,首先由发送进程把数据交给应用层,应用层在数据的前面加上该层的有关控制信息和识别信息,再把它交给表示层。这一过程一直重复到物理层,并由传输媒体把数据传送到接收端。在接收端计算机中,信息向上传递时,各层的有关控制和识别信息被剥去,最后,数据被发送到接收进程。数据传输时变化如图4.3所示。

图4.3 OSI网络体系结构中数据传输时变化过程
在局域监控子系统中的无线通信网络也是分层设计的,但是考虑到该网络的复杂程度以及单片机的处理速度,无线通信网络仅被分为三层,为别为物理层、数据链路层和应用层,如图 4.4所示,其中数据链路层是该网络中最主要的部分。

图 4.4 无线网络的体系结构
1.物理层
物理层保证数据在信道上正确传输,它是局域监控子系统中监控中心的基地台和各车载移动台之间的物理接口,为数据通信提供了传输媒体及互连设备,保证发送和接收信号的一致性。物理层具体包括:基地台和移动台的无线电台,通信控制器和无线信道等,如图 4.5所示。物理层协议规定了系统的机械特性、电气特性、功能特性和过程特性等。

图 4.5 基地台与移动台间的通信
对于半双工电台来说,本系统用到的接口一般有信号输出、信号输入、 PTT(Push To Talk)和地等。其中 PTT是控制电台发射和接收状态的。当 PTT与地之间为高阻状态时,电台为发射状态;当 PTT与地之间是低阻状态时,则电台为接收状态。因为电台的型号不同,其输入输出阻抗和对输入输出信号的要求存在不同,因此需要对输入输出信号做适当的电平转换,以适应不同的电台。此外当车辆驶出局域监控子系统的网络覆盖范围后,需要切换移动台的通信频率,以便与新的基地台通信。

图 4.6 电台发射与接收数过程
电台的发射和接收过程如图 4.6所示。通常电台在 PTT有效之后,需要有一段调整时间方能正确无误的发送音频信号。因此在把 PTT置为有效到把信号输入电台发送要有一段延时T1。这段延迟因电台型号不同而有差异。若设置太短,则信号易丢失;若设置太长,则必将增加信号所需的时间,降低信道的利用率,延长巡检周期。实测几种常用车载话音电台,发现这段时间一般在几十毫秒到一百数十毫秒之间。若是采用专门的数传电台,则此参数有希望降到十毫秒左右。
T2是指传送有效信号的时间。它即为从调制解调器送来的音频信号持续时间。我们要传送的数据就在这段时间内被传送。
T3是指信号传送结束后到我们把 PTT信号置成无效的延时。为避免信号被延时而没有发出和保证无线信号的稳定,一般情况下,在确认所有信号都送到电台之后,我们可以稍微延时后再把 PTT信号关闭。这之间的延时一般为二到五毫秒就可以了。
另外在实现中要注意的是车载电台在从发射状态转到接收状态、从接收状态转到发射状态不是立即实现的,这中间有一定的延时。因此在把关闭发射(指把 PTT关闭)到下一次发射(指把 PTT打开)不能相隔太近(即图中的 T4)。对于不同的电台,此项参数差异较大,可能在几毫秒到数十毫秒之间。在存在电台连续两次发射的情况下必须要注意这项参数。
系统的电台的输入信号和输出信号都是音频信号,因此需要调制解调器来把数字信号和音频信号相互转化。对于常用的 FSK调制方式来说,是采用不同频率的正弦波表示数字信号中的‘0’和‘1’的。如调制解调芯片FX469在 1200波特率下是用1200/1800Hz的正弦波表示‘1/0’,而在 2400波特率下是用 1200/2400Hz的正弦波表示‘1/0’。调制解调器的调制和解调功能不是瞬间完成的而且其延时对于严格的同步通讯来说是不可忽略的(通常调制的延时很小,可以不计;解调的延时则比较大)。我们以FX469为例:调制时,从数字信号送出到正弦波出现,其中间的延时(TxDelay to Output Time)典型值为1.2微秒;而解调时,Rx数字信号输出端的数据滞后Rx信号输入端的正弦信号,这段延时(Internal Rx Delay)的典型值则为1.5毫秒。
2.数据链路层
数据链路层加强物理层原始比特信息流的传送,保证物理链路的可靠。并负责建立和释放链路。物理层只负责传输和接收数据,并不关心它的意义和结构。数据链路层将数据按帧格式化,并进行差错控制和介质访问控制,保证数据发送和接收的正确性。
在局域监控子系统的无线通信网络中,系统采用了 TDMA的方式将单一的物理信道划分为多个逻辑信道。每个逻辑信道称为一个时间片或时隙。每一片的长度可以一样,也可以不一样。这些时间片分给基地台和各个移动台使用。由于基地台负责时间基准控制,所以基地台向移动台发送数据所占的时间片的长度可以随意变化。然而各移动台所使用的时间片长度不能随意变化,因为信道上是否有移动台正在发送数据,其他移动台不能知晓,各个移动台都是依靠基地台的同步信息校准时间后,各自计时来确定时间片的占有者。因此将移动台向基地台发送的数据的时间片设置为大小相等,时间片的长度以稍大于发送完一帧定位数据所用时间为宜。这样,当基地台发送查询组内车辆信息的命令后,组内各移动台可以依靠自己计时来确定各自的时间片,以防发生冲突。当移动台获得当前时间片使用权时,其电台在时间片的开始处把PTT打开,在结束处把PTT关闭。
由于整个系统要严格同步,每个移动台才能找准自己的时间片,保证各个时间片的正交性,否则很有可能干扰其他移动台的正常工作。而各个移动台的时钟在一次校准后,过一段时间就会有偏差。因此,监控中心的基地台必须每隔一段时间发出一个同步帧来校准整个系统的时钟。
1975年国际标准化组织(ISO)将 IBM公司的面向比特的传输控制规程(SDLC)做了适当修改,制定了高级数据链路控制规程(HDLC)。其链路监控功能通过一定的比特组合所表示的命令和响应来实现,这些监控比特和信息比特一起以帧的形式传送。它对应于OSI七层模型中的第二层——数据链路层。
HDLC中的帧的基本结构如图4-7所示。

图4.7 HDLC中的帧的基本结构
结合局域监控子系统中无线通信的特点,参照HDLC帧的基本结构建立了本通信协议的帧结构,如图4.8所示。

图4.8 无线网络的帧结构
(1)起始标志和结束标志是表明一帧的开始和结束的标志。帧的起始标志和结束标志由8位二进制序列01111110(即十六进制7EH)组成,也就是说,检测到连续的六个(只能是六个)‘1’就表示是标志字了。一个标志字表示一帧数据的开始,下一个标志字表示该帧数据的结束。如果在两个标志字之间的比特流串中碰巧出现了和标志字段一样的组合,那么就会误认为是帧的边界。为了避免出现这种错误,对两个标志字串‘7EH’中间的之间位串(包括任何数据,含CRC校验码)采用了发送端“零位插入”和接收端“零位删除”技术。“零位插入”就是在发送端,通信控制器或程序对发送的每一组信息进行检查,发现有连续5个‘1’的数据流出现时(不论其后一位是‘1’还是‘0’),在5个‘1’之后插入一个‘0’,
这样,就可以保证不会出现6个连续的‘1’即不会出现与标志字相同的内容;“零位删除”是指在接收端,通信控制器或程序检查输入位流,若发现有连续的5个‘1’之后是一个‘0’,则把这个‘0’删除,将数据还原成原来的比特流。通过“零位插入”和“零位删除”的处理,发送任意组合的比特流都不会引起帧边界的判断错误,从而可以传送任意组合的比特流。这样就可以实现数据链路层的透明传输。特别的是,若从接收端位串中检测到连续7个‘1’,即0x7F,则表示这串信息出错。因此,‘0x7F’也叫做“无效标志”。
(2)地址字段对于下行帧和上行帧代表的意义不同。所谓下行帧,是指从基地台发送数据给移动台,此时的地址,是指接收的移动台的地址。当基地台发送数据给某一个移动台时(例如该移动台发生报警,基地台对其做出命令),地址就是指移动台的编号。当然在该系统中,基地台很少直接发送数据给某一个移动台。在大多数情况下,是基地台向一组移动台发送同步命令信息,要求该组移动台向监控之心发送各自的定位等数据,这时,地址代表组号。因为有时移动台会驶入和驶出该监控区域。这样先前的部分分组可能会失效,需要更改部分移动台的组号及其组内序号,这时要求所有移动台接收该分组帧,至于是否需要更改其分组信息,从信息字段中读取。当移动台向基地台发送数据时,这时,接受者肯定是基地台,所以这时的地址可以设置成移动台编号。为了区分各中地址设定移动台地址为“1xxxxxxxxxxx”,组号为“01xxxxxxxxxx”,而用“0000000000000”代表所有移动台。
(3)类型代表该帧的类别,因为不同类别的帧的信息结构不同,各位数据代表的意义也就不同。只有明确了帧的类别,后面的信息的意义才能被正确地解析出来。在局域监控子系统的无线通信网络中,根据信息数据字段内容的性质将帧主要分为以下几类:同步帧、命令帧、注册帧、报警帧、数据帧、分组帧等几种类型。类型字段预留了4位,可以表示16种不同的帧类型。
(4)信息字段是这一帧要传送的实际内容,其中包含了这帧数据的含义。帧的长度随类型不同而不同,含义的解释也因帧类型而异。我们所要传输的数据就以某种编码格式存放于其中。帧可以按照其携带的信息的功能而分为如下几类:
- 同步帧(
Synchronization Frame, S)——基地台向移动台发送的时基控制信令,提供系统同步基准时间,如果需要可以向移动台提供GPS接收机初始化信息。各个移动台根据收到的同步帧来校准自己的内部时钟,从而使整个系统保持一致的同步状态。由于移动台计时存在误差,同步帧应每隔一段时间发一次,以免时间太长,误差积累太大,各移动台时基不再统一。 - 命令帧(
Command Frame, C)——基地台向移动台发送的命令信息。在命令帧中可以对移动台发出操作命令,如控制移动台中设备中某个输出口的状态,以达到控制移动台运行状态的目的。命令报警的移动台停止报警、遥控车辆熄火点火等动作就可以由这个命令帧发布命令,此外命令帧还要负责处理移动台的越区切换。另外,基地站还利用命令帧发布命令,要求组内车辆回传定位信息。如果需要可单独向某个移动台询问命令。 - 分组帧(
Group Frame, G)——基地台向移动台发送的分组信息。该帧信息命令入网车辆进行分组,并为车辆提供组内编号。由于移动台可以在不同的局域网络内越区切换,当监控网内车辆数量变化较大后,重新对车辆进行重新分组后,可以提高信道利用率。同时不能将监控级别不同的车辆编入同一个组,这样,便可以对重点监控的车辆进行高频率询问,以实现重点监控。在局域监控子系统的无线网络中,没有采用轮询到每个移动台的方式获取各个移动台的状态信息,而是由移动台发布组号,而后该组内的移动台按照其在组内的编号依次向基地台传送信息。 - 注册帧(
Register Frame, R)——移动台向基地台发送的申请注册入网信息。当移动台进入新的局域监控子系统的网络中或者移动台刚刚开机,它可以向基地台发送申请入网信息。但是由于按照网络控制方式,此时该移动台并没有固定分配的通信信道,故应该为注册信息预留一个时间片。此时间片是各个申请入网的移动台共用 的。各个申请入网的移动台竞争使用同一个时间片,必然会有发生信息碰撞的可能。发生冲突或碰撞后,移动台应该延迟一个随机时间,再等待注册时间片,重新发送注册信息。 - 报警帧(
Alarm Frame, A)——移动台向基地台发送的报警信息。当移动台发生意外,需要向基地台发送的报警信息。当某个移动台发生报警时,可以抢占最近一个报警时间片发出报警信息,而不须等到基地台轮询到自己的时候再发出,这样可以大大加快报警的速度。因而在时间域上,应该每隔一段时间就有一个报警片。这样,在不发生报警冲突的情况下,移动台的报警响应时间就是两个报警片的间隔时间,通常能控制在几秒之内。 - 数据帧(
Data Frame,D)——移动台向基地台发送其位置、速度等信息。发送数据帧的时间片被分配给各个移动台,也就是说该时间片为某个移动台私有,其它移动台是不能占用的,因此不会发生冲突或碰撞。若移动台处在报警状态且报警信息还未得到响应,则都要将报警状态与定位信息可以在该时间片一并发出,以达到不丢失报警信息的目的。
(5)校验序列是该帧的校验数据。在实际信道上传输数字信号时,由于信道传输特性不理想以及噪声的影响,所收到的数字信号不可避免地会发生错误。因此除了要合理设计基带信号外,还要采用差错控制编码。差错控制编码的基本做法是:在发送端将被传输的信息序列上附加上一些监督码元,这些监督码元与信息码元之间以某种确定的规则相互关联约束。接收端按照既定的规则检验信息码元与监督码元之间的关系,一旦传输过程中发生差错,则信息码元与监督码元之间的关系将受到破坏,从而可以发现错误,乃至纠正错误。目前常用的差错控制方式主要有三种:检错重发(ARQ)、前向纠错(FEC)和混合纠错(HEC)。检错重发方式中,发送端经编码后发出能够发现错误的编码,接收端收到后经检验如果发现传输中有错误,则通过反向信道把这一判断结果反馈给发送端。然后发送端把前面发出的信息重新传送一次,直到接收端认为已经收到正确的信息为止。前向纠错方式中,发送端经编码后发送出能够纠正错误的编码,接收端收到这些码组后,通过译码能自动发现并纠正错误。混合纠错方式是前向纠错和检错重发方式的结合。在这种系统中发送端不但有纠正错误的能力,而且对超出纠错能力的错误有检错重发的能力。
差错控制编码的分类标准很多,按照不同的分类标准划分方式也不同。例如按照其功能可以分为检错码、纠错码、纠删码。按照信息码元与监督码元之间的检验关系可以分为线性码和非线性码。按照信息码元和监督码元之间的约束方式可以分为分组码和卷积码。此外还可以分为系统码和非系统码、二进制码和多进制码等。
无论哪种纠错方式,都是以降低传输效率来获得传输可靠性的。该系统采用循环冗余校验码(CRC),它是一种循环编码,其生成多项式为:
G(x) = X16 +X12 +X5 +1
CRC校验码在通信系统中通常用硬件实现,在研究了其校验原理后该系统决定采用软件实现,充分利用了软件的灵活性,取得了较好的效果。其实现原理如下:
对于系统码形式的(n,k)循环码,其码组前面k位就是信息码,后面n-k = r位就是附加的监督码,其码多项式前 k项与信息多项式
![]()
的相应系数相同,只是将 A(X)各项的系数提高了 (n-k)次。码多项式后面的 n-k = r项就是监督多项式
![]()
所以(n,k)循环码的码多项式可表示为 C(X) =Xn-kA(X) + r(X),也可写作 Xn-kA(X) = C(X) + r(X)。用 g(X)去除上式,得
![]()
我们知道码多项式是 g(X)的倍式,即 C(X) = V(X)g(X)。g(X)是 n-k = r次,而 r(X)的幂次不超过 r-1次,故可得 r(X) ≡ Xn-kA(X) mod g(X)。上式表明监督多项式 r(X)就是用生成多项式g(X)除 Xn-kA(X)所得余式。于是得编码步骤:
1. 用 Xn-k乘多项式 A(X)以提高幂次,这一运算实际就是在信息码组后附上(n-k)个 0;
2. 用生成的多项式 g(X)去除 Xn-kA(X),求出余式 r(X);
3. 以 r(X)作为监督多项式附加在 Xn-kA(X)之后,即得码多项式 C(X)。
接收码多项式 C′(X)除以生成多项式 g(X)得到的余式,即错型多项式 E(X)除以生成多项式 g(X)后的余式。若结果为 0,则表明未出错。否则,则表明传输过程中发生了错误,从而可以根据余式查出错型多项式 E(X),也就可以恢复出正确的码组 C(X)。
在该系统的无线通信网络中基地台和移动台之间的通信方式有多种,例如,基地台可以单独给某一个移动台发布命令,然后该移动台对其应答,但是在该系统中最多的时候是对一组车辆发布命令,组内车辆按照次序回传数据。在这种时候,通常还要预留同步时间片、注册时间片和报警时间片,如图 4.9所示:
![]()
图4.9 逻辑信道的划分
为了进一步降低报警和注册发生冲突的情况,基地台可以在每次轮询期间增加预留的报警和注册时间片。以增加至两个报警片为例,则可以把报警片分成 0号和 1号报警片,移动台分成奇偶两个部分。编号为奇数的移动台抢占 0号报警片;编号为奇偶数的移动台抢占 1 号报警片。这样若有两个移动台同时报警,只要是分属在奇偶号两类中就不会产生冲突。两个移动台报警冲突的概率减少了一半,但是增加报警和注册时间片必然会导致信道利用率降低,巡回周期加长,系统实时性变差。至于报警和注册时间片发布的频度可以根据系统内报警和注册发生的频度来具体决定。
3.应用层
应用层是局域监控子系统中无线通信网络的最高层,负责向数据链路层发送数据和从数据链路层接收数据。因为系统较为简单,应用层和数据链路层之间没有设置其它层。应用层还要完成对数据的压缩与解压缩以及对收到的信息进行解析。由于定位信息时刻更新,为了避免发送错误,移动台接收从GPS接收机接收定位数据采用双缓冲区。此外由于一个基地台所覆盖的地理位置有限,故定位信息的经纬度存在冗余,则在发送时可以将这些冗余数据去除,基地台接收后可以根据其位置添加其冗余数据,构成完整的经纬度信息。
4.2 Internet通信的设计
随着城市规模的不断扩大,车辆监控系统的监控范围也要随之增大,甚至有时候需要进行跨城市监控,在这种情况下,仅靠一个基地台是不能覆盖整个监控区域的。同时由于需要监控的车辆的增多,原有的系统容量也很难满足要求。因此就需要建立能够灵活扩展监控区域和监控容量的车辆监控系统。
在基于GPS的车辆联网监控系统中,我们采用Internet将分布在不同地理位置的车辆监控网络进行连接已达到扩展系统容量和监控范围的目的。因为每个监控中心都有一台操作系统为Windows的监控计算机
,用来显示电子地图以及被监控车辆的相关信息等,现在只需将其接入Internet即可。
每个监控小区内的监控计算机作为Internet中的一台客户机,此外在Internet中还需要一台服务器。当监控计算机运行后,便可以通过Socket与服务器建立连接。客户机与服务器时刻准备着传输信息。
当车辆从一个局域监控子系统的覆盖区域驶入一个新局域监控子系统的覆盖区域后,移动台会申请注册入网,则当地监控中心会分配给该车辆一个逻辑信道,这样车辆的位置等信息就可以通过当地局域监控子系统的无线网络传送至当地监控计算机,如果需要,当地监控计算机可以将该车辆的位置信息转发至服务器端,服务器可以通过车辆信息数据库查找出该车辆的归属地的IP地址,然后将这些信息通过Socket将其转发至车辆归属地监控计算机。
监控小区的监控计算机的主要任务是通过串口接收基地台单片机送来的处于本基地台覆盖范围内的被监控车辆的信息,将部分异地漫游至此服务区的车辆信息通过Internet送至服务器,同时还要通过Internet接收服务器端送来的本地漫游至其他监控区域的车辆信息。此外要实时将车辆行驶轨迹显示在电子地图上。
服务器的主要任务是接收各个局域监控子系统的监控计算机送来的车辆信息,对信息做适当处理,并将其转发给适当的监控计算机,同时可以将车辆信息实时地显示在电子地图上。此外服务器中有车辆信息数据库和基地台信息数据库,以便于管理。
4.2.1 Socket通信原理
Windows系统能够为应用程序提供接口来调用系统的功能或者与系统进行交互。在Windows系统中包含着专门针对网络编程的接口——WinSock API。WinSock API在Windows系统中为网络开发提供的接口中包含了一组网络I/O和获取网络信息的库函数,网络应用程序可以通过调用这部分函数实现自己的功能[25]。
WinSock库函数都包含在WinSock.dll这个动态链接库中,这个动态链接库是连接网络应用程序与TCP/IP协议的中间桥梁。
服务器端
Socket与客户机端Socket是如何交互的呢?目前最常用的方式是:服务器程序在某个IP地址的某个端口监视对服务的请求,时刻等待客户机对其提出连接请求,并对请求做出反应。常见的Socket编程主要调用的函数及过程如图4.10所示。

图4.10 Socket的交互编程模型
在使用WinSock API前,必须加载Winsock.dll的相应版本。这是强制性的,否则当调用函数时会返回错误。
应用程序在进行网络通信之前必须建立Socket,若需要应付多个通信进程的要求,就必须在每个进程中建立独立的Socket,这里所说的Socket是Winsock中定义的数据类型,可以将其类比成一个文件句柄,它用于标志系统中每一个Socket连接。在Delphi中定义如下:
type Tsocket=u_int;
function socket(af, Struct, protocol: integer):Tsocket; stdcall:
其中af 协议族标志,Internet协议族的标志是P1NET, Struct是协议类型标志,表明协议是面向连接的字节流类型(SOC1STREAM)还是面向无连接数据类型(SOC1DGRAM), protocol是指Socket采用的协议类型。关于套接字的协议类型分为以下三种:字节流套接字(SOCK_STREAM)、数据报套接字(SOCK_DGRAM)、原始数据报套接字(SOCK_RAW)。字节流型套接字是最常用的套接字类型,TCP/IP协议族中的TCP协议使用此类接口,它提供面向连接的、带有校验机制的网络信息包的传输;数据报套接字提供无连接的服务,以独立的信包进行网络传输,信包的最大长度为32kB,传输不保证顺序性、可靠性和无重复性,通常用于单个报文传输或可靠性不重要的场合,TCP/IP协议族中的UDP协议使用此类接口; 原始数据报套接字提供网络下层通信协议(如IP协议)的直接访问,它一般不是提供给普通用户的,而是用于开发新的协议或提取协议较隐蔽的功能。
应用程序在调用了Socket函数之后,还应该配置该TSocket相关的描述表,里面包括的信息有双方主机使用的端口号、双方的IP地址以及数据传送协议等,这就是绑定的过程。通常在本地Socket的创建过程中,本地信息就已经保存在描述表中了,程序也可以通过bind()函数配置。函数bind()指定了该TSocket的本机地址或端口。Server端的程序必须执行bind()函数。
使用socket()和bind()函数创建并且配置了Socket以后,应用程序就可以开始调用相应的WinSock API函数建立Socket连接。客户机与服务器程序在这方面是有区别的,他们分别执行不同的函数用于连接。服务器端的listen()函数用于等待客户机的连接请求。客户机端的connect()函数向服务器端发出建立连接的申请,使用的参数中包括了服务器地址等信息,该函数并负责将客户机端的信息发送给服务器。服务器端的
accept()函数接收客户机的请求,并向客户机发送应答信息。函数send()和recv()可以运行于服务器端也可以运行于客户机端,它们分别是在面向连接的情况下发送和接收数据。函数sendto()和recvfrom()分别与
send()和recv()类似,不过它们可以用于无连接的情况。
在应用程序完成网络通信以后,应该调用WinSock API的库函数将其关闭,通知WinSock网络通信已经结束,以释放资源。
在网络发生错误时,应用程序可以调用WSAGetLastError()来获得WinSock错误码,并可以调用WSASetLastError()重置当前进程的网络错误。常见的错误码有10060(连接超时)、10061(连接被拒绝)、11001(找不到主机)等。
4.2.2 Socket通信设计
在该车辆监控系统的监控计算机上运行的应用程序都是用Delphi编写的。Delphi自带Socket的控件将
WinSock API库函数进行封装,使Socket编程工作大大简化。
每个监控小区的监控计算机作为Internet上的客户机,ClientSocket控件是其Internet通信的客户端程序核心。Internet上设置一台服务器(可以选取一台监控计算机来兼用),ServerSocket控件是服务器端的程序的核心。为了表述方便,将客户端程序中的ClientSocket 控件命名为Client,将服务器端程序中ServerSocket控件命名为Server。
客户机端程序运行后,需要与服务器建立连接。

当客户机接收到从串口接收到数据后要对其进行处理、判断,如果需要将某车辆信息发送至服务器时,则发送。


网络的服务器需要有效地处理多个客户的请求,服务器端程序一般由一个端口用于监听客户端的连接请求。在有客户端连接上之后,网络服务程序就需要新建立一个进程来处理该连接,同时原来的监听进程仍然保持激活状态,准备接收新的连接请求。ServerSocket控件的内部实现了这些过程。当有连接请求时,
ServerSocket控件会触发一个事件来通知主程序,这样主程序就可以通过事件传递的参数获得当前连接的属性、状态等信息。通过对这些信息的纪录,主程序可以掌握当前本服务程序的工作状况,也可以对内部的单个连接进行特殊处理。
当服务器端程序运行时,便启动ServerSocket,开始侦听在某一个端口上进行监听。该程序中将ServerSocket的工作方式设置为非阻塞方式。

当有客户连接到该服务器时,ServerSocket控件OnClientConnect事件会做出反应,此时应该记录客户机信息(如主机IP地址、)。
当 ServerSocket接收到来自客户端的程序时,其OnClientRead事件被触发,接收客户端发送的信息,负责转发给某一个客户端。

当有客户端程序退出Internet通信时,要及时更新数据库内容,删除以前记录的Socket 对象的句柄号。因此需要响应OnClientDisconnect事件。

……; //删除句柄号为HandleNum的Socket对象的句柄号
end;
以上介绍的只是利用WinSock进行数据传送的基本操作,除此之外程序中还有很多细节需要处理,例如程序运行过程中不可避免的会出现网络故障,因此必须由有错误处理等程序。


