ADS-B消息的算法及仿真

这篇具有很好参考价值的文章主要介绍了ADS-B消息的算法及仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为了进行ADS-B报文防欺骗技术研究,首先需要深入了解报文的编译码方法:译码的实现可以深度挖掘报文中的特征参数,进行防欺骗研究;编码的实现可以为后续仿真实验产生符合要求的报文打下基础。

空中位置消息ME字段的编译算法与仿真

ADS-B报文格式

ADS-B消息的算法及仿真
各字段含义

bits No. bits 缩写 含义
1-5 5 DF 下行链路格式
5-8 3 CA 应答器能力
9-32 24 ICAO ICAO 飞机地址
33-88 56 ME 消息等
89-112 24 PI 奇偶校验/询问器标识

其中空中位置类 的ME字段中各字段含义

bits 含义 bits 含义
1-5 Type 21 时间指示
6-7 监视状态 22 CPR编码格式
8 是否单天线 23-39 纬度
9-20 高度 40-56 经度

报文生成的算法

对于空中位置信息的ME字段,需要编码的信息主要包括了经纬度信息、位置导航不确定类型(NUCp)信息以及高度信息。

  1. 经纬度信息编码
    其中,对于采用了CPR格式编码的位置信息,具体算法流程如下:
    1)确定纬度Zone 的尺寸 D l a t i Dlat_i Dlati
    D l a t i = 36 0 。 4 N Z − i Dlat_i = \frac{360^。}{4 NZ - i} Dlati=4NZi360
    2)将需要发送的纬度值转换为CPR格式的纬度值 Y Z i YZ_i YZi
    Y Z i = f l o o r [ 2 N b M O D ( l a t , D l a t i ) D l a t i + 1 2 ] YZ_i =floor[2^{Nb}\frac{MOD(lat,Dlat_i)}{Dlat_i} + \frac{1}{2}] YZi=floor[2NbDlatiMOD(lat,Dlati)+21]
    3)使用CPR格式纬度值 Y Z i YZ_i YZi和纬度Zone尺寸 D l a t i Dlat_i Dlati计算得到纬度还原值 R l a t i Rlat_i Rlati
    R l a t i = D l a t i × ( Y Z i 2 N b + f l o o r ( l a t D l a t i ) ) Rlat_i =Dlat_i \times (\frac{YZ_i}{2^{Nb}}+floor(\frac{lat}{Dlat_i})) Rlati=Dlati×(2NbYZi+floor(Dlatilat))
    4)通过纬度还原值 R l a t i Rlat_i Rlati计算经度Zone 的数量 N L NL NL
    N L ( R l a t i ) = f l o o r ( 2 π [ a r c c o s ( 1 − 1 − c o s ( 2 π 2 N Z ) c o s 2 ( π 18 0 。 ∣ R l a t i ∣ ) ) ] − 1 ) NL(Rlat_i) = floor(2 \pi [arccos(1-\frac{1-cos(\frac{2 \pi}{2 NZ})}{cos^2(\frac{\pi}{180^。}|Rlat_i|)})]^{-1}) NL(Rlati)=floor(2π[arccos(1cos2(180πRlati)1cos(2NZ2π))]1)
    5)计算东西向经度Zone的尺寸 D l o n i Dlon_i Dloni
    D l o n i = { 36 0 。 N L ( R l a t i ) − i , N L ( R l a t i ) − i > 0 36 0 。 , N L ( R l a t i ) − i = 0 Dlon_i = \begin{equation} \left\{ \begin{array}{lr} \frac{360^。}{NL(Rlat_i)-i}, NL(Rlat_i)-i > 0& \\ 360^。,NL(Rlat_i)-i = 0 \end{array} \right. \end{equation} Dloni={NL(Rlati)i360,NL(Rlati)i>0360,NL(Rlati)i=0
    6)将经纬度转化为CPR经度值 X Z i XZ_i XZi
    X Z i = f l o o r [ 2 N b M O D ( l o n , D l o n i ) D l o n i + 1 2 ] XZ_i =floor[2^{Nb}\frac{MOD(lon,Dlon_i)}{Dlon_i} + \frac{1}{2}] XZi=floor[2NbDloniMOD(lon,Dloni)+21]
    7)将计算得到的CPR经度值 X Z i XZ_i XZi和CPR纬度值 Y Z i YZ_i YZi转为为2进制。填入至ME字段中对应的位置。
    在空中位置信息的编码过程中, N b Nb Nb N Z NZ NZ均为固定值,其中 N b = 17 Nb = 17 Nb=17, N Z = 15 NZ=15 NZ=15
  2. NUCp信息编码
Type NUCp 对应参数 Type NUCp 对应参数
0 0 - 11 7 HPL < 0.1nm或HFOM<0.05nm
9 9 HPL < 7.5m或HFOM<3m 12 6 HPL < 0.05nm或HFOM<0.1nm
10 8 HPL < 25m或HFOM<10m 13 5 HPL < 0.5nm或HFOM<0.25nm
  1. 高度信息编码
    高度信息处于ME字段的9-20比特位,其中,高度单位指示比特Q位于ME字段的第16位,当 Q = 0 Q=0 Q=0,编码单位为100英尺,将高度信息除以100,再转化为2进制,填入对应位置;当 Q = 1 Q=1 Q=1时,编码单位为25英尺,方法类似。

报文生成的仿真

为了进行后续虚假报文排除的仿真实验,仿真报文中所包含的位置信息以及高度信息等需要贴近真实报文,确保虚假报文不能被轻易识别,以达到最大的混淆程度。所以,在报文仿真时,可以利用一条接收到的真实报文,在不改变诸如监视状态、天线状况,甚至飞行高度等信息的前提下,将经纬度、NUCp信息重新写入。由于空中位置信息需要时间才能做到定位,为了处理方便简洁,在仿真实验中,将时间信息直接添加在报文前端。
基于上述描述,利用MATLAB编写程序,并制作报文产生界面。
ADS-B消息的算法及仿真
在编辑框内输入产生报文需要的参数,如下图所示
ADS-B消息的算法及仿真

点击<产生报文>,在MATLAB工作目录下,生成adsbMsgs.txt报文文件。且在界面上显示报文信息,和对应的NUCp值
ADS-B消息的算法及仿真

报文解析的算法

与编码情况类似,对于空中位置信息的ME字段,需要解码的信息包括经纬度信息,NUCp信息以及高度信息。

  1. 经纬度信息解码
    由于经纬度采用的CPR格式编码,所以,需要接收到一组空中位置信息报文,才能进行解码。具体解码算法如下:
    1)提取报文中的经纬度信息,并转化为10进制,分别得到经纬度信息 X Z i XZ_i XZi Y Z i YZ_i YZi,其中 i i i等于0或1分别代表了偶编码和奇编码。
    2)分别计算 i i i取值为0和1时的南北向纬度区域大小 D l a t i Dlat_i Dlati
    D l a t i = 36 0 。 4 N Z − i Dlat_i = \frac{360^。}{4 NZ - i} Dlati=4NZi360
    3)计算纬度索引符号 J J J
    J = f l o o r ( 59 Y Z 0 − 60 Y Z 1 2 N b + 1 2 ) J = floor(\frac{59 YZ_0 - 60YZ_1}{2^{Nb}}+\frac{1}{2}) J=floor(2Nb59YZ060YZ1+21)
    4)计算纬度解码值 R l a t i Rlat_i Rlati
    R l a t i = D l a t i ( Y Z i 2 N b + M O D ( J , 60 − i ) ) Rlat_i = Dlat_i(\frac{YZ_i}{2^{Nb}}+MOD(J,60-i)) Rlati=Dlati(2NbYZi+MOD(J,60i))
    5)判断 R l a t 0 Rlat_0 Rlat0 R l a t 1 Rlat_1 Rlat1是否相等,如果两值不等,那么意味着ADS-B信息广播过程中发生了区域横跨,需要等待一段时间,直到接收到两值相等的报文;如果相等,则可以按照接收到的第二条报文格式的奇偶情况来决定下一步的计算,即偶格式 i = 0 i = 0 i=0,奇格式 i = 1 i=1 i=1
    6)计算东西向经度区域大小 D l o n i Dlon_i Dloni
    N i = m a x ( 1 , N L ( R l a t i ) − i ) N L ( l a t ) = f l o o r ( 2 π [ a r c c o s ( 1 − 1 − c o s ( 2 π 2 N Z ) c o s 2 ( π 18 0 。 ∣ l a t ∣ ) ) ] − 1 ) D l o n i = 36 0 。 N i N_i = max(1,NL(Rlat_i)-i)\\ NL(lat) = floor(2 \pi [arccos(1-\frac{1-cos(\frac{2 \pi}{2 NZ})}{cos^2(\frac{\pi}{180^。}|lat|)})]^{-1})\\ Dlon_i = \frac{360^。}{N_i} Ni=max(1,NL(Rlati)i)NL(lat)=floor(2π[arccos(1cos2(180πlat)1cos(2NZ2π))]1)Dloni=Ni360
    7)计算纬度索引符号m
    m = f l o o r ( X Z 0 ( N L ( R l a t i ) − 1 ) − X Z 1 N L ( R l a t i ) 2 N b + 1 2 ) m = floor(\frac{XZ_0(NL(Rlat_i)-1)-XZ_1NL(Rlat_i)}{2^{Nb}}+\frac{1}{2}) m=floor(2NbXZ0(NL(Rlati)1)XZ1NL(Rlati)+21)
    8)计算纬度解码值
    R l o n i = D l o n i ( X Z i 2 N b + M O D ( m , N i ) ) Rlon_i = Dlon_i(\frac{XZ_i}{2^{Nb}}+MOD(m,N_i)) Rloni=Dloni(2NbXZi+MOD(m,Ni))
    由此, R l a t i Rlat_i Rlati R l o n i Rlon_i Rloni即为经纬度。
  2. NUCp信息提取
    直接提取Type值,转化为10进制,对比上表即可求得NUCp。
  3. 高度信息的解码
    解算高度信息及其单位指示比特Q,将余下信息转为10进制数n,当Q为1时,
    a l t = f l o o r ( 25 n − 1000 ) / 3.28084 alt = floor(25n-1000)/3.28084 alt=floor(25n1000)/3.28084
    当Q为0时,
    a l t = f l o o r ( 100 n − 1000 ) / 3.28084 alt = floor(100n-1000)/3.28084 alt=floor(100n1000)/3.28084

报文解析的仿真

点击<打开>,选择需解码的ADS-B报文文件,点击<解码>。
ADS-B消息的算法及仿真

CAT021格式的ADS-B报文编译码算法及仿真

由于CAT021格式的ADS-B报文属于经过处理的报文,编译码算法比空中位置消息较为简单。仅对其中的日时间数据项、位置数据项、高度数据项以及品质因素数据项的位置导航不确定类型数据项进行编译码。

CAT021格式报文产生

在编辑框内输入参数,点击<产生报文>按钮。
产生批量的报文数据 cat021Msgs.txt,且在界面显示出信息。
ADS-B消息的算法及仿真

CAT021格式报文解码

点击<打开>选择需要解码的CAT021报文文件,点击<解码>。
在matlab命令行窗口显示解码信息,

ADS-B消息的算法及仿真
且在界面显示解码信息
ADS-B消息的算法及仿真

MATLAB源码

具体代码实现参考 ads-b报文编译码仿真实现文章来源地址https://www.toymoban.com/news/detail-484597.html

到了这里,关于ADS-B消息的算法及仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pid算法的MATLAB仿真 - 用MATLAB进行pid算法仿真实验

    PID算法是工业应用中最广泛算法之一,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正。PID算法已经有100多年历史,在四轴飞行器,平衡小车、汽车定速巡航、温度控制器等场景均有应用。 PID算法:就是“比例(proportional)、积分(integral)、微分(derivativ

    2024年02月03日
    浏览(44)
  • 【RF FILTER 仿真】滤波器 Ansys Electronics not ADS

    全网搜索,用这个HFSS继承的介绍非常少,并且没有什么指导意义。所以有必要写一下,就像之前的xpedition,总要挑战一下吧。 本文仅仅和大家学习研究,对比ADS体会一下差别。 首先就是这里面说的为什么就找不到那个模块呢? 这是我找到的一个资源; 发现这个奇葩之处了么

    2024年01月24日
    浏览(46)
  • ADS仿真,3db均衡器是否可以补偿3db插入损耗?

    高速信号走线经常会有走线超长的问题,走线过长带来的直接影响是对应的插入损耗IL会增加,当超过标准要求时需增加Redriver等补偿,最常用的调整时增加预加重和去加重。而调整预加重时首先遇到的一个问题是补偿多少db? http://www.eepw.com.cn/article/237872.htm 使用ADS 眼图仿真,

    2024年02月07日
    浏览(56)
  • AWS SNS 订阅到 HTTP 的过程及消息报文

    AWS SNS(Simple Notification Service) 以消息订阅,推送的方式对组件进行解藕。当有新消息发送到 SNS 主题中,SNS 会向当前所有的订阅者发送一个消息(广播),它本身不像 SQS 那样会存储消息,而只是一个纯粹的消息路由。SNS 消息可以订阅到 Amazon Kinesis Data Firehose, SQS, Lambda, Email, Ema

    2024年02月21日
    浏览(38)
  • ModbusRTU\TCP消息帧解析(C#实现报文发送与解析)

    PLC寄存器中存储(整型和无符号整型:2字节。长整型:4字节。单精度浮点数:4字节。双精度浮点数:8字节),我们只要知道数据类型,是2个字节一截取,还是4个字节 ,对接收到的报文进行字节截取然后编码成str就行 向PLC中写入Float,float占4个字节=2个寄存器,所以要使用

    2024年02月03日
    浏览(46)
  • DHCP协议详解,报文内容,如何查看报文,为什么offer报文会以广播的形式进行发送

    dhcp地址分配协议,目前有dhcpv4以及dhcpv6,分别作用于ipv4与ipv6的网络中。 主要作用:dhcp服务端通过dhcp协议下发ip地址给到客户端(pc,终端),使得pc能有上网的能力。 1.dhcp交互图 2.dhcp报文交互过程中,有大部分的报文都是广播报文。 客户端拥有ip前,是可以接收所有的广

    2024年02月06日
    浏览(33)
  • 番外9:使用ADS对射频功率放大器进行非线性测试1(以IMD3测试为例)

    一般可以有多种方式对射频功率放大器的非线性性能进行测试,包括IMD3、ACPR(ACLR)等等,其中IMD3的实际测试较为简单方便不需要太多的仪器。那么在ADS中如何对设计的IMD3性能进行测试呢,下面进行介绍。 番外9:使用ADS对射频功率放大器进行非线性测试1(以IMD3测试为例)

    2023年04月20日
    浏览(30)
  • 使用Jmeter抓取手机APP报文并进行APP接口测试

    Jmeter是一个比较常用的接口测试工具,尤其是接口性能测试。当然它也可以用来测试手机APP的HTTP接口,我在Fiddler抓取手机APP报文 和 接口测试代理工具charles mock测试 分别介绍了Fiddler和charles 如何抓取APP报文,本文介绍使用Jmeter来抓取APP报文以及进行手机APP接口测试。 使用

    2024年02月02日
    浏览(42)
  • 6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文

    6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文 一、捕获ICMP报文 打开Wireshark,选择网络接口并点击开始按钮。分组列表面板不断刷新抓渠道的数据包,为了过滤出我们所要分析的ICMP报文,我们在过滤框中输入icmp,为了生成icmp报文,我们需要运行系统自带的ping程

    2024年02月16日
    浏览(43)
  • 2023-07-10 linux IIO子系统使用学习,在TI 的ads1015驱动里面看到相关使用,故花点时间进行简单的学习,入门级别,纪录点滴。

    一、Linux IIO(Industrial I/O)架构是Linux内核提供的一种用于支持各种类型传感器和数据采集设备的子系统,包括温度、压力、湿度、加速度、光度等多种传感器。 二、这个就是ads1015的驱动,里面用到iio子系统。 ti-ads1015.c « adc « iio « drivers - kernel/git/torvalds/linux.git - Linux kerne

    2024年02月17日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包