无消息间隔限制的1553B总线通信方法和系统与流程

文档序号:22627260发布日期:2020-10-23 19:35阅读:381来源:国知局
无消息间隔限制的1553B总线通信方法和系统与流程

本发明涉及通信技术领域,具体地,涉及无消息间隔限制的1553b总线通信方法和系统。



背景技术:

航天器功能应用日趋多样化,相应的星务软件设计也越来越复杂。如何简化软件设计逻辑,提升软件性能和运行效率,成为了当前星务软件设计的挑战。

航天器各模块之间的数据通信,是航天器在轨运行的主要信息流之一。数管计算机通过串行总线与各模块连接,通过数据采集和指令分发等与各模块之间进行数据交互。

mil-std-1553b是一种数字式时分制串行数据总线,具有高可靠、抗干扰能力强、灵活、速率较高、扩充和维护简便等特点,因而被广泛应用于国内外航空和航天电子系统的通信网络的设计中。1553b总线的传输协议为命令/响应方式,数据传输的最小单位为“总线消息”,所有的消息传输均由bc(总线控制器)发出命令,rt(远程终端)响应。

在实际型号应用中,通常将数管计算机设计为bc,各子系统单机作为rt,信息流由数管计算机星务软件统一协调管理。由于各模块之间的软硬件性能差异性,若数管计算机星务软件不对总线消息时序加以控制,则不可避免的会出现因消息间隔过短而导致丢消息的情况。数管计算机星务软件作为bc端,通常统一设计所有相邻消息的间隔;对与同一个rt设备的相同rt子地址的消息,控制一个或多个周期只发送一条,这些因素严重影响了总线通信的效率和星务软件的性能。

因此,找到一种既不需要考虑相邻消息的间隔,又不需要考虑同一种数据的收发间隔的1553b总线通信软件设计方法,成为了现今航天通信网络设计亟需解决的问题。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种无消息间隔限制的1553b总线通信方法和系统。

第一方面,本发明提供一种无消息间隔限制的1553b总线通信方法,应用在包含总线控制器bc和远程终端rt的通信系统中,所述方法包括:

步骤1:设置bc向rt发送的rt子地址为循环缓冲模式和非中断方式接收模式;其中,bc向rt发送的数据的消息内容包括:数据有效标志和数据有效内容;

步骤2:所述rt采用查询的方式接收所述bc发送的数据;

步骤3:若所述bc发送的数据中包含数据有效标志,则所述rt读取所述数据有效内容。

可选地,在步骤1之前,所述方法还包括:

对1553b总线的高层通信协议进行修改,约定bc向rt发送的数据的数据类型、数据长度,以及消息内容格式;其中,所述消息内容格式包括:1个字节长度的数据有效标志+数据有效内容。

可选地,在步骤2之前,所述方法还包括:

通过rt软件中自动过滤所述rt子地址接收的非法的消息,以及对查找表指针进行复位维护。

可选地,所述方法还包括:

当rt通过rt子地址向bc发送数据时,设置rt向bc发送的rt子地址为消息结束中断模式;并在中断服务子程序中采用遍历消息堆栈的方式获取消息命令字。

可选地,所述步骤2包括:

rt根据循环缓冲中收到的数据有效标志,判断当前是否收到新的数据;

在处理完每一条数据之后,将缓冲区中数据有效标志清除。

第二方面,本发明提供一种无消息间隔限制的1553b总线通信系统,包括存储器和至少一个处理器,所述存储器中存储有计算机程序,当所述处理器调用所述存储器中存储的计算机程序时,所述处理器执行如第一方面中任一项所述的无消息间隔限制的1553b总线通信方法。

与现有技术相比,本发明具有如下的有益效果:

本发明提供的无消息间隔限制的1553b总线通信方法和系统,解决了当总线控制器bc发送消息间隔过短时,导致远程终端rt接收消息中断丢失或数据被覆盖,从而导致丢消息的异常问题。可以不用再对总线消息间隔加以限制,不仅提升了1553b总线通信的可靠性,还简化了bc软件的设计逻辑,提升了软件性能和通信效率。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明实施例一提供的无消息间隔限制的1553b总线通信方法的流程图;

图2为本发明实施例二提供的无消息间隔限制的1553b总线通信方法的流程图;

图3为rt软件处理接收消息流程图;

图4为rt软件中断服务子程序解析发送消息流程图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

图1为本发明实施例一提供的无消息间隔限制的1553b总线通信方法的流程图,其提供了在总线控制器bc软件发送或取数的消息间隔较短,而远程终端rt软件中断响应及数据处理存在延时,从而导致消息中断丢失或数据被覆盖的矛盾的解决方法。具体地,如图1所示,本实施例中的方法可以包括:

步骤s101:设置bc向rt发送的rt子地址为循环缓冲模式和非中断方式接收模式;其中,bc向rt发送的数据的消息内容包括:数据有效标志和数据有效内容;

步骤s102:rt采用查询的方式接收bc发送的数据;

步骤s103:若bc发送的数据中包含数据有效标志,则rt读取数据有效内容。

在步骤s102中,rt根据循环缓冲中收到的数据有效标志,判断当前是否收到新的数据;在处理完每一条数据之后,将缓冲区中数据有效标志清除。

示例性的,在步骤s101之前,方法还包括:对1553b总线的高层通信协议进行修改,约定bc向rt发送的数据的数据类型、数据长度,以及消息内容格式;其中,消息内容格式包括:1个字节长度的数据有效标志+数据有效内容。

示例性的,在步骤s102之前,方法还包括:通过rt软件中自动过滤rt子地址接收的非法的消息,以及对查找表指针进行复位维护。

示例性的,方法还包括:当rt通过rt子地址向bc发送数据时,设置rt向bc发送的rt子地址为消息结束中断模式;并在中断服务子程序中采用遍历消息堆栈的方式获取消息命令字。

本实施例解决了当总线控制器bc发送消息间隔过短时,导致远程终端rt接收消息中断丢失或数据被覆盖,从而导致丢消息的异常问题。可以不用再对总线消息间隔加以限制,不仅提升了1553b总线通信的可靠性,还简化了bc软件的设计逻辑,提升了软件性能和通信效率。

图2为本发明实施例二提供的无消息间隔限制的1553b总线通信方法的流程图,如图2所示,本实施例中的方法可以包括:

步骤s1:选定一种目前航天型号通用的1553b总线高层通信协议。

具体地,通过高层通信协议,约定bc与各rt之间的数据传输协议。例如,约定bc与rt地址5设备的协议如下:rt子地址1用于bc往rt发送遥控指令;rt子地址2用于rt往bc传输遥测参数。

步骤s2:针对bc往rt发送数据的某个rt子地址,约定其传输的数据类型及长度,约定消息内容格式为:数据有效标志(1个字)+数据有效内容。与原总线通信协议相比,在数据有效内容前新增了1个字的数据有效标志用于数据查询;通常应限定消息数据内容的长度,便于非法化设置和有效标志位存储地址计算。

具体地,在步骤s2中,约定遥控指令的传输格式为数据有效标志(1个字)+数据有效内容(1个字);例如约定0x55aa标识数据有效,其余表示数据无效。

步骤s3:rt软件设置该接收子地址为循环缓冲、非中断方式接收模式;

具体地,在步骤s3中,rt软件设置接收子地址的控制字为接收128字循环缓冲、非中断模式,并设置其查找表,即数据接收起始地址。与通过单消息结束中断的方式接收并响应总线数据相比,rt软件采用循环缓冲、非中断、查询数据有效标志的方式处理接收的总线数据,可以避免因消息间隔过短,导致消息中断丢失,或者前面的消息数据未来得及处理就被后面新收到的消息数据覆盖的问题。

本实施例中,由于rt软件设置采用循环缓冲的方式而不是单消息的方式接收数据,rt软件不干预接收数据查找表指针,而是随着数据接收由芯片自动往后递增或回卷,因此未来得及处理的数据不会被覆盖;由于采用的是查询的方式处理接收数据,因此也不存在数据接收中断丢失的问题。

步骤s4:出于可靠性设计的目的,远程终端rt软件应设置1553b总线芯片通过非法化功能自动过滤该rt子地址接收的非法的消息,且不定期的对其查找表指针进行复位维护;

具体地,在步骤s4中,rt软件配置使能1553b总线非法化功能,设置接收子地址只有接收长度字为2的消息才合法,其余的长度的消息均非法,并设置不接收、存储数据长度非法的消息数据;rt软件在通信空闲时,复位接收子地址的查找表即数据接收起始地址。

本实施例中,由于rt软件不干预接收数据的查找表指针,为避免接收长度错误的数据将数据存储地址打乱,因此需要通过非法化功能确保接收消息的完整性和正确性;在通信空闲时对接收rt子地址查找表进行维护,避免错误累计。

步骤s5:rt软件采用查询的方式处理接收的消息,若查询到效标志有效,则读取后面的消息数据并处理,然后继续向后查询,直到查询到下一条数据有效标志为无效为止。

具体地,在步骤s5中,在软件主流程处理遥控指令时,查询循环缓冲区中下一条遥控指令数据有效标志是否有效,若是0x55aa即有效,则读取后面一个字的遥控指令并处理,并清除数据有效标志为0即无效;接着继续往后查询,直到查询到标志无效为止,并记录下一条消息的数据有效标志的地址。具体流程如图3所示。

步骤s6:针对bc向rt取数(即rt往bc发送数据)的某个rt子地址,rt软件配置该发送rt子地址为消息结束中断模式,在中断服务子程序中采用遍历消息堆栈的方式获取消息命令字。

具体地,在步骤s6中,rt软件设置rt子地址的控制字为消息结束中断方式。中断服务子程序处理时,读取堆栈指针寄存器获取当前消息堆栈的栈顶位置,遍历本次中断与上次中断期间的消息堆栈中存储的消息;根据1553b总线芯片的特性,按照每条消息4个字的格式对其进行解析,其中第3个字即为消息命令字;解析命令字,若为发送子地址2消息即发送遥测数据结束中断,则软件适时的更新下一包遥测数据;具体流程如图4所示。如果采用中断读命令字寄存器的方式处理发送消息,当相邻的两条消息间隔过短时,rt软件可能因中断读取消息命令字寄存器的延时大于消息传输间隔,从而导致前一条消息的命令字尚未来得及读取就被后一条消息的命令字覆盖,进而导致前一条消息丢失的问题。采用遍历消息堆栈的方式获取消息命令字,可以确保所有的发送消息都能得到处理。

本实施例中,由于在rt软件处理向bc发送消息结束中断时,采用在中断服务子程序中遍历消息堆栈的方式获取当前已接收消息的命令字,从而避免因消息间隔过短,导致中断丢失或消息命令字寄存器被覆盖的问题。

步骤s7:bc软件向远程终端rt发送数据或接收数据时,不需要对相邻的消息间隔进行控制;向远程终端某rt子地址发送数据时,不需要对消息间隔进行时序控制,可以连续向同一个rt子地址发送多条消息。

具体地,在步骤s7中,可以保留原有的bc软件处理方式,也可以对其进行优化,删除对消息间隔的限制。bc软件在向rt地址设备发送消息时,不需要限定相邻两条消息的间隔,可以毫无延时的连续启动数据发送和接收消息;bc软件可以一个周期向rt地址设备的rt子地址连续发送多条遥控指令,不需要控制一个周期只发送一条。

本实施例中,当rt软件处理总线消息不受消息间隔限制时,bc软件就不需要对消息间隔进行控制,简化了bc软件的时序控制逻辑。因此,bc软件可以向同一个rt设备不论是发送数据还是读取数据,不论是处理不同的rt子地址消息还是处理同一个rt子地址的消息,都不受消息间隔的限制。

本实施例,通过修改高层通信协议,在有效数据内容前增加消息有效标志;rt软件设置接收子地址为循环缓冲、非中断模式,设置发送子地址为消息结束中断模式;rt软件处理接收消息时,采用查询循环缓冲中数据有效标志的方式;rt软件处理发送消息时,采用中断服务子程序遍历消息堆栈的方式;bc软件处理数据时,可以不用再对总线消息间隔加以限制。采用如上方法,不仅提升了1553b总线通信的可靠性,还简化了bc软件的设计逻辑,提升了软件性能和通信效率。

综上,本发明与现有的1553b总线通信软件设计相比,利用本发明,解决了当总线控制器bc向同一个远程终端rt发送消息间隔过短时,导致rt接收消息中断丢失或数据被覆盖,从而导致丢消息的异常问题;简化了bc软件的消息传输时序逻辑,优化了软件性能。

需要说明的是,本发明提供的所述无消息间隔限制的1553b总线通信方法中的步骤,可以利用所述无消息间隔限制的1553b总线通信系统中对应的模块、装置、单元等予以实现,本领域技术人员可以参照所述系统的技术方案实现所述方法的步骤流程,即,所述系统中的实施例可理解为实现所述方法的优选例,在此不予赘述。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

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