本发明专利技术涉及卫星数管分系统的数据分发与传输,公开了一种基于计数变化进行动态超时控制的数据接收方法。包括确定超时最大延时参数;选择指定的通道;接收前启动定时器计时;判断接收数据的字节计数的情况,进行数据接收处理;判断接收数据的字节计数的变化;判断定时器超时情况,进行超时异常处理等步骤。本发明专利技术解决了多载荷多数据类型情况下接收数据超时控制的问题,取得了提高卫星软件设计通用化程度和数据可靠性等有益效果。
【技术实现步骤摘要】
本专利技术涉及卫星数管分系统的数据分发与传输,尤其是一种。
技术介绍
在嵌入式实时控制领域,如卫星数管分系统的数据分发与传输,为防止程序因等待硬件状态而发生死锁,异步数据通讯程序需要对数据接收采取超时判断和控制,即等待软件指定的一段时间用于判断硬件接收状态,如果超过这段时间接收未准备好,则不再继续判读状态,按照未接收到数据进行异常处理,这段等待时间是由接收的数据长度、接收波特率和处理器响应时间决定的。以往动态超时控制采取的策略是按整批数据进行设计,但是随着星上应用载荷通道和业务数据量的增加,各通道的数据量相差很大的时间就需要按照不同协议设置成不同程序,难以设计成通用组件,维护和修改起来也相对困难。为此,一种基于计数变化进行多通道超时控制的数据接收方法可以提供通用的异步数据通讯超时控制的方法,用于解决多种载荷和多种协议格式数据接收程序通用化设计的问题。目前没有发现同本专利技术类似技术的说明或报道,也尚未收集到国内外类似的资料。
技术实现思路
为了实现多种载荷和多种协议格式数据接收程序通用化设计,解决异步数据通讯超时控制的问题,本专利技术的目的在于提出一种,利用本专利技术,可以实现卫星各载荷通用超时控制数据接收软件算法的目的。为了达到上述专利技术目的,本专利技术为解决其技术问题所采用的技术方案是提供一种,包括:—个用于动态超时控制的定时器;一个用于异步串行通讯的控制器;一个用于存储接收到数据的数据缓存器;一个用于计量已接收到数据字节数的数据计数器;一个用于处理已接收数据的处理器;一个用于存储上次计数值的计数存储单元;一个用于接收异步串行数据的数据接收程序;一个用于超时情况下进行异常处理的超时处理程序;一个用于选择通讯通道的多路选择器;上述组成部件执行如下的步骤:(I)根据异步通讯速率、位数及下位机响应处理时间确定定时器的最大延时参数;(2)通过处理器选择软件中多路通讯对应的的通道号,向多路选择器的端口写入通道号;(3)接收异步串行数据,存入数据缓存器,同步更新数据计数器;(4)由处理器启动定时器,轮询数据计数器,读取当前计数器单元数值,与前次计数器单元数值进行比较;(5)如果计数器单元数值达到预定义的长度,启动数据接收程序进行处理;(6)如果当前计数器单元数值与前次计数器单元数值比较在规定的延时时间内未递增,则启动超时处理程序进行异常处理;(7)如果数据计数器在规定延时内发生递增,但未达到预定义的数据长度,则回到步骤(4)继续处理。本专利技术一种基于计数变化进行多通道超时控制的数据接收方法,由于采取上述的技术方案,在整星数管分系统与多种载荷进行数据通讯的情况下,数据接收功能可以设计成通用模块,根据FIFO计数变化进行动态超时控制,而与各载荷通道的数据量无关。本专利技术解决了多载荷多数据类型情况下超时控制的问题,取得了提高卫星软件设计通用化程度和数据可靠性等有益效果。附图说明图1是实现本专利技术基于计数变化进行多通道超时控制的数据接收方法的原理框图;图2是本专利技术中数据接收和多通道超时控制的算法流程图。具体实施例方式下面结合附图说明本专利技术的优选实施例。图1是实现本专利技术一种基于计数变化进行多通道超时控制的数据接收方法的原理框图。如图1的实施例所示,本专利技术的方法采用以下的组成部件:定时器1:用于动态超时控制;异步串行通讯控制器2:用于数据通信控制和数据收发;数据缓存器3:用于存储接收到的数据;数据计数器4:用于计量已接收到数据字节数;处理器5:用于处理已接收数据;计数存储单元6:用于存储上次计数值的;数据接收程序7:用于接收异步串行数据;超时处理程序8:用于超时情况下进行异常处理;多路选择器9:用于选择多通道通讯系统中指定的通讯链路。上述组成部件执行如下的步骤:(I)根据异步通讯速率、位数及下位机响应处理时间确定定时器I的最大延时参数;本专利技术实施例中,定时器最大延时参数=(传输单字节位数/通讯速率+下位机处理时间)X 2。通讯速率单位为bps (位每秒),计算得出的延时参数单位为S (秒)。(2)通过处理器5选择软件中多路通讯对应的的通道号,向多路选择器9的端口写入通道号;(3)接收异步串行数据,存入数据缓存器3,同步更新数据计数器4 ;(4)由处理器5启动定时器1,轮询数据计数器4,读取当前计数器单元数值,与前次计数器单元数值进行比较;(5)如果计数器单元数值达到预定义的长度,启动数据接收程序进行处理;(6)如果当前计数器单元数值与前次计数器单元数值比较在规定的延时时间内未递增,则启动超时处理程序进行异常处理;(7)如果数据计数器4在规定延时内发生递增,但未达到预定义的数据长度,则回到步骤(4)继续处理。上述步骤(2)中,处理器5向多路选择器9对应的输入端口写入需要通讯的通道号。上述步骤(3)还包括,数据计数器4必须与数据缓存器3中接收到的数据队列长度保持同步一致,数据缓存器3中的数据队列按先进先出方式进行更新,数据计数器4必须对于处理器5可读可写。上述步骤(3)中,当外部通讯控制器对数据缓存器3进行写操作时,向队列尾部依次添加接收到的字节数据,同时数据计数器4加I。上述步骤(4)中,当处理器5对数据缓存器3进行读操作时,从队列头部依次取出数据,同时清除该字节数据,数据计数器4减I。上述步骤(4)还包括,处理器5可以对数据计数器4和数据缓存器3进行清除操作,清除后数据计数器4为0,数据缓存器3中的数据全部清空。上述步骤(5)和(7)中,所述预定义数据长度由应用软件通过参数方式向处理器的数据处理程序传递,数据长度必须为固定的正整数。上述步骤(6)还包括,超时处理程序需要向应用软件传递通讯超时标志,以表示数据不可用。图2是本专利技术中数据接收和多通道超时控制的算法流程图,如图2所示:上述步骤(6)中,超时处理程序进行异常处理的超时控制的算法主要包括如下步骤:(I)初始化状态标志(如接收缓存,接收完成标志等);(2)在多通道通讯系统中,选择异步通讯通道;(3)启动定时器,轮询FIFO计数器,读取当前计数器,与前次计数器单元数值进行比较;(4)如果FIFO计数器计数器数值达到预定义的长度(此参数由调用者设置),启动数据接收程序进行处理;(5)如果当前计数器与前次计数单元比较在规定的延时时间5ms内未递增,则启动超时处理程序进行异常处理。(6)如果计数器在规定延时内发生递增,但未达到预定义的长度,则回到步骤(3),重启计时器重新判读FIFO计数。由上所述,本专利技术在整星数管分系统与多种载荷进行数据通讯的情况下,数据接收功能可以设计成通用模块,根据FIFO计数变化进行动态超时控制,而与各载荷通道的数据量无关。因此,本专利技术实现了多种载荷和多种协议格式数据接收程序通用化设计,解决了异步数据通讯超时控制的问题,权利要求1.一种基于计数变化进行多通道超时控制的数据接收方法,其特征在于:一个用于动态超时控制的定时器;一个用于异步串行通讯的控制器;一个用于存储接收到数据的数据缓存器;一个用于计量已接收到数据字节数的数据计数器;一个用于处理已接收数据的处理器;一个用于存储上次计数值的计数存储单元;一个用于接收异步串行数据的数据接收程序;一个用于超时情况下进行异常处理的超时处理程序;一个用于选择通讯通道的多路选择器;上述组成部件执行如下的步骤: (1)根据异步通讯速本文档来自技高网...
【技术保护点】
一种基于计数变化进行多通道超时控制的数据接收方法,其特征在于:一个用于动态超时控制的定时器;一个用于异步串行通讯的控制器;一个用于存储接收到数据的数据缓存器;一个用于计量已接收到数据字节数的数据计数器;一个用于处理已接收数据的处理器;一个用于存储上次计数值的计数存储单元;一个用于接收异步串行数据的数据接收程序;一个用于超时情况下进行异常处理的超时处理程序;一个用于选择通讯通道的多路选择器;上述组成部件执行如下的步骤:(1)根据异步通讯速率、位数及下位机响应处理时间确定定时器的最大延时参数;(2)通过处理器选择软件中多路通讯对应的的通道号,向多路选择器的端口写入通道号;(3)接收异步串行数据,存入数据缓存器,同步更新数据计数器;(4)由处理器启动定时器,轮询数据计数器,读取当前计数器单元数值,与前次计数器单元数值进行比较;(5)如果计数器单元数值达到预定义的长度,启动数据接收程序进行处理;(6)如果当前计数器单元数值与前次计数器单元数值比较在规定的延时时间内未递增,则启动超时处理程序进行异常处理;(7)如果数据计数器在规定延时内发生递增,但未达到预定义的数据长度,则回到步骤(4)继续处理。...
【技术特征摘要】
【专利技术属性】
技术研发人员:朱琦,林挺,
申请(专利权)人:上海航天测控通信研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。