APP下载

AGPS服务器子系统的设计与实现*

2012-08-29俞杭华

全球定位系统 2012年6期
关键词:接收机客户端终端

俞杭华,张 皓

(1.上海卫星工程研究所,上海200240;2.上海市东凌公司,上海200082)

0 引 言

网络辅助全球定位系统(AGPS)辅助定位信息主要包括卫星的伪距信息和多普勒频偏等,利用这些信息可以大大缩短GPS终端的首次定位时间、提高灵敏度,解决目前GPS定位存在的室内定位困难和首次定位时间过长问题。

目前,国内移动通信市场日益发展,特别是随着3G技术的商用,中国移动和中国联通制订和推出了各自的AGPS方案[1]。设计实现了一个有基本功能的AGPS服务器子系统,用于AGPS终端的开发研制。

1 AGPS服务器的需求分析

1.1 功能概述

网络辅助全球定位系统(AGPS)概念是在1981年被提出来的,AGPS服务器子系统通过参考接收机实时获取GPS卫星信息,处理并生成辅助定位信息,通过无线通信网络或互联网,将辅助定位信息发送给GPS用户终端。AGPS定位过程如图1所示[2-4]。

图1 AGPS工作原理

AGPS服务器是系统实现辅助信息处理的平台,根据AGPS定位原理,服务器子系统需要实现三大功能:卫星信息实时获取;信息存储、管理;辅助数据有线及无线传输。

设计的服务器子系统通过参考接收机实时获取卫星信息,借助GSM/GPRS等无线网络,采用无线通信的方式将有用数据发送到移动终端,从而辅助终端实现室内定位或快速定位。

1.2 外部接口

AGPS服务器与终端芯片之间的组网方式有三种:1)服务器与终端芯片通过RS232直连,如图2(a)所示;2)服务器与终端通过以太网互联,如图2(b)所示;3)服务器连接至以太网,终端通过通信模块连接至GSM/GPRS无线网络,如图2(c)所示[5-6]。对服务器的软件实现而言,在组网方式2、3下实现无线通信的方法是相同的。

图2 组网方式

根据上述组网方式,辅助定位服务器子系统提供三类接口:与参考接收机通信的串行接口;与终端通信的串行接口(内部调试阶段);链入通信网络并与GPRS模块进行无线通信的RJ45接口。如图3所示。表1示出了三类接口的基本信息。

图3 AGPS服务器接口

表1 AGPS服务器接口信息

1.3 数据格式

1.3.1 与参考接收机通信的数据格式

参考接收机采用THALES公司的DG16,参考其datasheet,从中挑选出所需的数据帧,分别为XYZ、SNV、PBN、MCM。通过串行端口向其发送相关命令,参考接收机会通过串口返回相应信息,具体的命令格式和返回主要信息如表2所示[7]。

表2 与参考接收机通信数据

1.3.2 与接收机终端芯片间通信的数据格式

接收机终端采用ARM9芯片。参考3GPP及OMA制定的相关协议[8],采取面向连接的socket通讯方式用于服务器子系统与终端间的通信。接收机终端与中心系统的通信协议是不定长格式,所有的信息都采用十六进制数表示,编码采用二进制编码方式。

服务器子系统与终端芯片间的通信信号包括通讯帧、授时帧和辅助信息帧等。以服务器子系统向终端发送的辅助信息帧为例给出数据格式的设计,如表3所示。

表3 辅助信息帧格式

表4 辅助信息数据帧信息内容

1.4 服务器模块

根据服务器的功能需求,将服务器分为三个模块开展设计,分别是卫星信息实时获取模块,信息存储与管理模块和辅助信息线传输模块。

卫星信息实时获取模块以某固定时间间隔(10 min)从DG16获取星历数据,并通过提高参考接收机数据更新速率(10Hz)和串行通信波特率(115 200b/s)等参数,缩短获取星历信息的时间至最短(约1.3s)。与此同时,以更短时间间隔(1s)循环获取除星历以外的其它卫星信息。

信息存储与管理模块通过建立小型数据库保存约半个小时左右的星历数据以及其它卫星信息数据。确保每次有终端请求时均有较及时信息。系统记录每一次服务器与客户端通信的时间、传输的数据内容,并以文件形式将这些信息保存在本地磁盘。

辅助信息无限传输模块以“请求—应答”方式无线传输辅助信息至终端,遵循TCP/IP协议。可模拟演示广播方式的点到多点通信,即:服务器每秒向已建立连接的多个终端发送辅助信息。辅助信息长度169*N+38Byte(N为卫星数),数据传输速率约21.4Kb/s,网络时延小于3s.

2 辅助定位服务器方案设计

服务器初始方案采用收到辅助请求→获取辅助数据→数据重组→发送辅助信息的思路,就是收到终端请求之后向参考接收机发命令拿数据,再将经过重组后的数据发送给请求的终端。具体实现流程如图4所示。

试验验证发现:初始方案中对卫星信息的采集过程有着严重缺陷,当连续收到辅助请求时,会产生因采集混乱而导致的严重死机现象,并且致使不能连接多个客户端。

图4 初始方案工作流程

针对初始方案中出现的问题,发现需要改变取数据的流程才能解决,因此,重新设计了整体流程。辅助定位服务器启动以后,与参考接收机DG16通过串口建立连接,向参考接收机循环发送SNV,XYZ,PBN,MCM请求,从而获得最新的辅助数据。服务器接收到数据之后不断进行辅助数据的提取并组合成最新的辅助信息,以备接收机请求。当收到某客户端接收机请求之后,服务器提取最新的辅助信息发送给客户端接收机。如果有多个客户端接入并请求,服务器则顺序依次处理收到的请求。详细工作流程如图5所示。

图5 改进方案工作流程

试验证明改进方案是可行的,并且完全解决了死机现象和不能连接多个客户端的问题。

3 改进方案的软件实现

3.1 软件功能结构

辅助定位服务器软件的功能结构如图6所示,分为辅助数据获取,辅助信息组成,辅助请求响应三个子模块。

图6 AGPS服务器软件的功能结构

3.2 socket套接字

本软件系统实现IP通信的关键是建立Socket,为保证辅助信息可靠传输,在“请求/应答”方式下采用基于TCP协议的流式套接字技术进行通信。图7和图8分别示出了流式Socket工作流程及建立步骤。

3.3 服务器子模块的设计与实现

图9示出了服务器子模块的的详细划分。

3.3.1 辅助数据获取模块

本模块功能为向参考接收机发送命令,从而获取参考接收机的各个辅助数据帧。设计过程中,针对主要的五个重点分别采用了以下方法

1)针对串口通讯,采用了一个串口控件(控件名:serialPort1)实现。

2)针对命令的定时顺序循环发送,采用了两个定时器控件(控件名:timer1,timer2)实现,其中timer1间隔为60s,触发发送SNV命令的方法;timer2间隔为1s,按顺序触发发送XYZ,PBN,MCM命令的方法。

3)针对数据的接收,采用了建立线程的方法(线程名:threadReceive),在开串口之后立即启动该线程,实现数据收发。

4)针对数据截取,用了两次判断。第一次判断读入数据尾是否为“\r\n”(对 SNV,XYZ,PBN),或是否其首字符为“M”且长度符合MACM数据帧定义中的长度(对MCM)。当初次判断通过时进行第二次判断。第二次判断读入数据的头,是$PASHQ,SNV;$PASHQ,XYZ;$PASHQ,PBN时则其本次读入的数据分别为SNV,XYZ,PBN,为MACM时,则本次读入的数据为 MCM.再进行数据长度的判断从而截取有用数据,截取成功后分别放入相应的4个列表:listXYZ,listSNV,listPBN,listMCM。

5)针对线程的冲突,由于线程的冲突会造成数据错误,因此一定要对线程进行处理,此处采用的方法是使用互斥体Mutex类。在读取数据之后,数据处理之前,先判断是否有已被创建的Mutex,如果没有,则进行数据处理,否则等待该Mutex被释放。具体的实现流程如图10所示。

图10 辅助数据获取模块详细流程图

3.3.2 辅助信息组成模块

本部分实现发送数据帧的整合。数据经辅助数据获取模块处理之后形成了4个列表,本模块的任务就是将4个列表中有用的数据重新组合成一个可以发送给终端进行定位的数据帧。表5示出了数据重组的方式。

表5 数据重组信息列表

本部分的实现是逐一将数据放入数组的过程,采用新建一个类来实现。流程如图11所示。

图11 辅助数据组成模块详细流程图

3.3.3 辅助请求响应模块

本部分实现对终端发送的辅助请求的响应。之前的两个模块完成了数据的获得和组合,但作为辅助定位服务器,最关键的任务是将辅助信息顺利转交给需要辅助的终端。

本部分实现主要包含以下几个环节

1)使用TcpListener类完成对客户端的侦听,并采用创建侦听线程threadListen使能够完成持续侦听。

2)使用Socket类来创建与客户端的连接,从而可以不必区分有线连接或无线连接。

3)使用了互斥体Mutex来防止与接收线程threadReceive的冲突。

4)利用创建的方法log_Write进行收发时间和数据的文件存档,并以时间和IP地址及端口号作为文件名。

5)由于多个客户端存在的可能性以及单个客户端持续请求辅助的可能性,采用了发送线程threadSend,从而保证了发送的不间断。

图12示出了该模块的详细流程。

图12 辅助请求响应模块详细流程图

4 测试方案及结果

服务器软件设计完成之后,进行了初步调试,稳定性测试及可靠性测试。测试主要工具是自主编写的测试程序test1.exe.测试连接图如图13所示。

图13 服务器测试连接示意图

4.1 初步调试

初步调试主要解决初始方案中的两个问题:1)长时间工作测试的死机现象;2)不能实现多个客户端数据的共同收发。

针对死机现象主要采取连接单个客户端,进行长时间工作,测试是否有死机现象出现。使用测试程序test1.exe进行测试,发送辅助数据间隔设置为6s,测试200次,没有死机现象出现。

针对连接多个客户端问题采用连接两个客户端,测试是否可以实现两个客户端数据的共同收发,测试数据是否正确。在两台机器上安装test1.exe测试软件,同时连接服务器并以6s的时间间隔发送辅助请求。结果表明服务器可以正常接收辅助请求,并可以按照次序进行辅助信息的发送。

4.2 稳定性测试

作为一个提供数据的中心,辅助定位服务器的稳定性相当重要,因此,设计编写了一个稳定性测试软件,从而可以在完善该软件的同时进行服务器的稳定性测试。主要测试项目有:

1)多个客户端:在多个客户端安装稳定性测试软件,进行长时间测试,验证服务器是否可以正常工作,是否可以完整发送数据。

2)多种发送间隔:测试软件的默认值为6s,可以设置多种发送间隔,进行长时间测试,验证服务器是否可以正常工作,是否可以完整发送数据。

测试结果表明:分别给服务器连接3个、4个至7个客户端,服务器可以长时间正常工作;分别采用4s~10s的多个发送间隔,每种时间间隔测试500次左右,未出现异常。

4.3 可靠性测试

由于精确定位的需要,服务器需提供精确的定位辅助信息,才能保证终端的正确定位。因此服务器的可靠性十分重要的。使用接收机进行测试,通过比对定位结果进行可靠性测试。测试结果表明服务器发送的辅助数据完整且数据正确。

5 结 论

从AGPS的定位原理和相关协议出发,结合课题实际,设计实现了一个用于AGPS终端开发的辅助定位服务器,同时还设计了测试软件对服务器的功能、稳定性和可靠性进行了测试验证,表明了该辅助定位服务器系统工作稳定、可靠,数据格式的确定以及软件方案的实现可以顺利响应终端接收机的定位辅助请求。完成一个可以真正投入商业应用的AGPS服务器还需要更进一步研究。

[1]中国移动通信集团公司研究院.AGPS终端测试规范[R].2006.

[2]张守信.GPS技术与应用[M].北京:国防工业出版社,2004.

[3]刘基余.GPS卫星导航定位原理与方法[M].北京:科学出版社,2006.

[4]张 昊,廖建新,张彦翔,等.安全用户平面AGPS移动定位平台的设计与实现[M].北京:现代电信科技,2006.

[5]中国移动通信有限公司.高精度位置业务(AGPS)试点方案[R].2006.

[6]张 昊.移动定位平台和位置管理关键技术研究[D].北京:北京邮电大学,2006.

[7]John,周 靖.Visual C#2005从入门到精通[M].北京:清华大学出版社,2006.

[8]MICKEY W.Visual C# NET技术内幕[M].冉小旻,罗 邓,郭 炎,译.修订版.北京:清华大学出版社,2007.

猜你喜欢

接收机客户端终端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
GNSS接收机FLASHADC中比较器的设计
复杂线束在双BCI耦合下的终端响应机理
X美术馆首届三年展:“终端〉_How Do We Begin?”
如何看待传统媒体新闻客户端的“断舍离”?
一种宽带低功耗四合一接收机设计
基于声波检测的地下防盗终端
一种面向ADS-B的RNSS/RDSS双模接收机设计
“吃人不吐骨头”的终端为王