技术领域
本发明涉及一种1553B总线远程终端故障检测及处理方法和系统,属于卫星数据传输网络领域。
背景技术
在当前的卫星总体设计中,1553B总线已经广泛应用于整星通讯网络和分系统内部通讯网络。借助于1553B总线,可实现整星中心控制单元与各个远程终端(分系统计算机)、分系统计算机与其各个远程终端(分系统的下位机)之间的数据、指令的接收与发送。
根据相关总线通讯协议,这些远程终端的发送、接收子地址数目普遍较多。这些子地址在经过总线芯片初始化的地址配置后,要持续存储待发送或接收的数据。若在卫星长期运行过程中,因为空间单粒子效应或其他原因,这些子地址对应的RAM(Random AccessMemory,随机存储内存)区若出现读、写错误,将会直接导致收发消息的处理错误,进而可能影响到整星的正常功能的运行。对于远程终端的RAM区故障,现有的方法大多是地面监控人员根据相关遥测量数据判断是否异常,然后通过上注遥控指令进行故障处理。这过程很依赖地面人员对数据监测的全面性和处理的及时性。为此,需要设计一种能满足用户需求的具有自主性的故障检测及处理方法。
发明内容
本发明要解决的技术问题是:克服现有技术的不足,本发明提供了一种基于RAM自检的1553B总线远程终端故障检测及处理方法和系统。该方法首先根据用户需求和系统资源,对远程终端进行待检RAM区和备选RAM区的配置,然后对待检RAM区进行读写自检,若检测出有故障,则用无故障的备选RAM区替换,以消除总线远程终端内存故障,提高系统1553B通讯的可靠性安全性。
本发明所采用的技术方案是:一种基于RAM自检的1553B总线远程终端故障检测及处理方法,包括步骤如下:
步骤1、将待检RAM以数组形式配置为数组A;
数组A中的数组元素是从所有使用的RAM区中,选出需要检测的各块RAM区首地址;
每块RAM区大小设置为32字;数组A的数组长度指需要检测的32字长度的RAM区总块数;
步骤2、配置备选RAM区数组为数组B;
数组B中的数组元素指还未使用可供替换的各块RAM区首地址,每块RAM区大小与待检RAM区的元素大小一致;数组B的数组长度代表未使用可供替换的32字长度的RAM区总块数;
步骤3、对待检RAM区逐个进行RAM区自检,若全部都完成了RAM区自检,则方法结束,否则,转入步骤4;
步骤4、对选定的RAM区进行自检,具体步骤如下:
按照如下自检方法对选定的RAM区的32个字进行遍历,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:
以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若读出值不是0xFFFF,则记为故障,结束自检;若读出值是0xFFFF,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若读出值不是0x0000,则记为故障,结束自检;若读出值是0x0000,则继续对下一个字进行自检操作;
步骤5、若选定的RAM区自检结果是正常,则转入步骤3,继续对下一个RAM区进行检测判断,否则转入步骤6,进行备选RAM区检测和替换操作;
步骤6、对备选的RAM区从搜索起点开始进行自检,搜索起点初始值是数组B的第一个元素,具体步骤如下:
按照如下自检方法对备选的RAM区32个字进行遍历,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若读出值不是0xFFFF,则记为故障,结束自检;若读出值是0xFFFF,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若读出值不是0x0000,则记为故障,结束自检;若读出值是0x0000,则继续对下一个字进行自检操作;
步骤7、若备选RAM区自检结果为正常,则将有故障的待检RAM区替换为该备选RAM区地址,同时将该备选块的后一个作为下次备选区搜索起点;若备选RAM区自检结果不是正常,则继续在备选区里搜索,寻找自检正常的区。
一种基于RAM自检的1553B总线远程终端故障检测及处理系统,包括:
第一模块、用于将待检RAM以数组形式配置为数组A;数组A中的数组元素是从所有使用的RAM区中,选出需要检测的各块RAM区首地址;
第二模块、用于配置备选RAM区数组为数组B;数组B中的数组元素指还未使用可供替换的各块RAM区首地址,每块RAM区大小与待检RAM区的元素大小一致;
第三模块、用于对待检RAM区逐个进行RAM区自检:对选定的RAM区进行自检,若选定的RAM区自检结果是正常,则继续对下一个RAM区进行检测判断;否则,对备选的RAM区从搜索起点开始进行自检:若备选RAM区自检结果为正常,则将有故障的待检RAM区替换为该备选RAM区地址,同时将该备选块的后一个作为下次备选区搜索起点;若备选RAM区自检结果不是正常,则继续在备选区里搜索,寻找自检正常的区。
每块待检RAM区大小设置为32字;数组A的数组长度指需要检测的32字长度的RAM区总块数;数组B的数组长度代表未使用可供替换的32字长度的RAM区总块数。
第三模块中,对选定的RAM区进行自检的具体步骤如下:
按照如下自检方法对选定的RAM区的32个字进行遍历,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:
以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若读出值不是0xFFFF,则记为故障,结束自检;若读出值是0xFFFF,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若读出值不是0x0000,则记为故障,结束自检;若读出值是0x0000,则继续对下一个字进行自检操作;
对备选的RAM区从搜索起点开始进行自检的具体步骤如下:
按照如下自检方法对备选的RAM区32个字进行遍历,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若读出值不是0xFFFF,则记为故障,结束自检;若读出值是0xFFFF,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若读出值不是0x0000,则记为故障,结束自检;若读出值是0x0000,则继续对下一个字进行自检操作。
本发明与现有技术相比的优点在于:
(1)本发明的方法适应性强,待检RAM及备选RAM是可配置的,数组的配置形式也有利于在轨长期工作期间,根据需要进行在轨修改,具备很好的可扩展性;
(2)本发明的方法对于待检RAM区和备选RAM区的自检都是自主进行的,相比于人工观察遥测量进行相关判断,可避免人工操作错误,提高了故障检测及处理的效率。
附图说明
图1为故障检测及处理主流程图;
图2为RAM区自检流程图。
具体实施方式
下面结合附图对本发明进行进一步说明。
该方法主要包括待检RAM及备选RAM配置、RAM自检、故障RAM替换三部分。
1、待检RAM及备选RAM配置
1)待检RAM是以数组形式配置,记为数组A。数组元素是从所有使用的RAM区中,依据用户需求选出需要检测的各块RAM区首地址。每块RAM区大小一般设计为32字。RAM区检测就是依次对以数组元素里的RAM区首地址开始的32字内存范围进行检测。数组A长度就是需要检测的32字长度的RAM区总块数。
2)备选RAM是以数组形式配置,记为数组B。数组元素是系统还未使用可供替换的各块RAM区首地址,每块RAM区大小应与待检RAM区的元素大小一致,一般也为32字。数组长度代表未使用可供替换的32字长度的RAM区总块数。
3)对于使用了循环缓冲机制的1553B消息来说,其对应的RAM大小为128字、256字、512字或者更大。对于这类RAM做为待检RAM时,可以根据系统空余RAM的大小设计1个或者多个备选RAM区,其大小与待检RAM区大小一致,其起始地址应符合循环缓冲区起始地址的一般规则,即确保起始地址可被缓冲区长度大小整除。
2、RAM自检:
RAM自检分为待检RAM区自检和备选RAM区自检。
待检RAM区自检是通过对RAM区读写比对判断这些使用的内存区域是否有内存读写故障,若无故障则无需后续操作,若有故障即可进行后续备选RAM区的自检及替换操作。
备选RAM自检是在待检RAM检出故障后,在准备对故障RAM替换前,需要确认下替换用的备选区域是否正常,若正常则执行替换,若不正常则对下一个备选区域进行判断,直到找到一个正常的区域或者搜索完所有区域。
具体自检方法是对每块RAM区以字为单位遍历,先写入0xFFFF,然后以字为单位进行读操作,判断读出值是否是0xFFFF,若不是,则记该块RAM为故障并终止遍历该块RAM,若是,则再以字为单位写入0x0000,然后以字为单位进行读操作,判断读出值是否是0x0000,若不是,则记该块RAM为故障并终止遍历该块RAM,若是则对下一个字进行如上判断,直至该块RAM检测完毕。
3、故障RAM替换
通过RAM自检,判断出数组A中某个待检RAM区有故障后,在数组B中从搜索起点开始判断备选RAM是否正常(搜索起点初始值是数组第一个元素),若正常则将数组B中该块备选RAM的地址替换数组A中故障RAM的地址,同时将数组B的该备选块的后一个元素做为下次备选区搜索起点;若当前备选RAM不正常,则对下一个备选RAM进行判断,直到找到一个自检正常的RAM或者搜索完所有备选区域。
一种基于RAM自检的1553B总线远程终端故障检测及处理系统,包括:
第一模块、用于将待检RAM以数组形式配置为数组A;数组A中的数组元素是从所有使用的RAM区中,选出需要检测的各块RAM区首地址;
第二模块、用于配置备选RAM区数组为数组B;数组B中的数组元素指还未使用可供替换的各块RAM区首地址,每块RAM区大小与待检RAM区的元素大小一致;
第三模块、用于对待检RAM区逐个进行RAM区自检:对选定的RAM区进行自检,若选定的RAM区自检结果是正常,则继续对下一个RAM区进行检测判断;否则,对备选的RAM区从搜索起点开始进行自检:若备选RAM区自检结果为正常,则将有故障的待检RAM区替换为该备选RAM区地址,同时将该备选块的后一个作为下次备选区搜索起点;若备选RAM区自检结果不是正常,则继续在备选区里搜索,寻找自检正常的区。
每块待检RAM区大小设置为32字;数组A的数组长度指需要检测的32字长度的RAM区总块数;数组B的数组长度代表未使用可供替换的32字长度的RAM区总块数。
第三模块中,对选定的RAM区进行自检的具体步骤如下:
按照如下自检方法对选定的RAM区的32个字进行遍历,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:
以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若读出值不是0xFFFF,则记为故障,结束自检;若读出值是0xFFFF,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若读出值不是0x0000,则记为故障,结束自检;若读出值是0x0000,则继续对下一个字进行自检操作;
对备选的RAM区从搜索起点开始进行自检的具体步骤如下:
按照如下自检方法对备选的RAM区32个字进行遍历,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若读出值不是0xFFFF,则记为故障,结束自检;若读出值是0xFFFF,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若读出值不是0x0000,则记为故障,结束自检;若读出值是0x0000,则继续对下一个字进行自检操作。
实施例:
如图1,一种基于RAM自检的1553B总线远程终端故障检测及处理方法,包括步骤如下:
步骤1、待检RAM是以数组形式配置,记为数组A。数组元素是从所有使用的RAM区中,依据用户需求选出需要检测的各块RAM区首地址。每块RAM区大小一般设计为32字。RAM区检测就是依次对以数组元素里的RAM区首地址开始的32字内存范围进行检测。数组A长度就是需要检测的32字长度的RAM区总块数;
步骤2、根据系统资源,配置备选RAM区数组,记为数组B。数组元素是系统还未使用可供替换的各块RAM区首地址,每块RAM区大小应与待检RAM区的元素大小一致,一般也为32字。数组长度代表未使用可供替换的32字长度的RAM区总块数;
步骤3、对待检RAM区逐个进行RAM区自检,若全部都完成了自检,转步骤8,否则转步骤4;
步骤4、对选定的RAM区进行自检,具体步骤见图2:
按照如下自检方法,对RAM区32个字进行遍历,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若不是,则记为故障,结束自检;若是,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若不是,则记为故障,结束自检;若是,则继续对下一个字进行自检操作。
步骤5、若选定的RAM区自检结果是正常,则转步骤3,继续对下一个RAM区进行检测判断,否则转步骤6,进行备选RAM区检测和替换操作。
步骤6、对备选的RAM区从搜索起点(搜索起点初始值是数组第一个元素)开始进行自检,具体步骤见流程图2:
按照如下自检方法,对RAM区32个字进行遍历,,若遍历完成,则置自检结果为正常,结束自检;
自检方法为:以字为单位,先写入0xFFFF,然后进行读操作,判断读出值是否是0xFFFF,若不是,则记为故障,结束自检;若是,则再写入0x0000,然后进行读操作,判断读出值是否是0x0000,若不是,则记为故障,结束自检;若是,则继续对下一个字进行自检操作。
步骤7、若备选RAM区自检结果为正常,则将有故障的待检RAM区替换为该备选RAM区地址,同时将该备选块的后一个作为下次备选区搜索起点;若不是正常,则继续在备选区里搜索,寻找自检正常的区;
步骤8、方法结束。
本发明未详细说明部分属于本领域技术人员公知技术。
机译: 基于地址无响应和并行总线系统访问的板载故障检测器
机译: 基于分布式总线的信息处理方法,装置及系统
机译: 基于分布式总线的信息处理方法,装置及系统