串行总线故障模拟系统及模拟方法与流程

文档序号:16207739发布日期:2018-12-08 07:19阅读:219来源:国知局
串行总线故障模拟系统及模拟方法与流程

本发明涉及总线故障模拟系统及模拟方法,属于计算机可靠性能评价技术领域。

背景技术

目前,计算机在工业和军事领域之中已经得到了非常广泛的应用,但是应用在工业和军事领域的计算机经常因为恶劣的环境的影响而发生故障,造成巨大的经济损失甚至是人员伤亡。所以,在这些领域当中,高可靠性的系统就显得尤为重要。

rs422/rs485等总线因其高实时性和灵活性等特点在工业通信系统之中得到广泛采用。而在实际的应用之中由于总线的通信过程经常受到恶劣的外界环境的影响,系统内和系统之间发生故障的概率非常高,对计算机的可靠性产生了较大的影响,成为了提高计算机可靠性的瓶颈,总线的通信协议和通信稳定性的研究和测试成为了工业领域的新的研究热点,因此开发出串行rs422/rs485总线的故障模拟系统对于验证计算机的容错性和提高计算机的可靠性显得很有必要。

故障注入技术作为系统的容错性能和可靠性能的测试方法,一直被用于高可靠性系统设计时的辅助验证;总线作为连接各部件的公共传输介质,是故障注入的重要选择点之一。总线上的注入故障,可以覆盖众多层级的故障类型,并且方便控制,同时总线实时性要求保证了故障注入对目标系统的影响降到最低。

国内外常用的总线故障注入方法有软件实现和硬件实现两大方向。软件实现的故障注入常在目标系统总线上嵌入一个设备,在嵌入式设备上采用实时操作系统,如vxworks、μc/osii等,在实时操作系统中用软件对经过嵌入式设备的总线数据注入故障。硬件实现的故障注入常在总线接口上插入一个插座,或在总线上嵌入一个设备,在这个插座或设备上基于fpga/cpld对经过的总线信号注入故障。

由于总线实时性、分层协议等特性的约束,常用的软硬件实现方式都有其缺点。软件故障注入可以注入复杂的故障,不破坏总线数据帧的结构,能轻松把故障引入计算机系统内部中去。然而软件的一步操作往往需要很多步硬件操作来支持,实时性相对于硬件会大打折扣,即使采用实时操作系统也无法满足某些实时性要求高的总线。常用的硬件故障注入,直接把总线信号固定为0或固定为1,极有可能破坏数据帧结构,这种情况下总线接口会认为是错误信息直接屏蔽,故障也就无法进入计算机系统内部。



技术实现要素:

本发明为解决现有总线故障注入用以验证计算机可靠性时,实时性低的问题,提供了串行总线故障模拟系统及模拟方法。

本发明所述串行总线故障模拟系统,包括控制机和故障注入器;

所述控制机根据用户要求生成故障命令,将故障命令发送给故障注入器,接收故障注入器反馈的注入结果和目标系统状态,并将其反馈给用户;

所述故障注入器采用现场可编程逻辑器件fpga,根据来自控制机的故障命令对故障注入所需的所有参数进行设置,在接收到来自于串行总线的数据后,根据设置好的参数向数据当中注入故障,并将修改后的数据发送给串行总线,将得到的注入结果和目标系统状态返回给控制机。

进一步的,所述控制机包括:参数生成模块、命令生成模块、通讯模块以及控制机结果回收模块;

参数生成模块,根据用户要求生成能被故障注入器识别的故障参数;

命令生成模块,从参数生成模块处获取所有生成的故障参数值,将这些值进行打包,打包成的形式为故障命令,并将所有的故障命令都存放在发送数据缓存当中,等待通讯模块发送给故障注入器;

通讯模块,与故障注入器进行通讯,将命令生成模块所生成的故障命令的集合发送给故障注入器,将故障注入器返回的注入结果和目标系统状态传送到结果回收模块;

控制机结果回收模块,通过通讯模块获得故障注入结果和目标系统状态,并将其反馈给用户。

进一步的,所述故障注入器包括:串口通讯模块、主控模块、故障注入模块、时间控制模块、总线通讯模块以及注入器结果回收模块;

所述串口通讯模块,用于与控制机进行通讯;串口通讯模块接收来自控制机的故障命令,将故障命令传给主控模块,并将注入器结果回收模块发送的注入结果和目标系统状态传递到控制机;

所述主控模块,根据串口通讯模块传递的故障命令设置故障注入所需的所有参数,并根据设置的参数,对故障注入模块、时间控制模块以及总线通讯模块进行控制;

所述故障注入模块,接收时间控制模块发送的允许信号以及主控模块发送的参数信息,在正确的时间根据设置好的参数向总线通讯模块收发的数据当中注入故障;

所述时间控制模块,根据主控模块中设置的参数,向故障注入模块发送注入允许信号;

所述总线通讯模块,用于故障注入器与串行总线之间的通讯,在注入故障时,总线通讯模块便将经故障注入模块修改后的数据发送到串行总线上;在不注入故障时,总线通讯模块便直接收发串行总线之上所传递的数据;

所述注入器结果回收模块,负责将得到的注入结果和目标系统状态返回给控制机。

本发明所述串行总线故障模拟方法,通过以下技术方案实现:

步骤一、控制机打开串口,发送寄存器复位命令;

步骤二、用户在控制机上设置故障注入相关信息;

步骤三、所述控制机根据用户要求生成故障命令,将故障命令发送给故障注入器;

步骤四、所述故障注入器,根据来自控制机的故障命令对故障注入所需的所有参数进行设置;

步骤五、故障注入器在接收到来自于串行总线的数据后,根据设置好的参数向数据当中注入故障,并将修改后的数据发送给串行总线;在注入故障的同时,进行注入结果和目标系统状态的数据采集;

步骤六、故障注入器将得到的注入结果和目标系统状态返回给控制机;控制机将其反馈给用户。

本发明最为突出的特点和显著的有益效果是:

本发明串行总线故障模拟系统主要分为控制机和故障注入器两部分。其中,控制机提供人机交互方式,方便用户生成故障模式,发送给故障注入器,并获取注入的结果。故障注入器接收来自控制机的故障命令,存储到寄存器当中,设置总线的连接方式,注入用户选择的故障,并将注入结果及目标系统状态返回给控制机。串行总线故障模拟系统向目标系统间或系统内部的总线传输的数据当中引入错误,模拟外界环境所引发的故障,验证计算机可靠性能实时性较高,相比现有技术提高约25%,时效性具体如下特点:

具有图形化界面的人机交互方式,故障注入模拟系统所产生的故障信号可以通过可视界面的方式方便地设定;故障注入的开始、停止均能被用户控制;对注入结果及目标系统状态回收分析,可以对故障注入的结果和有效性的进行判定;故障注入系统设置故障注入持续时间可选,可注入永久型、瞬时型、间歇型故障;故障注入器使用fpga实现,所以响应速度快,且能够在线地控制实现故障注入。

附图说明

图1为本发明系统结构示意图;

图2为本发明中串口通讯模块结构示意图;

图3为本发明方法流程图。

具体实施方式

具体实施方式一:结合图1对本实施方式进行说明,本实施方式给出的串行总线故障模拟系统,包括控制机和故障注入器;

所述控制机提供人机交互方式,根据用户要求生成故障命令,将故障命令发送给故障注入器,接收故障注入器反馈的注入结果和目标系统状态(即,总线在故障注入过程中的状态),并将其反馈给用户;

所述故障注入器采用现场可编程逻辑器件fpga,根据来自控制机的故障命令对故障注入所需的所有参数进行设置,在接收到来自于串行总线的数据后,根据设置好的参数向数据当中注入故障,并将修改后的数据发送给串行总线,将得到的注入结果和目标系统状态返回给控制机。

具体实施方式二:本实施方式与具体实施方式一不同的是,所述控制机包括:参数生成模块、命令生成模块、通讯模块以及控制机结果回收模块;

参数生成模块,根据用户要求生成能被故障注入器识别的故障参数;参数生成模块应针对故障注入器内部所有寄存器都生成一个特定的值;在故障注入过程中,参数生成模块只需要生成与本次注入相关的寄存器的值即可。

命令生成模块,从参数生成模块处获取所有生成的故障参数值,将这些值进行打包,打包成的形式为故障命令,并将所有的故障命令都存放在发送数据缓存当中,等待通讯模块发送给故障注入器;

通讯模块,负责根据用户所设置好的串口的通讯信息与故障注入器进行通讯,将命令生成模块所生成的故障命令的集合发送给故障注入器,将故障注入器返回的注入结果和目标系统状态传送到结果回收模块;

控制机结果回收模块,通过通讯模块获得故障注入结果和目标系统状态,并将其反馈给用户,以供用户进行分析使用,控制机根据接收到的数据进行对比查看是否注入成功。

其他步骤及参数与具体实施方式一相同。

具体实施方式三:本实施方式与具体实施方式一或二不同的是,所述故障注入器包括:串口通讯模块、主控模块、故障注入模块、时间控制模块、总线通讯模块以及注入器结果回收模块;

所述串口通讯模块,串口通讯模块是故障注入器与控制机间的连接通道,用于与控制机进行通讯;串口通讯模块接收来自控制机的故障命令,将故障命令传给主控模块,并将注入器结果回收模块发送的注入结果和目标系统状态传递到控制机;

串口通讯模块分为三部分:接收数据子模块、数据处理子模块以及发送数据子模块,如图2所示。接收数据子模块,负责接收从控制机发送的故障命令并解析成数据帧后提供给数据处理模块,同时接收注入器结果回收模块发送的注入结果和目标系统状态到发送数据子模块。数据处理子模块接收由接收数据子模块发送的数据帧之后根据预设的通讯协议对应进行操作处理,通讯协议如表1所示。发送数据子模块将数据处理子模块处理的数据给主控模块进行读或者写寄存器,并且发送数据子模还将接收数据子模块传来的注入结果和目标系统状态发送到控制机。

表1串口通讯内部协议

所述主控模块,是故障注入器的控制中心,根据串口通讯模块传递的故障命令设置故障注入所需的所有参数,并根据设置的参数,对故障注入模块、时间控制模块以及总线通讯模块进行控制;主控模块存储了各个类型串行总线故障注入时所需要的所有的参数,以寄存器的方式进行存储;具体包括:

故障部位寄存器,负责记录故障注入所在数据帧的位置;

间隔时间寄存器,负责记录间歇型故障注入两次之间的间隔时间;

持续时间寄存器,负责记录瞬时型故障注入和间歇型故障注入的持续时间;

注入次数寄存器,负责记录间歇型故障注入的注入次数;

时间类型寄存器,负责记录每一次注入的时间类型,有瞬时型、间歇型和永久型。

故障注入模块是硬件故障注入器的核心。所述故障注入模块,接收时间控制模块发送的允许信号以及主控模块发送的参数信息,在正确的时间根据设置好的参数向总线通讯模块收发的数据当中注入故障;故障注入模块根据故障部位寄存器中的值来判断注入何种故障。故障部位寄存器为16位寄存器,其中所存储的数据代表着向数据帧当中的每一位数据位注入何种类型的故障的寄存器。一共16位,从低到高每两位代表一位数据位注入的故障类型,即第0位和第1位代表的数据帧中的第0位所注入的故障类型,第2位和第3位代表数据帧中的第1位所注入的故障类型,以此类推。

所述时间控制模块,根据主控模块中设置的参数,向故障注入模块发送注入允许信号;

时间控制模块控制注入允许信号inj_enable,当用户发送注入命令后,主控模块向相关的时间控制寄存器(时间类型寄存器、持续时间寄存器、间隔时间寄存器和注入次数寄存器)当中写入数值,时间控制模块根据时钟频率控制数值递减,直至为零,同时改变注入允许信号inj_enable的值,以便控制注入的时间。时间控制模块不断的读取每一个时间类型寄存器、持续时间寄存器、间隔时间寄存器和注入次数寄存器。

所述总线通讯模块,用于故障注入器与串行总线之间的通讯;总线通讯模块直接面向总线收发器,在注入故障时,总线通讯模块便将经故障注入模块修改后的数据发送到串行总线上;在不注入故障时,总线通讯模块便直接收发串行总线之上所传递的数据;

所述注入器结果回收模块,将注入故障前的注入和注入故障后的数据存储到队列当中,并将得到的注入结果和目标系统状态返回给控制机。

其他步骤及参数与具体实施方式一或二相同。

具体实施方式四:结合图3对本实施方式进行说明,本实施方式给出的串行总线故障模拟方法,具体包括以下步骤:

步骤一、控制机打开串口,发送寄存器复位命令;在正式的故障注入前,故障注入系统需要通过自检操作以验证自身的完好性;

步骤二、用户在控制机上设置故障注入相关信息;

步骤三、所述控制机根据用户要求生成故障命令,将故障命令发送给故障注入器;

步骤四、所述故障注入器,根据来自控制机的故障命令对故障注入所需的所有参数进行设置;

步骤五、故障注入器在接收到来自于串行总线的数据后,根据设置好的参数向数据当中注入故障,并将修改后的数据发送给串行总线;在注入故障的同时,进行注入结果和目标系统状态的数据采集;

步骤六、故障注入器将得到的注入结果和目标系统状态返回给控制机;控制机将其反馈给用户。

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

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