ADSB综合课程设计报告.docx
《ADSB综合课程设计报告.docx》由会员分享,可在线阅读,更多相关《ADSB综合课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
ADSB综合课程设计报告
沈阳航空航天大学
综合课程设计
ADSB报文数据得解析研究
班级
学号
学生姓名
指导教师
课程设计任务书
课程设计得内容及要求:
1、设计说明
对接收到得ADSB数据进行解析,就就是要对航空报文有较多了解,根据编码协议对报文进行解码,从里面提取出有用信息,能让人直观理解报文信息
2、设计要求
根据链路协议及编码协议,对报文解析,要实现:
1、能够解析出速度,高度,经纬度等重要信息;
2、界面尽量友好,误差要小;
3、数据能够实时更新
3、实验要求
用VC++实现编程与解析
四、推荐参考资料
五、按照要求撰写课程设计报告
成绩评定表
评语、建议或需要说明得问题:
指导教师签字:
日期:
成绩
一、概述
空中交通管理得根本目得就是使航线上得飞机安全、有效与有计划地在空域中飞行,管制员需要对管制空域内飞机得飞行动态进行实时监视。
传统得雷达监视手段采用询问/应答方式对目标探测。
从长远来瞧,雷达系统自身具有很多局限性:
雷达波束得直线传播形成了大量雷达盲区;无法覆盖海洋与荒漠等地区;雷达旋转周期限制了数据更新率得提高,从而限制了监视精度得提高;无法获得飞机得计划航路、速度等态势数据,限制了跟踪精度得提高与短期冲突告警STCA(ShortTermConflictAlert)得能力。
因此,需要发展新得监视手段。
广播式自动相关监视ADSB(AutomaticDependentSurveillanceBroadcast)即航空器自动广播由机载星基导航与定位系统生成得精确定位信息,地面设备与其她航空器通过航空数据链接收此信息,卫星系统、飞机以及地基系统通过高速数据链进行空天地一体化协同监视。
ADSB得精度与数据更新率比雷达高,除位置信息外,ADSB还提供其她信息,包括速度与飞行意向等,尤其适合于山区、荒漠、边远机场等不宜建设雷达得区域,也适合于高密度机场得监视,就是未来监视系统得重要组成部分与发展方向。
目前,ICAO(InternationalCivilAviationOrganization,国际民用航空组织)高度重视ADS‐B得发展与应用,并制订了相关得技术标准与发展规划,并一直在努力倡导在全球统一部署相同标准ADS‐B体系,实现全球范围内得飞行监控与数据共享。
我国得民用航空业目前正处于成长期,飞机得数量、飞行得规模与空域得范围都在不断扩大,需要引进并吸收ADS‐B技术,以丰富与改进我们自己得空中交通管制系统与体系,并实现与国际最新技术得接轨。
在ADS‐B技术得吸收与应用中,需要不断地研究其基本原理,掌握其技术核心,促进实现国际先进技术与中国本地情况得不断融合。
图1ADSB技术在航空中得应用示意图
2、ADSB系统工作原理
ADSBOUT系统中,主要得功能由S模式应答机实现,在其正常工作期间,周期性得将DF17格式得扩展断续振荡信号广播出去,为飞机与地面站提供相关信息包括飞机得经纬度信息、高度信息、航行速度信息等。
在系统正常工作时,应答机接收来自GPS接收机得导航消息,通过对数据得分析,提取有有用得信息部分组合成为使用于S模式传输得报文格式,然后以特定得速率通过应答机天线发送出去,当地面站与其她飞机接收到这些信息后,通过对信息得解码、检错、纠错、报文生成过程获取这架飞机得飞行参数,高度速度等有效得信息,这些信息将非常有效得帮助完成空中管理以及飞机间得相关监视过程。
与应答机应答二次雷达得询问一样,DF17格式得扩展断续振荡信号用一个
1090MHz得载波频率进行调制并以1Mbps数据速率广播脉冲位置,扩展断续振荡脉冲得长度为112比特。
ADSB消息结构
Bit
15
68
932
3388
89112
DF=17
DF=10001
CA
AA(ICAO)
ME字段
PI
图2ADSB消息结构
在接收得数据部分中,以DF17格式得扩展断续振荡信号为例,共有5个主要得飞行任务字段。
其中,第一个字段为DF位格式字段,长度为5比特,主要作用在于识别扩展断续振荡得内容,此字段设置为固定值17(十进制数),本项目工作得研究也主要针对此类信号。
接下来则就是3比特得应答机能力(CA)字段,该字段描述了飞机得S模式数据链通信能力,如就是否装载了ADS系统等。
广播地址(AA)字段就是消息中最重要得一个字段,该字段唯一得识别了每个飞机独一无二得24比特得S模式地址,用来表明飞机得身份。
接下来就是机载设备采集整合得信息ME字段,56比特得扩展型断续振荡报文就是主要得ADSB消息,该消息主要包括飞机得参数信息如高度、速度、经度、纬度等信息,它为飞机参数如GPS位置与速度提供报文有效信息。
最后,24比特得奇偶性(PI)字段,该字段为前88位数据信息得CRC校验余数,用于实现CRC检错纠错。
三相关技术
1.1090ES数据链
1090ES(ExtendedSquitter,扩展电文)得命名中包含两层含义。
1090指得就是该数据链得下行传输频带就是1090MHz。
ES指得就是对原有ADSB报文长度得扩展。
原有得报文长度一般为56112比特。
1090ES就是由ICAO推荐得、唯一一个可以在全球范围内使用得数据链技术,得到了美国、欧洲、亚洲等大部分国家得承认与应用。
在第11次国际航空会议上,已经将1090ES作为ADSB主要数据链技术,并制定了相关得协议与标准。
1090ES就是一种S模式得数据链,支持一对一得询问应答机制。
S就是Selective得意思,指得就是可以对航空器进行选择通信。
1090ES采用PPM(脉冲位置调制)编码。
2、ADSBIN设备报文
系统采用得ADSBIN设备,在收到ADSB报文后,对ADSB报文进行了二次封装,增加了报文头,将ADSB报文作为它得载荷。
封装后得报文被ADSBIN设备通过网络转发给其它设备。
除此之外,ADSBIN设备还发送一些状报文,描述设备时间与位置等信息。
ADSBIN设备可以发出得报文一共有三类:
1)MessageReport
2)TimeReport
3)PositionReport
我们用得接收设备就是SBS3接收机,主要分析MessageReport,即DF17数据,所以其她两种Report不多做介绍。
表1Messagereport得格式
字段
长度(字节)
含义
STX
1
报文头标识,其固定值为0x20
LEN
1
报文长度,不包括报文头标识与结尾标识
type
1
报文类型,用于区分三种类型
time
6
报文到达得时间
message
14
报文内容
flags
1
报文标识
amp
1
信号强度
crc
2
CRC校验值,从LEN到amp
ETX
1
报文结尾标识
MessageReport得报文长度共28个字节。
一些关键字段得说明如下:
字段,取值范围就是04,03代表MessageReport或TimeReport,两者得区分可以通过字段得内容来辨别。
03得不同之处在于
0就是本地时间,1就是NOTCOUPLED类型得UTC时间,2就是COASTING类型得UTC时间,3就是COUPLED类型得UTC时间。
4代表PositionReport。
字段就是一个按位解析得字段,第0位指示了接收得天线,其值为0表示从A天线接收;值为1表示从B天线接收。
第3位指示了字段得单位与范围,其值为0表示信号强度得单位就是ADC得LSB,范围就是0到255;值为1表示信号强度得单位就是dBm,范围就是127到127。
其它位目前都没有使用,缺省设置为0。
字段得计算采用了常用得CRC16,其生成多项式就是X16+X15+X2+1,对应得二进制位列为11000000000000101,因为其MSB必然为1,可以省略MSB,简写为10101。
3、ADSB基本报文
ADSB报文由业务数据与附加数据两部分组成。
ADSB基本报文指得就是从宏观得角度,将业务数据作为一个整体而不考虑其细节,所展现出来得ADSB报文。
ADSB基本报文对ADSB业务数据进行了封装,作为ADSB基本报文得一个独立字段存在。
在ADSB得业务数据中,包含了不同类型得业务数据,它们具有不同得结构。
本节将这些不同格式得业务数据称之为ADSB业务报文。
ADSB报文得长度共112位,就是按位进行格式设计得结构。
下表就是1090ES得报文结构定义,ADSB得报文基本结构包含在其中
表21090ES报文结构
Bits15
Bits68
Bits932
Bits3388
Bits89112
DF=17
CA
AA
ICAO地址
ADSB
ME字段
PI
DF=18
CF=0
AA
ICAO地址
ADSB
ME字段
PI
CF=1
AA
非ICAO地址
ADSB
ME字段
PI
CF=2to3
AA
TISBME字段
PI
CF=4
TISB与ADSB管理报文
PI
CF=5
AA
TISBME字段
PI
四.信息处理
ADSB数据得信息处理包括数据得接收与解析两大部分,其中包括循环冗余校验,LSB与MSB,数据得打包与解包,多线程操作,CPR解码算法等技术,由于侧重点不同,这里主要讲一下数据得发送与接收及解析算法。
1.数据得发送与接收
ADSB报文从发送从网络上接收最初始得数据,到转换成ME报文,其过程如下图所示。
图3收发,解析数据示意图
数据得发送与接收遵循TCP通信协议,按照协议编码就行,这里不再赘述。
2.数据得解析
数据得解析就是重中之重,这就是决定您能否得到想要得结果得至关重要得一步,也就是本次课设所重点研究得方面。
数据得编码与解析就是按照协议进行得,对飞机得身份,编号,高度,速度,经纬度等信息进行编码,其中除了经纬度,其她信息大多按照进制数进行编码,不需要太复杂得算法,因此,这里只讲经纬度得算法解析。
CPR解码分为全球解码与本地解码两种情况。
如果同时接收到奇编码与偶编码两个消息,那么进行全球解码。
如果只接收到一个奇编码或偶编码消息,那么进行本地解码。
不论就是全球解码还就是本地解码,又分为空中位置与地面位置两类情况
全球明确得空中位置与地面位置得解码步骤为:
1)计算纬度Zone得尺寸Dlati
Dlati=360°/(4NLi)空中位置i=0(偶编码)
90°/(4NLi)地面位置i=0(偶编码)
2)计算纬度索引j
j=floor((59×YZ060×YZ1)/217+1/2)
当j<0时,j=偶纬度Zone得编号60,j=奇纬度Zone得编号59;当j≥0时,j=偶纬度Zone得编号,j=奇纬度Zone得编号。
3)计算偶形式得纬度Rlat0
与奇形式得纬度Rlat1
Rlati=Dlati×MOD(j,60i)+YZi/217
若求出得纬度绝对值大于90°,则应减去360°。
因为纬度得取值范围为90°~+90°。
4)计算纬度数NL(Rlat0)与NL(Rlat1)。
判断NL(Rlat0)就是否与NL(Rlat1)相等。
若相等,则计算经度Zone得尺寸Dloni。
否则,继续等待下一个位置消息。
5)计算经度Zone得尺寸Dloni。
根据刚接收到得空中位置消息就是偶编码(i=0)还就是奇编码(i=1),按式(12)计算
Dloni=360°/ni空中位置i=0(偶编码)
90°/ni地面位置i=1(奇编码)
式中ni=max[NL(Rlati)i,1]。
6)采用纬度数NL,计算经度索引m
m=
floor[XZ0×(NL(Rlati)1)XZ1×NL(Rlati)/217+12]
当m<0时,m=偶纬度Zone得编号n0,m=奇纬度Zone得编号n1;当m≥0时,m=偶纬度Zone得编号,m=奇纬度Zone得编号。
7)计算全球得经度Rlon0与Rlon1。
根据接收到得ADSB位置消息就是偶编码(i=0)还就是奇编码(i=1),按式计算Rloni=Dloni×MOD(m,ni)+XZi/2
若求出得经度绝对值大于180°,则应减去360°。
因为经度得取值范围为180°~+180°。
如何实现飞机得经度与纬度消息得CPR格式得编码与解码,就是1090ESADSB系统中有效提高ADSB位置消息传输效率得关键。
本文针对全球位置与本地位置两种情况,阐明了飞机在空中位置与地面位置时经度与纬度得编解码算法得基本原理与详细得实现步骤,有助于从事ADSB技术得科技人员掌握CPR编解码得原理与进行相关得软件开发。
图4CPR消息解码流程图
图4解析数据界面
四、课程设计体会
不知不觉这次课程已经结束,这个学期接触了它我了解了很多。
从刚开始得一无所知到逐渐熟悉,这个过程就是令人充实得。
每做一个实验,我感觉我收获不少。
做实验就是让我们对平时得理论知识与实际操作相结合,在理论与实验中更进一步去掌握自己学到得知识比加以掌握与提高,学会将知识应用与实际得方法,提高分析与解决问题得能力。
在实验过程中,我感到自己得实力有限。
有些东西没见过,不就是在我得能力范围内。
经过我自己慢慢得学习与探讨我终于有了些眉目。
通过这次得课程设计,我充分认识到理论与实际相结合得重要性,理论知识再丰富,没有实际得操作经验,自身得能力就是不会有所提高得。
我认为,在学习中要学以致用,不能过分得盲目得学习理论知识,我们必须要将理论与实践结合。
应该侧重于基本方法与使用实例。
从软件得应用环境与特点来瞧,培养一定得应用系统得分析能力与初步设计能力而为以后得学习以及设计才就是最终目得。
社会得竞争就是激烈得,我们应该把握大学学习得时间,充分利用好自己得价值,充实自己,完善自我,全面发展,做一名优秀得大学生,努力做好自己得事,让自己成为有用之才。
卫星导航行业就是一个朝阳行业,我国得北斗导航目前正处于全球组网得快速发展时期,我这次得课设乃至以后得毕设正就是这方面得研究,我相信经过课设与毕设,我得水平一定会再上一个台阶,为今后得工作与生活提供不小得助力。
参考文献:
[1]顾春平、空中交通管制新技术监视新技术简介[J]、现代雷达,2010,32(9):
17、
[2]1090兆赫扩展电文广播式自动相关监视地面站(接收)设备测试要
求[S]、民航局空管局技术中心(0207版),2011、
[3]吕小平、ADS—B应用中UAT技术介绍[J],空中交通管理,2007,(8),1921
[4]丁立平、基于VDL4技术得机场场面车辆管理系统研究[J]、指挥信息系统与技术,2010,(6),5560
[5]邱伟杰、ADSB广播式自动相关监视系统多数据链路融合方案探索[J]、
[6]肖飞;余子寒;隋天宇;刘文、LTE中CRC算法得研究与实现[J]、电子测量技术
、2014,(7),3639
[7]李耀、基于模式S得ADSB系统研究[D]、武汉:
电子科技大学硕士论文,2008
[8]李自俊、ADSB广播式自动关监视原理及未来得发展与应用[J].中国民航飞行学院
学报,2008(5):
1114、
[9]苏英振、积极推进空中交通管制一体化建设[J].国防,2008(6):
5960
[10]中国民航科学技术研究指南(20052010)[M]、中国民航总局,2005、
[11]ICAO、parativeAnalysisofADSBdataLinks[R]、ANConf/11IP/12、Montreal,
CANADA:
ICAO,2003、
CPR部分算法
#include"stdio、h"
#include"stdlib、h"
#include
#include"cpr、h"
#defineM_PI3、149323846
#defineLATZ15
#defineMAX(x,y)(((x)>(y))?
(x):
(y))
intnz(inttype){
return4*LATZtype;
}
floatnl(floatlat){
if(abs(lat)>=87、0)
return1、0;
returnfloor(
(2、0*M_PI)*
pow(acos(1、0(1、0cos(M_PI/(2、0*LATZ)))/
pow(cos((M_PI/180、0)*abs(lat)),2)),1)
);
}
floatdlat(inttype,intsurface){
floatres=surface?
90、0:
360、0;
intnz_val=nz(type);
if(nz_val)
returnres/nz_val;
else
returnres;
}
floatdlng(floatdec_lat,inttype,intsurface){
floatres=surface?
90、0:
360、0;
floatnl_val=MAX(nl(dec_lat)type,1);
returnres/nl_val;
}
floatdecode_lat(intenc_lat,inttype,intsurface,floatrecv_lat){
floatt1=dlat(type,surface);
floatt2=((float)enc_lat)/pow(2,17);
floatj=floor(recv_lat/t1)+
floor(0、5+(fmod(recv_lat,t1)/t1)t2);
returnt1*(j+t2);
}
floatdecode_lng(floatdec_lat,intenc_lon,inttype,intsurface,floatrecv_lng){
floatt1=dlng(dec_lat,type,surface);
floatt2=((float)enc_lon)/pow(2,17);
floatm=floor(recv_lng/t1)+
floor(0、5+(fmod(recv_lng,t1)/t1)t2);
returnt1*(m+t2);
}
structdec_location*cpr_resolve_local(structdec_location*recv,
structenc_location*loc,inttype,intsurface){
floatdec_lat=decode_lat(loc>lat,type,surface,recv>lat);
floatdec_lng=decode_lng(dec_lat,loc>lng,type,surface,recv>lng);
structdec_location*dec_loc=(dec_location*)malloc(sizeof(*dec_loc));
dec_loc>lat=dec_lat;
dec_loc>lng=dec_lng;
returndec_loc;
}
structdec_location*cpr_resolve_global(structenc_location*even,
structenc_location*odd,structdec_location*recv,intrecent_type,intsurface){
floatdlat_even=dlat(0,surface);
floatdlat_odd=dlat(1,surface);
floateven_lat=(float)even>lat;
floateven_lng=(float)even>lng;
floatodd_lat=(float)odd>lat;
floatodd_lng=(float)odd>lng;
/*latitudeindex*/
floatj=floor(((nz
(1)*even_latnz(0)*odd_lat)/
pow(2,17))+0、5);
floatrlat_even=dlat_even*((fmod(j,nz(0)))+even_lat/pow(2,17));
floatrlat_odd=dlat_odd*((fmod(j,nz
(1)))+odd_lat/pow(2,17));
if(rlat_even>270、0)
rlat_even=360、0;
if(rlat_odd>270、0)
rlat_odd=360、0;
if(nl(rlat_even)!
=nl(rlat_odd))
return0;
floatrlat=recent_type?
rlat_odd:
rlat_even;
if(surface&&recv>lat<0)
rlat=90、0;
floatdl=dlng(rlat,recent_type,surface);
floatnl_rlat=nl(rlat);
/*longitudeindex*/
floatm=floor((((nl_rlat1)*even_lngnl_rlat*odd_lng)/
pow(2,17))+0、5);
printf("%f%f\n",dl,nl_rlat);
floatenc_lon=recent_type?
odd_lng:
eve