法律状态公告日
法律状态信息
法律状态
2020-05-15
授权
授权
2018-01-12
实质审查的生效 IPC(主分类):G06F11/07 申请日:20170904
实质审查的生效
2017-12-19
公开
公开
技术领域
本发明涉及一种大数据快速容错处理方法,具体是指对箭载计算机下传的双套惯组数据、及光纤惯组下传的惯组数据进行快速处理的方法,属于运载火箭控制系统设计领域。
背景技术
现有技术中,根据要求,需要对箭载计算机及光纤惯组下传的数据进行监测处理。由于所述的下传数据具有周期短、数据量大的特点,因此为了能满足对该些数据的处理要求,并能同时对其中的错误数据进行容错,以保证数据的可靠性,设计提供本发明的处理方法。
发明内容
本发明的目的是提供一种基于运载火箭地测微机大数据量的快速容错处理方法,能快速及时的处理箭载计算机下传的双套惯组数据以及光纤惯组下传的惯组数据,并确保地测微机所接收数据的完整、可靠和有效。
为实现上述目的,本发明提供一种基于运载火箭地测微机大数据量的快速容错处理方法,包含以下步骤:
S1、运载火箭周期性的向地测微机传输数据;
S2、根据运载火箭传输数据的周期,在地测微机内设置匹配的多媒体定时器,周期性的触发定时器事件;
S3、当每触发一次定时器事件时,地测微机进行一次数据的接收;
S4、地测微机对接收到的数据进行容错处理,剔除超时数据、不正确数据及不完整数据。
所述的S1中,运载火箭向地测微机传输的数据存储在地测微机的串口缓存区内。
所述的S1中,运载火箭向地测微机传输的数据包括:箭载计算机向地测微机下传的双套惯组数据,以及光纤惯组向地测微机下传的惯组数据。
所述的S2中,设置多媒体定时器周期,使多媒体定时器对地测微机的数据接收模块进行周期性定时,由数据接收模块每间隔一个周期对存储在串口缓存区内的数据进行采集。
所述的S2中,设置多媒体定时器的周期T为10ms。
所述的S3中,定时器每间隔一个周期触发一次定时器事件,每个定时器事件具体包含以下步骤:
S31、对超时计数标志进行加1计数;
S32、判断超时计数标志的当前值是否超过预设的超时指定次数;如是,将超时计数标志复位置零,将超时标志置为真,继续执行S33;如否,直接执行S33;
S33、判断串口缓存区中是否存在数据;如是,取出数据存入第一内存中,并触发数据处理事件;如否,结束定时器事件。
所述的S4中,地测微机的数据处理模块对采集到的数据进行容错处理,具体包含以下步骤:
S41、进入循环,等待数据处理事件被触发;
S42、当数据处理事件被触发后,判断第一内存中是否存在数据;如是,将第一内存中的数据拆分并存入第二内存中;如否,继续执行S43;
S43、判断第二内存中是否有数据,并且该第二内存中的数据在串口缓存区中的存储时间是否超时;如是,进入错误处理流程,剔除第二内存B中的全部数据,将第二内存中的指针下移所剔除数据个数的位数,将超时标志置为假,继续执行S44;如否,继续执行S44;
S44、判断第二内存中的指针指向数据的长度是否达到指定大小;如是,继续执行S45;如否,将超时标志置为假,返回S41,等待下一个数据处理事件被触发;
S45、判断第二内存中的指针指向数据的帧头是否合格;如是,继续执行S46;如否,进入错误处理流程,将第二内存B中的指针下移一位,返回执行S44;
S46、判断第二内存中的指针指向数据的校验码是否合格;如是,取出该数据存放至第三内存中,将第二内存中的指针下移一位,返回执行S44;如否,进入错误处理流程,将第二内存中的指针下移一位,返回执行S44。
所述的S43中,当数据在串口缓存区中的存储时间大于定时器周期×超时指定次数时,判断该数据超时。
本发明所提供的基于运载火箭地测微机大数据量的快速容错处理方法,运用高精度的多媒体定时器快速的处理串口缓存区内的下传数据,避免因数据大量堆积而导致缓存溢出的风险,以及避免因CPU长时间被占用而导致无响应的情况发生;同时本发明采用的数据容错处理方法,能够剔除各种异常数据,确保所接收数据的正确性、完整性和有效性。
附图说明
图1为本发明中的基于运载火箭地测微机大数据量的快速容错处理方法的示意图;
图2为本发明中的数据定时接收的流程图;
图3为本发明中的数据容错处理的流程图。
具体实施方式
以下结合图1~图3,详细说明本发明的一个优选实施例。
如图1所示,为本发明所提供的基于运载火箭地测微机大数据量的快速容错处理方法,包含以下步骤:
S1、运载火箭周期性的向地测微机传输数据;
S2、根据运载火箭传输数据的周期,在地测微机内设置匹配的多媒体定时器,周期性的触发定时器事件;
S3、当每触发一次定时器事件时,地测微机进行一次数据的接收;
S4、地测微机对接收到的数据进行容错处理,剔除超时数据、不正确数据及不完整数据。
所述的S1中,运载火箭向地测微机传输的数据存储在地测微机的串口缓存区内。
所述的S1中,运载火箭向地测微机传输的数据包括:箭载计算机向地测微机下传的双套惯组数据,以及光纤惯组向地测微机下传的惯组数据。
在本发明中,由于S1中运载火箭的箭载计算机和光纤惯组不是以现有技术中的响应信号的方式向地测微机发送数据,而是采用周期性定时发送数据的方式。因此,根据周期性发送数据的特点,考虑在S2中可以采用循环采集方法或者定时器定时采集方法来实现地测微机的数据接收。
又由于地测微机所采用的Windows系统是抢占式的多任务操作系统,如果选择采用循环采集方法来进行数据接收的话,会导致地测微机的CPU始终被该循环占用,使得其他功能出现卡顿。
最终,本发明选择采用定时器定时采集方法实现对周期性发送的数据进行周期性的采集接收,从而有效降低地测微机的CPU占有率,也更符合地测微机的系统需求。
所述的S2中,设置多媒体定时器周期,使多媒体定时器对地测微机的数据接收模块进行周期性定时,由数据接收模块每间隔周期T对存储在串口缓存区内的数据进行采集。
所述的S2中,设置多媒体定时器的周期T为10ms,即数据接收模块每间隔10ms对存储在串口缓存区内的数据进行采集,从而覆盖并匹配运载火箭传输数据的周期。
由于地测微机所采用的Windows系统自带的定时器是封装了Windows API(应用程序编程接口,Application Programming Interface)定时器函数的控件。该定时器是依赖消息机制的时间控制方法,首先由SetTimer函数创建一个内存对象,设定间隔时间,当到达要求的时间间隔时,定时器对象发送一个WM_TIMER的消息,并由相应函数处理。由于WM_TIMER消息的优先级不高,且易出现消息合并情况,因此在默认情况下,Windows系统自带的定时器精度为15.625ms,即该定时器的采样精度只能为15.625ms的整数倍。很明显,这种定时器无法达到本发明中所要求的10ms的数据采样周期。
又由于Windows系统中设置有一套多媒体编程接口,该接口中提供一套定时器操作的函数,可用来实现高精度的定时器,即多媒体定时器。该多媒体定时器不依赖于消息机制,而是产生一个独立的线程,该线程的优先级为最高,在一定的中断次数到达后,将直接调用预先设置的回调函数进行处理,而不必等待应用程序的消息队列为空,有效保证了定时器的实时响应。因此,本发明选择采用多媒体定时器,其能够实现精度为1ms的定时,完全能满足本发明中所要求的10ms的数据采样周期。
如图2所示,所述的S3中,定时器每间隔周期T触发一次定时器事件时,数据接收模块即对串口缓存区进行一次数据采集;每个定时器事件具体包含以下步骤:
S31、对超时计数标志进行加1计数;
S32、判断超时计数标志的当前值是否超过预设的超时指定次数N;如是,将超时计数标志复位置零,将超时标志置为真,继续执行S33;如否,直接执行S33;
S33、判断串口缓存区中是否存在数据;如是,取出数据存入第一内存A中,并触发数据处理事件;如否,结束定时器事件。
如图3所示,所述的S4中,地测微机的数据处理模块对采集到的数据进行容错处理,其是个循环过程,具体包含以下步骤:
S41、进入循环,等待数据处理事件被触发;只有当数据处理事件被触发之后,才会继续进行后续步骤,否则将始终处于等待状态;
S42、当数据处理事件被触发后,判断第一内存A中是否存在数据;如是,将第一内存A中的数据拆分并存入第二内存B中;如否,继续执行S43;
S43、判断第二内存B中是否有数据,并且该第二内存B中的数据在串口缓存区中的存储时间是否超时;如是,进入错误处理流程,剔除第二内存B中的全部数据,将第二内存B中的指针下移X位,X为第二内存B中被剔除的数据个数,将超时标志置为假,继续执行S44;如否,继续执行S44;
S44、判断第二内存B中的指针指向数据的长度是否达到指定大小;如是,继续执行S45;如否,将超时标志置为假,返回S41,等待下一个数据处理事件被触发;
S45、判断第二内存B中的指针指向数据的帧头是否合格;如是,继续执行S46;如否,进入错误处理流程,剔除该数据,并将第二内存B中的指针下移一位,返回执行S44;
S46、判断第二内存B中的指针指向数据的校验码是否合格;如是,取出该数据存放至第三内存C中,将第二内存B中的指针下移一位,返回执行S44;如否,进入错误处理流程,剔除该数据,并将第二内存B中的指针下移一位,返回执行S44。
所述的S43中,当数据在串口缓存区中的存储时间大于定时器周期×超时指定次数(T×N)时,则判断该数据超时。在本发明的一个优选实施例中,设置了定时器周期T为10ms,设置了超时指定次数N为1000次,则当数据在串口缓存区中的存储时间大于10s时,即被认为超时。
当在S43中已经判断得到第二内存B中有数据且数据存储时间超时,由于在这种情况下第二内存B中的数据因进入错误处理流程而被全部剔除,即使指针下移,所指向的也是空数据,那么接下来在S44中判断数据长度是否达标时,将肯定为否,从而跳出循环等待下一个数据处理事件被触发;
当在S43中已经判断得到第二内存B中没有数据时,将直接继续执行S44,并且在S44中判断数据长度是否达标时,也将肯定为否,从而跳出循环等待下一个数据处理事件被触发;
当在S43中已经判断得到第二内存B中有数据且数据存储时间未超时,将直接继续执行S44,而在S44中将逐条判断数据长度是否达标,并且根据判断结果选择继续进行S45或跳出循环等待下一个数据处理事件被触发。
所述的S43能够及时剔除掉超时数据,S44能够及时剔除掉不完整数据,S45和S46能够剔除掉帧头不合格以及校验码不合格的错误数据。因此,整个数据容错处理能够有效避免异常数据重组成为被地测微机所接收的数据的可能,保证了所接收数据的正确性、完整性和有效性。
综上所述,本发明所提供的基于运载火箭地测微机大数据量的快速容错处理方法,运用高精度的多媒体定时器快速的处理串口缓存区内的下传数据,以避免因数据大量堆积而导致缓存溢出的风险,避免因忙于处理大量其他数据而导致的CPU长时间处于被占用状态,从而出现无响应的情况发生,确保了数据处理的时效性;同时本发明采用的数据容错处理方法,能够剔除各种异常数据,确保所接收数据的正确性、完整性和有效性。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
机译: 基于表的大数据量处理方法及装置
机译: 基于表的大数据量处理方法及装置
机译: 基于表的大数据量处理方法及装置