0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在VC 6.O平台上实现遥测截取方式的设计

电子设计 来源:现代电子技术 作者:贾丕军 2020-08-22 09:23 次阅读

引言

随着科技的进步,空空导弹的研制越来越复杂。相应地就有越来越多的数据信息需要遥测传输,这必然导致遥测接收的数据文件较大。以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 结语

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

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    4429

    浏览量

    125089
  • 数据
    +关注

    关注

    8

    文章

    6509

    浏览量

    87555
  • 函数
    +关注

    关注

    3

    文章

    3859

    浏览量

    61297
收藏 人收藏

    评论

    相关推荐

    能在Meteor Lake平台上使用SDK 3.5吗?

    因为客户有一些特殊要求 ,所以 PD FW 必须实现一些定制功能。 因此,我们希望流星湖中使用 CCG6 - CYPD6127,它的闪存大小比 CYPD6227 大。 因为最新版本的 Host
    发表于 03-04 06:32

    STM32平台上实现Cortex-M3的位带特性

    STM32平台上实现Cortex-M3的位带特性
    发表于 03-14 17:47

    如何在i.MX6UL平台上实现硬浮点与软浮点?

    和信号处理算法,具有浮点运算单元。适合于物联网,电子支付,智能家居,能源管理等领域。如何在i.MX6UL平台上实现硬浮点与软浮点? 本次开发使用的硬件平台为飞凌嵌入式OKMX
    发表于 12-28 10:40

    请问我Spartan 6平台上这样实现可变相移可行吗?

    你好,Spartan 6平台上实现可变相移时出错。我这样做相移:1)检查DCM是否锁定(高)2)将PSINCDEC设置为高(增量)3)将PSEN设置为高电平一个时钟周期4)等到PSD
    发表于 08-02 09:55

    CAN总线智能液位遥测系统有什么作用?

    针对目前海事应用中液位遥测系统的现状,基于ARM9芯片的WinCE嵌入式开发平台,开发一套智能的液位遥测系统。该系统采用CAN总线,遵循CANopen协议,EVC开发环境下结合多线程
    发表于 10-11 06:08

    嵌入式平台上怎么实现μC/GUI的移植?

    。为了使便携式心电监护仪实现友好的人机交互和更加方便的显示,这里提出一种GUI界面系统设计,就是基于NiosⅡ处理器的嵌入式平台上实现μC/GUI的移植,使之
    发表于 11-05 07:00

    USB接口小区电话报警平台VC++下怎么实现

    USB接口小区电话报警平台VC++下的实现
    发表于 02-25 06:30

    MTK平台上实现2ME需要哪些功能?

    J2ME是什么?MTK平台上实现J2ME运行环境,需要哪些功能?怎样去设计并实现J2ME运行平台
    发表于 04-27 06:22

    Intel PXA27X平台上如何去实现MPEG-4视频编码的功能?

    Intel PXA27X平台上如何去实现MPEG-4视频编码的功能?
    发表于 06-03 06:15

    RK的平台上RTC需要怎么配置呢

    什么是RTC呢?RK的平台上RTC需要怎么配置呢?其流程是怎样的?
    发表于 02-10 06:15

    RK3288平台上如何采用裸机实现LVDS和MIPI接口的LCD显示?

    常见的LCD显示接口有哪些?RK3288平台上如何采用裸机实现LVDS和MIPI接口的LCD显示?
    发表于 03-04 06:44

    如何实现UbuntuRK平台上的移植以及AP配网?

    如何实现UbuntuRK平台上的移植以及AP配网?
    发表于 03-09 07:04

    TarsARM平台上的移植是如何去实现

    ,add_and_return)都是基于x86汇编实现ARM64平台下,使用gcc内置函数实现,示例如下:原x86嵌汇编实现:支持ARM
    发表于 03-30 11:30

    分享一种Rockchip平台上生成图形的方法

    1、如何在Rockchip平台上生成图形Xserver 是常规桌面 Linux 平台上使用的显示系统。Rockchip 有一个定制的 Xserver 可以启用 2D 加速。Xserver 通常具有
    发表于 07-14 16:46

    DVI输出图像选区截取的FPGA实现

    DVI输出图像选区截取的FPGA实现,下来看看
    发表于 08-29 15:02 5次下载