1.本发明涉及一种高可靠低开销的跨周期数据处理方法,属于航天器上的数据接收处理技术领域。
背景技术:
2.空间站作为长期有人值守的大型在轨航天器,具有可靠性、安全性要求高的特点。由于指令从航天员到gnc控制器之间传输的链条很长(如图2所示),为了提高系统的可靠性,在数据发送端(核心舱编解码指令单元)对指令打包后进行多次发送,在数据接收端(实验舱gnc控制器)对接收到的多个数据包进行一致性判断,以确保指令的高可靠性。由于数据发送端与数据接收端为异步系统,且采样周期小于控制周期,因此连续发送的多个数据包在接收端有可能在两个控制周期内完成接收。
3.针对上述情况,需要设计一种机制,确保对包含相同指令的多个数据包进行跨周期接收和处理。通常做法是将上一控制周期接收的所有数据缓存,与当前控制周期接收的数据一起处理,这种方法需要缓存的数据多,内存开销大,算法复杂,空间站上的控制器难以实现。
技术实现要素:
4.本发明要解决的技术问题为:克服现有技术不足,提供一种高可靠低开销的数据处理方法,针对在数据发送端对指令打包后进行多次发送,在数据接收端对接收到的多个数据包进行一致性判断后确认指令是否有效的情况,通过缓存当前控制周期中的所有数据包以及上一控制周期的最后一个数据包和连续包计数器,解决了对包含相同指令的多个数据包进行跨周期接收和处理的问题,确保了接收指令的高可靠性。
5.本发明的技术解决方案是:一种高可靠低开销的数据处理方法,步骤如下:
6.s1、发送端,按照设定的采样周期对指令cmd和数据进行采集,并打包形成数据包,发送给接收端;
7.s2、接收端按照设定的控制周期,接收数据包存入缓存buffer;当一个控制周期接收后,进行步骤s3
8.s3、计算当前控制周期接收到数据包的个数n,设置连续包计数器pkcnt;(若当前控制周期为第一个控制周期,则连续包计数器pkcnt设置为1,否则连续包计数器pkcnt设置为上一控制周期保存的连续包计数器pkcnt的值(a值))
9.s4、从缓存buffer中提取本控制周期内第i个数据包,作为当前数据包,提取当前数据包中的指令cmd;i为1
…
n的整数;i从1开始取;
10.将当前数据包中的指令cmd与上一数据包中的指令cmd对比,若当前数据包中的指令cmd与上一数据包中的指令cmd相同,则将连续包计数器pkcnt的值加1,否则将连续包计数器pkcnt的值置为1;
11.s5、判断连续包计数器pkcnt的值是否大于等于设定的阈值pkcntlimt,如果当前
的连续包计数器pkcnt的值大于等于设定的阈值pkcntlimt,则保存当前数据包中的指令cmd,作为有效指令;并且将连续包计数器pkcnt清零,判断i的值是否小于n,若是,将步骤s4中的i值加1后赋给i,返回步骤s4;否则,进行步骤s6;
12.s6、保存当前的连续包计数器pkcnt的值,记为a值;(当前的连续包计数器pkcnt的值,用于下一控制周期的第一个数据包与本控制周期的最后一个数据包比较时,若下一控制周期的第一个数据包中的指令cmd与本控制周期的最后一个数据包中的指令cmd相同,则在此连续包计数器pkcnt的值(a值)基础上加1)
13.s7,重复步骤s2
‑
步骤s6,遍历完所有控制周期后,得到所有有效指令。
14.优选的,一个有效指令,可能在两个控制周期中的数据包中传输。
15.优选的,在接收端需要判断连续多个数据包中指令cmd的一致性。
16.优选的,缓存buffer仅需缓存本控制周期中的所有数据包以及上一控制周期的最后一个数据包。
17.优选的,设定当前控制周期内第一个数据包的上一数据包,为上一控制周期内最后一个数据包。
18.优选的,对于第一个控制周期的第一个数据包,由于没有上一数据包进行比较,设连续包计数器pkcnt的值为1。
19.本发明与现有技术相比的优点在于:
20.(1)本发明无需缓存上一控制周期接收到的所有数据,减少了数据存储量。
21.(2)本发明通过保存上一控制周期的最后一个数据包和连续包计数器,解决了对包含相同指令的多个数据包进行跨周期接收和处理的问题,确保了接收指令的高可靠性。
22.(3)本发明能够使得数据处理占用的内存少。
23.(4)本发明能够使得算法简单,易于实现。
附图说明
24.图1为本发明的一种高可靠低开销的数据处理方法的流程图。
25.图2为指令从航天员到实验舱的gnc控制器的传输过程图。
具体实施方式
26.下面结合附图和具体实施例对本发明进行详细说明。
27.本发明提供一种高可靠低开销的数据处理方法,发送端按照设定的采样周期对指令cmd和数据进行采集,并打包形成数据包,发送给接收端;接收端按照设定的控制周期,接收数据包存入缓存buffer;当一个控制周期接收后,计算当前控制周期接收到数据包的个数n,设置连续包计数器pkcnt;从缓存buffer中提取本控制周期内第i个数据包,作为当前数据包,提取当前数据包中的指令cmd;i为1
…
n的整数;i从1开始取;将当前数据包中的指令cmd与上一数据包中的指令cmd对比,若当前数据包中的指令cmd与上一数据包中的指令cmd相同,则将连续包计数器pkcnt的值加1,否则将连续包计数器pkcnt的值置为1;判断连续包计数器pkcnt的值是否大于等于设定的阈值pkcntlimt,如果当前的连续包计数器pkcnt的值大于等于设定的阈值pkcntlimt,则保存当前数据包中的指令cmd,作为有效指令,并且将连续包计数器pkcnt清零;遍历完所有控制周期后,得到所有有效指令;本发明针
对在数据发送端对指令打包后进行多次发送,在数据接收端对接收到的多个数据包进行一致性判断后确认指令是否有效的情况,通过缓存当前控制周期中的所有数据包以及上一控制周期的最后一个数据包和连续包计数器,解决了对包含相同指令的多个数据包进行跨周期接收和处理的问题,确保了接收指令的高可靠性。
28.本发明针对的是:航天器上的指令至关重要,一旦指令发生错误,可能导致航天器发生故障甚至危及航天员的生命安全。在空间站上,航天员驻留在空间站核心舱中,通过遥操作手柄和核心舱编解码指令单元发送指令,实现实验舱与核心舱的手动交会对接,指令的传输过程如图2所示。由于指令从航天员到控制器之间的传输链条很长,为了提高系统的可靠性,在数据发送端(核心舱编解码指令单元)将每一条指令打包后按照12ms的采样周期连续发送8次,在数据接收端(实验舱gnc控制器)按照200ms的控制周期对接收到的多个数据包进行一致性判断,如果连续6个数据包中的指令相同,则保存该指令为有效指令,从而确保指令的高可靠性。由于数据发送端与数据接收端为异步系统,且采样周期小于控制周期,因此连续发送的8个数据包在接收端有可能在两个控制周期内完成接收。
29.采用本发明的方案,解决了对包含相同指令的多个数据包进行跨周期接收和处理的问题,确保了接收指令的高可靠性,并且此方法逻辑简单,占用内存少,易于实现。
30.如图1所示,本发明一种高可靠低开销的数据处理方法,优选方案步骤如下:
31.s1、发送端,将设定的采样周期对指令cmd和数据进行采集,并打包形成数据包,发送给接收端,具体为:
32.核心舱编解码指令单元将指令和遥操作手柄数据打包成14字节的数据包,按照12ms的采样周期发送给实验舱gnc控制器。数据包的格式为:
33.字节序号1~23~89~1314名称帧头遥操作手柄数据指令累加和
34.累加和为前13个字节按字节累加并舍弃进位后的值。一般对数据包格式没有特殊要求,但必须要有帧头,以便于提取数据包中的数据。
35.s2、接收端按照设定的控制周期,接收数据包存入缓存buffer;当一个控制周期接收后,进行步骤s3,具体为:
36.实验舱gnc控制器按照200ms的控制周期,接收数据包存入缓存buffer,缓存buffer的大小设计为280个字节。
37.s3、计算当前控制周期接收到数据包的个数n,设置连续包计数器pkcnt,具体为:
38.假设当前控制周期接收到280个字节,则数据包的个数n=280/14=20。如果当前控制周期为第一个控制周期,则连续包计数器pkcnt=1,否则连续包计数器pkcnt=a(假设上一控制周期保存的连续包计数器pkcnt的值a=5)。
39.s4、从缓存buffer中提取本控制周期内第i个数据包,作为当前数据包,提取当前数据包中的指令cmd;i为1
…
n的整数;i从1开始取;
40.将当前数据包中的指令cmd与上一数据包中的指令cmd对比,若当前数据包中的指令cmd与上一数据包中的指令cmd相同,则将连续包计数器pkcnt的值加1,否则将连续包计数器pkcnt的值置为1,具体为:
41.缓存buffer中一共20个数据包,第1个数据包为buffer[1],第20个数据包为buffer[20]。从buffer[i](i为1
…
n的整数)中取出指令cmd,与buffer[i
‑
1]中的指令cmd对
比,若buffer[i]中的指令cmd与buffer[i
‑
1]中的指令cmd相同,则将连续包计数器pkcnt的值加1,否则将连续包计数器pkcnt的值置为1。若i为1,则将buffer[1]中的指令cmd与上一控制周期的最后一个数据包中的指令对比。
[0042]
s5、判断连续包计数器pkcnt的值是否大于等于设定的阈值pkcntlimt,如果当前的连续包计数器pkcnt的值大于等于设定的阈值pkcntlimt,则保存当前数据包中的指令cmd,作为有效指令;并且将连续包计数器pkcnt清零,判断i的值是否小于n,若是,将步骤s4中的i值加1后赋给i,返回步骤s4;否则,进行步骤s6,具体为:
[0043]
空间站的数据处理要求为:如果连续6个数据包中的指令相同,则该指令有效,因此设定阈值pkcntlimt=6。
[0044]
情况1:如果步骤s4中pkcnt=1,则不满足pkcnt大于等于pkcntlimt的条件,直接判断i的值:如果i=1,则i值加1后赋给i(i=2),返回步骤s4;如果i=20,则进行步骤s6;
[0045]
情况2:如果步骤s4中pkcnt=6,则满足pkcnt大于等于pkcntlimt的条件,保存buffer[i]中的指令cmd,作为有效指令;并且将连续包计数器pkcnt清零,判断i的值是否小于20,若是,将步骤s4中的i值加1后赋给i,返回步骤s4;否则,进行步骤s6;
[0046]
s6、保存当前的连续包计数器pkcnt的值,记为a值;
[0047]
(当前的连续包计数器pkcnt的值,用于下一控制周期的第一个数据包与本控制周期的最后一个数据包比较时,若下一控制周期的第一个数据包中的指令cmd与本控制周期的最后一个数据包中的指令cmd相同,则在此连续包计数器pkcnt的值(a值)基础上加1)
[0048]
s7,重复步骤s2
‑
步骤s6,遍历完所有控制周期后,得到所有有效指令。
[0049]
本发明提供一种高可靠低开销的数据处理方法,针对在数据发送端对指令打包后进行多次发送,在数据接收端对接收到的多个数据包进行一致性判断后确认指令是否有效的情况,通过缓存当前控制周期中的所有数据包以及上一控制周期的最后一个数据包和连续包计数器,解决了对包含相同指令的多个数据包进行跨周期接收和处理的问题,确保了接收指令的高可靠性。此方法逻辑简单,占用内存少,易于实现。
[0050]
本发明以空间站的数据处理为例,发送端将指令打包后连续发送8次,接收端对接收到的多个数据包进行判断,如果连续6个数据包的指令相同,则保存该指令为有效指令。传统方法需要缓存当前控制周期的所有数据包和上一控制周期的所有数据包,一共560个字节,本发明算法只需缓存当前控制周期中的所有数据包以及上一控制周期的最后一个数据包和连续包计数器,一共295个字节。
[0051]
经过测试表明,应用了本发明算法后,接收指令100%正确,确保了接收指令的高可靠性,同时数据处理的内存占用减少了47%,算法复杂度减少了约50%,软件容量减少了约50%。
[0052]
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
技术特征:
1.一种高可靠低开销的数据处理方法,其特征在于步骤如下:s1、发送端,按照设定的采样周期对指令cmd和数据进行采集,并打包形成数据包,发送给接收端;s2、接收端按照设定的控制周期,接收数据包存入缓存buffer;当一个控制周期接收后,进行步骤s3;s3、计算当前控制周期接收到数据包的个数n,设置连续包计数器pkcnt;s4、从缓存buffer中提取本控制周期内第i个数据包,作为当前数据包,提取当前数据包中的指令cmd;i为1
…
n的整数;i从1开始取;将当前数据包中的指令cmd与上一数据包中的指令cmd对比,若当前数据包中的指令cmd与上一数据包中的指令cmd相同,则将连续包计数器pkcnt的值加1,否则将连续包计数器pkcnt的值置为1;s5、判断连续包计数器pkcnt的值是否大于等于设定的阈值pkcntlimt,如果当前的连续包计数器pkcnt的值大于等于设定的阈值pkcntlimt,则保存当前数据包中的指令cmd,作为有效指令;并且将连续包计数器pkcnt清零,判断i的值是否小于n,若是,将步骤s4中的i值加1后赋给i,返回步骤s4;否则,进行步骤s6;s6、保存当前的连续包计数器pkcnt的值,记为a值;s7、重复步骤s2
‑
步骤s6,遍历完所有控制周期后,得到所有有效指令。2.根据权利要求1所述的一种高可靠低开销的数据处理方法,其特征在于:一个有效指令,可能在两个控制周期中的数据包中传输。3.根据权利要求1所述的一种高可靠低开销的数据处理方法,其特征在于:在接收端需要判断连续多个数据包中指令cmd的一致性。4.根据权利要求1所述的一种高可靠低开销的数据处理方法,其特征在于:缓存buffer仅需缓存当前控制周期中的所有数据包以及上一控制周期的最后一个数据包。5.根据权利要求1所述的一种高可靠低开销的数据处理方法,其特征在于:设定当前控制周期内第一个数据包的上一数据包,为上一控制周期内最后一个数据包。6.根据权利要求1所述的一种高可靠低开销的数据处理方法,其特征在于:对于第一个控制周期的第一个数据包,由于没有上一数据包进行比较,设连续包计数器pkcnt的值为1。7.根据权利要求1所述的一种高可靠低开销的数据处理方法,其特征在于:当前的连续包计数器pkcnt的值,用于下一控制周期的第一个数据包与本控制周期的最后一个数据包比较时,若下一控制周期的第一个数据包中的指令cmd与本控制周期的最后一个数据包中的指令cmd相同,则在此连续包计数器pkcnt的值,即a值基础上加1。
技术总结
本发明提供一种高可靠低开销的数据处理方法,发送端按照设定的采样周期对指令Cmd和数据进行采集,并打包形成数据包,发送给接收端;接收端按照设定的控制周期,接收数据包存入缓存Buffer;当一个控制周期接收后,计算当前控制周期接收到数据包的个数N;从缓存Buffer中提取本控制周期内第i个数据包,作为当前数据包,得到所有有效指令;本发明针对在数据发送端对指令打包后进行多次发送,在数据接收端对接收到的多个数据包进行一致性判断后确认指令是否有效的情况,通过缓存当前控制周期中的所有数据包以及上一控制周期的最后一个数据包和连续包计数器,解决了对包含相同指令的多个数据包进行跨周期接收和处理的问题,确保了接收指令的高可靠性。确保了接收指令的高可靠性。确保了接收指令的高可靠性。
技术研发人员:杨俊春 李经松 张锦江 胡军 党纪红 尚葳蕤 于海心 王晶 张丹瑶 罗谷清 董晓刚 李晓锋
受保护的技术使用者:北京控制工程研究所
技术研发日:2021.04.06
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-13245.html