一种基于CCSDS-AOS标准的实时遥测解析方法与流程

摘要: 本发明涉及一种基于ccsds-aos标准的实时遥测解析方法,主要用于卫星遥测数据帧实时解析的软件设计与实现,属于航天器嵌入式软件设计与测试。背景技术:1、ccs...
一种基于CCSDS-AOS标准的实时遥测解析方法与流程

本发明涉及一种基于ccsds-aos标准的实时遥测解析方法,主要用于卫星遥测数据帧实时解析的软件设计与实现,属于航天器嵌入式软件设计与测试。

背景技术:

1、ccsds全称是空间数据系统咨询委员会(consultive committee for space datasystem),其任务是制定航天测控和数传系统的标准化通信协议。其中ccsds高级在轨系统aos(advanced orbit systmes)标准在卫星遥测协议中得到广泛应用。

2、卫星采用aos遥测,遥测组帧包括四步:即源包(e_pdu)组织、多路协议数据单元(m_pdu)组织、虚拟信道数据单元(vcdu)组织以及信道访问数据单元(cadu)组织。数据单元之间的嵌套关系如图1所示,m_pdu数据格式如图2所示,e_pdu数据结构如图3所示。

3、基于ccsds-aos标准的遥测帧,不同卫星应用中,各协议段长度是变化的,比如卫星1应用中cadu长度为256字节,e_pdu最大长度为146字节;卫星2应用中cadu长度为512字节,e_pdu最大长度为250字节。

4、在卫星综合电子软件/星务软件的软件调试、软件测试、分系统测试、整星测试等阶段,都需要进行遥测包解析。遥测包解析遇到的问题如下:1)ccsds-aos遥测协议复杂,遥测解析的方法很多,其正确性和可靠性,不易确认和精确统计。2)不同型号中,遥测帧具体协议存在差异,遥测解包程序复用性差。为此需要简单、可靠、容易测试验证正确性的遥测帧解包方法。

技术实现思路

1、本发明的目的在于克服上述缺陷,提供一种基于ccsds-aos标准的实时遥测解析方法,解决了现有遥测解析不易确认和精确统计、遥测解包程序复用性差的技术问题。本发明在解包过程中,能够实时统计遥测解析过程信息,解包程序自测试性强,操作简单,复用性强。

2、为实现上述发明目的,本发明提供如下技术方案:

3、一种基于ccsds-aos标准的实时遥测解析方法,包括:

4、(1)对基于ccsds-aos标准的遥测帧进行变量定义,配置遥测帧各协议段的长度;

5、(2)对cadu的同步字进行判断,若同步字正确,获取vcdu帧头数据,发送至遥测显示,并实时统计遥测帧接收计数,进行下一步;若同步字错误,结束本次遥测帧解析;

6、(3)对vcdu的校验和进行判断,若校验和正确,进行下一步,若校验和错误,结束本次遥测帧解析;

7、(4)获取m_pdu导头指向的第一个e_pdu包所在位置;

8、(5)判断是否已保存上一个遥测帧的半截e_pdu包,若有半截e_pdu包,则基于m_pdu导头指向的第一个e_pdu包所在位置,把分布在两个遥测帧的e_pdu包拼接,发送至遥测显示,并根据e_pdu包中应用过程识别apid实时统计该类e_pdu包接收次数,后进行下一步;若上一个遥测帧无半截e_pdu包,则直接进行下一步;

9、(6)基于m_pdu导头指向的第一个e_pdu包所在位置以及e_pdu包的长度,在vcdu中循环找出所有完整的e_pdu包,发送至遥测显示,并实时统计每类e_pdu包接收次数,若有半截e_pdu包则进行保存,完成此遥测帧解析。

10、进一步的,步骤(1)包括:

11、根据应用协议:

12、配置cadu的总长度cadulen;

13、配置cadu的同步字长度synclen;

14、配置vcdu的总长度vcdulen;

15、配置vcdu的校验和长度checklen;

16、配置e_pdu的最大长度epdulenmax;

17、配置e_pdu的id编号最大值epduidmax;

18、定义cadu遥测帧数据为无符号字符串数组tmdata[cadulen],其中数组长度为cadulen;

19、定义两个cadu遥测帧拼接的e_pdu包变量tmepdujoint[epdulenmax],其中数组长度为epdulenmax;

20、配置mpdu导头在cadu遥测帧tmdata[cadulen]的下标值mpdustartid;

21、定义当前找到的e_pdu在cadu遥测帧中的位置为preepdupoint,设置preepdupoint的初值为0;

22、定义当前找到的e_pdu包号为preepduid,设置preepduid的初值为0;

23、定义当前找到的e_pdu长度为preepdulen,设置preepdulen的初值为0;

24、定义上一个cadu遥测帧中半截e_pdu包长度为epdujointedlen,设置epdujointedlen的初值为0;

25、定义每类e_pdu的下传总次数实时统计变量pkidsum[epduidmax],其中数组长度为epduidmax;

26、定义每类e_pdu的下传长度实时统计变量pkidlen[epduidmax],其中数组长度为epduidmax;

27、定义遥测帧接收次数统计变量cadurevcnt,设置其初值为0。

28、进一步的,步骤(2)包括:

29、对遥测帧tmdata[0]~ tmdata[synclen-1]共synclen个字节的同步字进行一致性校验,若一致性校验通过,将遥测帧的vcdu帧头数据tmdata[synclen]~tmdata[mpdustartid-1]的数据通过udp接口发送至遥测显示;遥测帧接收次数统计变量累加cadurevcnt = cadurevcnt+1。

30、进一步的,步骤(3)包括:

31、获取遥测帧中校验和域的值:tmdata[cadulen-checklen]~ tmdata[cadulen-1],将遥测帧中校验和域的值赋值给sum1;

32、计算tmdata[synclen]~ tmdata[cadulen-checklen-1]的校验和sum2;

33、比较sum1与sum2是否相同;

34、若相同,进行下一步,否则遥测帧解析结束。

35、进一步的,步骤(4)包括:

36、根据协议,m_pdu导头中的首导头指针直接指向第一个e_pdu在m_pdu中的起始位置,获取首导头指针的值为:(tmdata[mpdustartid]<<8 | tmdata[mpdustartid+1])&0x7ff,并转化为第一个e_pdu在cadu遥测帧中的位置为preepdupoint=首导头指针的值+mpdustartid。

37、进一步的,步骤(5)包括:

38、判断是否已保存上一个遥测帧的半截e_pdu包,即判断epdujointedlen是否大于0,若大于0,将m_pdu数据域中第一个e_pdu起始位置前的半截e_pdu包,即 tmdata[mpdustartid+2]~ tmdata[preepdupoint-1]复制到两个cadu遥测帧拼接的e_pdu包变量tmepdujoint[epdujointedlen]的起始位置;

39、根据e_pdu协议,此e_pdu包长度为preepdulen = (tmepdujoint[4]<<8 |tmepdujoint[preepdupoint+5])+7,此e_pdu包应用过程识别apid为preepduid =(tmepdujoint[0]<<8 | tmepdujoint[1])&0x7ff;将此完整e_pdu包发送到遥测显示;

40、实时统计每类e_pdu的下传总次数pkidsum[preepduid]++;实时统计每e_pdu的长度,pkidlen[preepduid]= preepdulen;

41、epdujointedlen的值置为0。

42、进一步的,步骤(6)包括:

43、(6.1)由当前e_pdu在cadu遥测帧中的位置preepdupoint,根据e_pdu协议,计算出当前e_pdu长度为preepdulen = (tmdata [preepdupoint+4]<<8 | tmdata[preepdupoint+5])+7,判断是否满足当前e_pdu在cadu遥测帧中起始位置+当前e_pdu包长度的和小于等于cadu数据长度,即preepdupoint+ preepdulen<= (cadulen - checklen),若满足表明找到了一个完整e_pdu包,进行(6.2),若不满足则进行(6.4);

44、(6.2)根据e_pdu协议,当前e_pdu包id为preepduid = (tmdata [preepdupoint+0]<<8 | tmdata [preepdupoint+1])&0x7ff,将此完整e_pdu包发送到遥测显示;实时统计当前类型e_pdu的下传总次数pkidsum[preepduid]++;实时统计当前类型e_pdu的长度,pkidlen[preepduid]= preepdulen;

45、更新preepdupoint = preepdupoint + preepdulen,进行(6.3);

46、(6.3)开始找下一个e_pdu包,判断下一个e_pdu包帧头是否完整,(preepdupoint+ 6)<= (cadulen - checklen) ,若不满足,进行(6.4);若满足,进行(6.1);

47、(6.4)保存此cadu遥测帧中的半截e_pdu包数据,半截e_pdu包数据的长度为:epdujointedlen = cadulen –checklen –preepdupoint,将半截e_pdu包数据tmdata[preepdupoint]~ tmdata[cadulen –checklen]数据复制到两个cadu遥测帧拼接的e_pdu包变量tmepdujoint[0]~ tmepdujoint[epdujointedlen - 1]中,等待与下一个cadu遥测帧中第一个完整e_pdu包前的半截e_pdu包拼接;本遥测帧解包结束。

48、一种计算机可读存储介质,所述的计算机可读存储介质存储有计算机程序,所述的计算机程序被处理器执行时实现上述一种基于ccsds-aos标准的实时遥测解析方法。

49、一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序所述的处理器执行所述的计算机程序时实现上述一种基于ccsds-aos标准的实时遥测解析方法。

50、一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述一种基于ccsds-aos标准的实时遥测解析方法。

51、本发明所揭示的轻量级、可配置的解包方法,准确解析出e_pdu包,解决了遥测解包程序复用性差的问题。在解包过程中,实时统计遥测解析过程信息:cadu帧接收次数、e_pdu1~ e_pdun的已解析次数、e_pdu1~ e_pdun的长度等实时精确统计。通过实时更新的统计数据,可以监测解包的正确性,,解包程序自测试性强,同时能更好的测试星上软件打包的逻辑。

52、本发明与现有技术相比具有如下至少一种有益效果:

53、(1)本发明基于ccsds-aos标准的遥测帧进行变量定义、配置遥测帧各协议段的长度,在不同的卫星应用中仅配置各协议段长度,就可实现遥测帧解析,操作简单,复用性强;

54、(2)本发明实现的遥测帧解析方法,在解包过程中,实时统计遥测解析过程信息:cadu帧接收次数、e_pdu1~ e_pdun的已解析次数、e_pdu1~ e_pdun的长度,通过实时更新的统计数据,可以监测解包的正确性,解包程序自测试性强,同时能更好的测试星上软件打包的逻辑;

55、(3)本发明提供的解包程序设计方法,解包逻辑清晰、简单、可靠,并经工程实施验证了该方法的可行性和有效性。