当前位置:首页 > 通信技术 > 通信技术
[导读]O 引言  随着科技的进步,空空导弹的研制越来越复杂。相应地就有越来越多的数据信息需要遥测传输,这必然导致遥测接收的数据文件较大。以3 Mb/s码率计,10 min的遥测数据就有214 MB之多。数据处理软件往往需要经过

O 引言

  随着科技的进步,空空导弹的研制越来越复杂。相应地就有越来越多的数据信息需要遥测传输,这必然导致遥测接收的数据文件较大。以3 Mb/s码率计,10 min的遥测数据就有214 MB之多。数据处理软件往往需要经过异步帧提取,有效位屏蔽,甚至经过费时的字符串处理才能得到最终结果。所以当用户处理这种大文件时往往需要等待很长的时间。如果能够把这样大的文件分割成较小的几个文件然后分别处理,那么处理软件的运行时间就可以缩短到用户可以忍受的程度。

  另一方面,空空导弹的发射试验往往比较短暂,从导弹离开载机直到导弹爆炸只有不到1 min的时间。数据分析人员最关心的也正是这段时间的数据。而实际遥测中,为了确保数据的可靠接收,会从发射前5 min开始记录直到遥测信号完全消失才停止记录。

  这种情况下,如果能够根据导弹发射的特征信号(比如导弹与发射架分离的信号)来截取遥测数据文件也具有重要的实际意义。

  本文通过对实际需求的分析,提出了按遥测帧数、时间和特征参数三种文件截取方法,并在VC 6.O平台上予以实现。

  1 软件设计

  1.1 功能设计

  在空空导弹遥测中,待传输的信号都是先通过多路复用组装成一个N字节长的遥测帧然后调制传输。在接收端解调后先通过帧同步获得该N字节长的遥测帧,然后在帧头加入8 B的时码(又称为B码)来表示接收到该帧的时刻,如图1所示。这样存盘后的文件字节数是N+8的整数倍。

  


 

  因为遥测数据按帧存放,所以有意义的最小分割单位是帧而不是字节,对文件的截取最后都要归结到按帧来截取。因此,软件的第一个功能同时也是最基本的功能就是按帧的起止序号进行分割。

  由于文件中每一帧数据的帧头都有B码,所以将该B码换算成实际时间之后也可以根据时间进行截取。

  数据分析人员一般要求提取导弹发射后到爆炸这一时间段的数据,所以利用导弹发射电气分离信号(ES)的跳变,截取跳变时刻前5 s直到跳变时刻后50 s的数据能够确保覆盖所需数据,同时尽量减小数据文件的大小。

  典型的电气分离信号图形如图2所示。

  

 

  通过对图2的分析可以得出以下结论:ES跳变点需要通过计算的来判决,比如当前数据点与下一数据点之差超过信号范围的2/3,那么就认为当前点为跳变点。但是对于图2(c)中有野点的情况这种判决方法就有可能导致误判。所以最好的办法是让用户参与跳变点的判决。软件自动找到第一个跳变点,用户可以通过快捷键找到下一个跳变点,直到正确的跳变点为止。

  这种设计方法杜绝了跳变点的误判,同时又能直观快捷地辅助用户找到跳变点,另外还简化了软件的设计。

  1.2 模块设计

  分割一个文件的流程,如图3所示。

  

 

  分析图3可以得出软件必须的几个模块:

  (1)打开待分割文件并自动生成分割后文件;

  (2)分割方式选择;

  (3)特征参数数据绘制;

  (4)起止帧序数选择;

  (5)起止时间选择;
(6)是否需要剔除无效帧。

  最终确定的软件界面如图4所示。

  

 

  2 软件实现

  2.1 按特征参数分割

  按特征参数分割涉及到遥测参数解算。程序运行时首先加载动态链接库dbreader.dll,postpro.dll和eu.dll。在OnInitDialog中调用函数GetTMFrame FormatInfo来获取遥测帧格式,包括遥测帧的长度,码率,同步码位置等信息。然后调用函数GetTM ParaAllReeord来获取所有参数在遥测帧中的位置信息,解算方法等。

  当用户从程序界面的参数下拉列表框中选择一个参数时,触发CBN_SELCHANGE事件并调用消息函数。在消息函数中根据参数是帧同步数据还是帧异步数据分别调用GetASyncParaValue函数或EUConvert函数解算出数据,同时从数据中找出跳变点,然后在图形控件上绘出曲线。

  2.2 按B码时间分割

  要想根据时间信息来查找对应的遥测帧就需要将该时间和文件中各遥测帧头的B码代表的时间进行比较。如果采用遍历查找的方法,对于总帧数为N的文件,理论上需要比较(N+1)/2次,要找到起、止两个时间对应的帧就要比较N+1次。这对于较大的文件来说消耗的时间会很长。

  在遥测文件中,每帧数据都是按接收到的先后顺序从前往后依次存放。也就是说,搜索的目的序列是有序的。对于这种情况,可以采用折半查找法进行搜索。理论证明,采用折半查找最多需要的比较次数为[log2(n+1)],搜索起、止两个时间共需比较2*[log2(n+1)]次。

  2.3 按帧序数分割

  三种分割方式最后都归结到按帧分割。按帧分割惟一复杂的地方就是剔除无效帧。要剔除无效帧需要将每一帧数据的同步码取出来和标准的同步码进行比较。如果差异位数超过容许值就丢弃该帧,否则保留。很多程序都采用依次右移一位,看二者最低位是否相同,如果不同则计数加1,循环直到两个数都为零的方法。

  这种方法效率非常低。本文采用了如图5所示的计算方法。

  

 

  这种算法的关键在两处:首先对两个被比较数a和b按位异或,结果c的二进制数中为1的位置就是a和b不一致的位置。然后c不停地与c-1按位与并将结果赋给c,直到c为O。通过归纳法可以证明c与c-1按位与可以消掉c的从低位往高位数的第一个1,所以c的二进制值有几个1就循环几次。

  3 结语

  本遥测软件采用模块化设计,便于实现和测试。同时结合遥测文件的结构,实现了按帧序数、按时间和按特征参数三种分割方法,较好地满足了型号遥测数据处理的需求。从软件的设计可以看出,对于较复杂的软件采用自顶向下,逐渐细化的分析方法,分模块设计;对于影响程序性能的处理过程有针对性地进行优化,可以有效地提高程序的可靠性和性能并简化设计过程。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。

关键字: python 函数 对象编程

测试数据综合分析的绝佳工具,深受工程师和研究员欢迎

关键字: 后处理分析软件 向导 函数

由上图中可以知道进程地址空间中最顶部的段是栈,代码中调用函数、定义局部变量(但不包含static修饰的变量)或声明的类的实例等等都要使用栈空间,当函数执行完(也就是程序执行超过了这个函数的作用范围的时候),操作系统会把该...

关键字: 进程地址 局部变量 函数

伦敦2022年7月19日 /美通社/ -- 作为Omdia企业网络安全行动(SecOps)情报服务的一部分,《全面扩展探测与响应基础》(CXDR)报告显示,扩展探测与响应(XDR)细分市场的全球收入将在五年内增长超过80...

关键字: SE PS 终端 遥测

星标/置顶 公众号,硬核文章第一时间送达!链接| https://zhuanlan.zhihu.com/p/274473971题很多,先上题后上答案,便于大家思考问题点:1、C和C的特点与区别?2、C的多态3、虚函数实现...

关键字: 腾讯 函数 进程 AI

程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务。面向过程语言最基本的单元是过程和函数。

关键字: 程序接口 过程 函数

星标「嵌入式大杂烩」,一起进步!链接:https://www.cnblogs.com/jozochen/p/8541714.html一、问题复现稳定复现问题才能正确的对问题进行定位、解决以及验证。一般来说,越容易复现的问...

关键字: 嵌入式开发 函数 代码 寄存器

基本上,没有人会将大段的C语言代码全部塞入main()函数。更好的做法是按照复用率高、耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数。C语言代码的组合千变万化,因此函数的功能可能会比较复杂,不同的输入,常...

关键字: 函数 PEN C语言代码 C语言程序

Part1一、让自己习惯C条款01:视C为一个语言联邦C并不是一个带有一组守则的一体语言:他是从四个次语言(C、Object-OrientedC、Template、STL) 组成的联邦政府,每个次语言都有自己的规约。记住...

关键字: 函数 ASPECT 编译器

为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash,oops等棘手问题,一般大家都会用gdb,objdump或者addr2line等工具分析pc位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得...

关键字: 函数 ARM C语言 AI
关闭
关闭