一种基于管理表的1553B总线BC模式下消息配置处理方法与流程

文档序号:19828397发布日期:2020-02-04 12:08阅读:1757来源:国知局
一种基于管理表的1553B总线BC模式下消息配置处理方法与流程

本发明属于航空航天系统数据通信技术领域,涉及一种基于管理表的1553b总线bc模式下消息配置处理方法。



背景技术:

1553b总线是一种数字式时分制指令/响应型多路传输数据总线,由于它可靠性高、通信质量稳定、扩充和维护简便等特点,在航空航天电子系统中得到了非常广泛的应用。

1553b总线最多可挂32个rt终端,每个rt最多又可以支持32个rt子地址来响应最多32个接收消息和32个发送消息,由于1553b总线ram可配置消息个数较少(一般为64个),所以传统的1553b总线bc模式下消息配置方法一般采用环形队列的方法,不论是bc发送数据到rt,还是rt发送数据到bc,都是同一消息空间地址逐一递增,因此当数据发送量大且发送频率较高时,1553b总线消息流程的管控效率低,易出错,可维护性差。



技术实现要素:

(一)发明目的

本发明的目的是:提供一种基于管理表的1553b总线bc模式下消息配置处理方法,克服现有1553b总线bc模式下数据消息配置处理方法的不足,解决1553b总线大量高频次处理消息过程中消息高效管理的问题。

(二)技术方案

为了解决上述技术问题,本发明提供一种基于管理表的1553b总线bc模式下消息配置处理方法,其包括以下步骤:

step1:定义一个结构体来描述消息空间的状态;

step2:管理表状态初始化,将所有的状态清0,进行1553b总线启动的初始化工作;

step3:对内存管理空间进行初始化操作;

step4:进行系统的数据传输工作,如果传输方向是bc到rt方向,转到step5,如果传输方向是rt到bc方向,则转到step6;

step5:对于bc到rt的方向,判断总线数据是否发送完成,同时判断1553b总线的两个消息计数器a和b是否已经达到最大值,这两个条件均达到后,进行发送准备工作,将1553b总线的块状态字寄存器清零,将1553b总线的时标字寄存器清零,填写消息间隔时间值msg_gap1,填写消息块指针,初始化堆栈指针a的起始位置,初始化消息计数器a,初始化堆栈指针b的起始位置,初始化消息计数器b,配置控制字和命令字,将数据写入消息空间数据存储区,启动bc发送;

step6:对于rt到bc的方向,判断总线数据是否发送完成,同时判断1553b总线的两个消息计数器a和b是否已经达到最大值,这两个条件同时满足时,进行发送准备工作,将1553b总线的块状态字寄存器清零,将1553b总线的时标字寄存器清零,填写消息间隔时间值msg_gap2,填写消息块指针,初始化堆栈指针a的起始位置,初始化消息计数器a,初始化堆栈指针b的起始位置,初始化消息计数器b,配置控制字和命令字,将数据写入消息空间数据存储ram区,启动rt发送;

step7:遍历查询rt发送到bc数据取出标志,对于没取出的rt数据通过1553b总线的块状态字判断数据是否准备好,将准备好的数据取出。

其中,所述步骤step1中,结构体内容包括:偏移地址的标号index、rt的节点号rtn、rt子地址subrtn、消息传输的方向dir、消息地址是否已经被注册标记regflag以及rt发送到bc数据是否已经被取出标记fetchflag,以上结构体内容为管理表需要管理的内容。

其中,所述步骤step1中,偏移地址的标号index取值范围为0~63;消息传输的方向dir为:bc到rt方向为1,rt到bc方向为2;消息地址是否已经被注册标记regflag为:注册标记为0,尚未注册或者已注销标记为1;rt发送到bc数据是否已经被取出标记fetchflag为:取出为0,未取出标记为1。

其中,所述步骤step2中,定义一个结构体数组ctrltab[64],数组长度为64,用这个结构体数组作为管理表来管理消息空间,在使用之前先使用memset指令对64个结构体数组空间进行清零。

其中,所述步骤step3中,内存管理空间初始化的过程中,根据具体总线通讯的需求,将对应的rt节点号rtn、rt子地址subrtn、消息传递的方向和消息地址已注册的状态,分别写入到结构体数组中。

其中,所述步骤step6中,启动rt发送完成后,将rt发送到bc数据是否已经被取出标志置为1。

(三)有益效果

上述技术方案所提供的基于管理表的1553b总线bc模式下消息配置处理方法,可以实现1553b总线bc模式下内存的高效管理,该方法已经经过了算法验证,并进行了实验检验。结果表明,该方案可以保证1553b通讯的实时性,提高了1553b通讯的可靠性。

附图说明

图1一种基于管理表的1553b总线bc模式下消息配置处理方法主流程图。

图2一种基于映射表的1553b总线bc模式下消息配置处理方法动态配置流程图。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

为了解决1553b总线bc模式下消息配置传统方法效率低的问题,本发明采用结构体数组对消息空间管理表进行管理。结合图1说明基于管理表的1553b总线bc模式下消息配置主流程:

step1:定义一个结构体描述消息空间的状态

结构体内容包括:偏移地址的标号index(取值范围为0~63)、rt的节点号rtn、rt子地址subrtn、消息传输的方向dir(bc到rt方向为1,rt到bc方向为2)、消息地址是否已经被注册标记regflag(注册标记为0,尚未注册或者已注销标记为1)以及rt发送到bc数据是否已经被取出标记fetchflag(取出为0,未取出标记为1),以上结构体内容为管理表需要管理的内容。

step2:管理表状态初始化,将所有的状态清0,进行1553b总线启动的初始化工作。

定义一个结构体数组ctrltab[64],数组长度为64,用这个结构体数组来管理消息空间,在使用之前先使用memset指令对64个结构体数组空间进行清零。

step3:对内存管理空间进行初始化操作,初始化的过程中,根据具体总线通讯的需求,将对应的rt节点号rtn、rt子地址subrtn、消息传递的方向和消息地址已注册的状态,分别写入到结构体数组中。

step4:进行系统的数据传输工作,如果传输方向是bc到rt方向,转到step5,如果传输方向是rt到bc方向,则转到step6;

step5:对于bc到rt的方向,判断总线数据是否发送完成,同时判断1553b总线的两个消息计数器a和b是否已经达到最大值,这两个条件均达到后,进行发送准备工作,将1553b总线的块状态字寄存器清零,将1553b总线的时标字寄存器清零,填写消息间隔时间值msg_gap1,填写消息块指针,初始化堆栈指针a的起始位置,初始化消息计数器a,初始化堆栈指针b的起始位置,初始化消息计数器b,配置控制字和命令字,将数据写入消息空间数据存储区,启动bc发送;

step6:对于rt到bc的方向,判断总线数据是否发送完成,同时判断1553b总线的两个消息计数器a和b是否已经达到最大值,这两个条件同时满足时,进行发送准备工作,将1553b总线的块状态字寄存器清零,将1553b总线的时标字寄存器清零,填写消息间隔时间值msg_gap2,填写消息块指针,初始化堆栈指针a的起始位置,初始化消息计数器a,初始化堆栈指针b的起始位置,初始化消息计数器b,配置控制字和命令字,将数据写入消息空间数据存储ram区,启动rt发送;

启动rt发送完成后,需要将rt发送到bc数据是否已经被取出标志置为1,此时可以调度系统运行到其他函数。

step7:遍历查询rt发送到bc数据取出标志,对于没取出的rt数据通过1553b总线的块状态字判断数据是否准备好,将准备好的数据取出。

结合图2说明系统消息配置后,进行动态注册与注销的方法,这种方法大大增加了1553b消息传递设计的灵活性。

step11:使用主流程中的结构体定义操作,初始化操作。如定义一个bc到rt1subrt2的消息管理,rt2subrt2到bc方向的消息管理。分别填充映射表数组的0和1位置,将这两个元素中regflag均置为1。

step12:当bc→rt1subrt2、rt2subrt2到bc两个通路数据传输不再使用,将其注销,注销方法为将这两个内存映射表中数组对应的regflag均置为0。

step13:在系统动态运行中,仍可以增加传输通路,增加方法先遍历管理表中的regflag,找到0的位置,可以填充结构体内容。加入管理表,加入后可以按照主流程中的方法使用。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1