一种CAN总线故障模拟系统及故障模拟方法与流程

文档序号:15817906发布日期:2018-11-02 22:49阅读:1029来源:国知局
一种CAN总线故障模拟系统及故障模拟方法与流程

本发明涉及can总线故障模拟系统及故障模拟方法。

背景技术

故障模拟及注入方式是系统可靠性评估方法的一种补充方法,直到20世纪末期才真正成为了评估系统可靠性的一种重要手段。由于国外对故障注入研究起步比较早,对故障注入技术工具的设计方法都领先于国内。

对于系统容错性能的评估,由于不同系统的需求不同,我们采用不同的方法预测系统出错的频率以及恢复的能力,一般分为三类:基于模拟的方法(解析模型法)、基于测试的分析方法(统计分析法)和基于原型系统的故障注入法。与前两种方式相比,故障模拟更加容易实现,人们常用故障注入的手段评测系统的可靠性,最常用的手段包括物理故障注入和模拟故障注入。由于故障注入的位置不同,物理故障注入可细分为硬件故障注入和软件故障注入。

国外就故障注入设备的研发早就趋于成熟,在2003年,zarandihr等人就提出了一种称为sinject的支持多种数字系统的可靠性分析模型的故障模拟工具,该工具提供verilog和vhdl数字电路模型的暂时性和永久性故障模拟。

对于can总线的研究,gessnerd等人曾就航天can总线的物理层故障模拟方法进行了初步的实现,该故障模拟设备以一个故障注入集成设备为中心的星型拓取代了can总线拓扑,故障模拟在节点的can总线控制器和软件上执行,这样使得can总线现场可以更加透明。

对于can总线内部的协议层的研究,cornof等人给出了两个抽象协议层之间是如何相互作用从而使得保证数据传输正确无误,这项技术成功地用于影响can总线动态网络的故障识别上。

国内对故障注入的研究也逐渐兴起。内蒙古大学提出一种非切换式can总线冗余通信系统,描述了系统的双冗余结构,并论述了具体的实现方法,并以j1939为基础,提高系统协议设计的基本原则和冗余信息处理的方法。

北京航空航天大学就双余度can总线测试平台进行研究与设计,基于若干节点的测试环境开发了matlab模拟工具、报文分析工具、故障注入工具。



技术实现要素:

本发明的目的是为了解决现有技术故障注入的操作过程复杂、只能进行物理层故障注入以及不能直接返回故障注入结果的问题,而提出一种can总线故障模拟系统及故障模拟方法。

一种can总线故障模拟系统包括:信息收发模块、故障注入模块和控制软件模块;

所述信息收发模块用于将来自两端的目标机的数据帧进行数字信号和模拟信号的转化;

所述故障注入模块用于根据控制软件模块发送的数据,对can总线的链路层或物理层进行故障注入;

所述控制软件模块用于提供人机交互界面,发送故障注入参数到故障注入模块;所述故障注入参数包括故障注入方式、故障的时间类型、注入位置。

由于星型拓扑结构是的中间集成器的负载比较大,可靠性较低,为了使得传输数据本身的可靠性增加,本发明采用了总线型的拓扑结构,根据can总线中继器的方式,通过在中继器节点处将收到的数据进行故障注入,再发回到各个节点中,从而观察各个节点报文内容的变化判断是否注入成功,这样使得操作简单易行。由于采用了协议层的注入方式,可以对捕获的数据进行实时的测试,基于这种can中继节点的方法,将有权对系统进行查看,协议层的工作机制是可以监控和修改的,也可以决定每个节点发送数据的去向和接收数据的来源。

一种can总线故障模拟方法包括以下步骤:

步骤一:通过检测模块对注入器进行检测,若注入器及通讯链路工作状态正常,则通过注入界面子模块进行故障注入参数设置,通过参数生成模块生成故障注入参数;若注入器及通讯链路工作状态不正常,则调试注入器及通讯链路;

步骤二:将步骤一生成的故障注入参数发送至故障注入器,根据故障注入参数设置故障注入模块中的故障层次类型寄存器,当寄存器的值为0x00时,表示通过链路层故障模块注入链路层层故障,当寄存器的值为0x01时,表示通过物理层故障模块注入物理层故障;

步骤三:通过结果分析模块获取故障注入器的结果。

本发明的有益效果为:

本发明系统采用了集嵌入式硬件注入和软件注入两种方式于一体的方法,实现了向通信系统的协议层和物理层注入不同类型的故障。其中,协议层实现了注入不同时间类型、触发方式和位置的故障,物理层实现了不同时间参数和电平参数的故障。同时,在宿主机端设计了故障控制软件,使用户在使用系统时可以方便的对故障进行设置,简化整个故障注入的操作过程,并能够返回故障注入的结果。

为了验证故障模拟系统的功能,本发明方法搭建了can总线实验环境,并对其进行了故障注入。实验结果表明,系统成功实现了多种故障的注入,满足设计要求。同时能够回收和保存故障注入的结果信息,实时反馈给用户,为can总线容错性能的评价提供了有效的支持。

附图说明

图1为本发明系统功能模块划分图;

图2为本发明系统架构图;

图3为本发明系统工作原理图;

图4为本发明故障注入模块工作原理;

图5为can总线内部fifo结构图;

图6为can总线发送过程业务流程图;

图7为can总线接收过程业务流程图;

图8为故障注入指令格式;

图9为通讯模块状态机;

图10为简化的pcb图;

图11为控制模块状态转换图;图中s0为复位状态,s1为开始命令,s2为瞬时enable,s3为等待停止命令,s4为永久enable,s5为设置计数器,s6为间歇enable,s7为间歇disable;

图12为can总线故障模拟系统整体工作流程图;

图13为系统中断工作流程图;

图14为协议层故障注入逻辑流程图;

图15为物理层故障注入逻辑流程图;

图16为串口流程与测试流程图;

图17为协议层故障注入测试流程图;

图18为集成测试模块划分图。

具体实施方式

具体实施方式一:一种can总线故障模拟系统包括:信息收发模块、故障注入模块和控制软件模块;

所述信息收发模块用于将来自两端的目标机的数据帧进行数字信号和模拟信号的转化;

该模块在can总线之间,负责对总线上的数据进行控制,由于故障注入器是基于协议层先注入的,因此主控模块应用集成can控制器的cpu。

can总线是双向的总线,因此数据的传送需要采用fifo模式才能使得发送和接收不发生冲突。

cpu的内部结构采用的是fifo的结构,在双口ram空间内建立一个环形数据缓冲区,改ram含有读/写双串口,可以使得读/写操作同时进行,不需要时钟仲裁。读寄存器与写寄存器都含有一个计数器——“读指针”和“写指针”,每次操作过后都指向下一个待读/写的地址。该结构中还有一个状态监测模块,来检测缓冲区在读操作的时候是否为空或者写操作的时候是否发生数据超载,其结构如图5所示。

所述故障注入模块用于根据控制软件模块发送的数据,对can总线的链路层或物理层进行故障注入;

故障注入模块是将控制软件发送来的故障参数与故障注入器相互对的过程。当控制软件不发送数据的时候,故障注入器则将can1控制器与can2控制器相连接,将一端发送来的数据通过另一端发送出去,实现双向通信。当控制软件发送来自检信号的时候,观测总线上的数据是否有变化,如果没有变化则表示通讯链路设置成功;当控制软件发送来不同的注入参数时,分别分析不同参数表示的意义来进行不同的故障注入,之后将注入故障的数据帧发送回总线上,并返回给控制软件,每次发送来数据,就判断故障注入参数,进行故障注入,直到关闭控制软件的串口发送数据。

所述控制软件模块用于提供人机交互界面,发送故障注入参数到故障注入模块;所述故障注入参数包括故障注入方式、故障的时间类型、注入位置。

控制软件的功能主要是给用户提供一个良好的人机交互界面,可以接收用户选择的故障类型,并将不同的故障类型转变成故障注入器可以识别的故障参数,用户可以通过自检功能检测系统是否正常工作;同时,控制软件能够接收故障注入器传递回来的数据显示并存入数据库,供用户观察统计比对结果。

本发明系统非功能需求

1.性能需求

性能方面要求can总线故障注入工具支持最高传输速率250千比特每秒(kbit/s);can总线故障注入工具能够对数据场注入故障,同时对至少4字节数据数据进行修改;延时时间范围1微秒(μs)-1毫秒(ms),概率范围1%-100%;瞬时型故障持续时间范围1微秒(μs)-1毫秒(ms);间歇型故障持续时间范围1微秒(μs)-1毫秒(ms),持续时间范围1微秒(μs)-1毫秒(ms),注入次数1-1000次。

2.可靠性需求

系统具有完善的故障模拟功能,采用成熟的技术和先进的设备,具有高度的技术先进性、稳定性,能够通过中继器的方式准确拦截相关数据帧,并对相应数据帧进行故障注入,可靠性比较好。

3.外部接口需求

需要三个九针串口(db-9),即rs-232接口。其中两个两个作为can总线信息收发端口、一个作为故障注入端口。

4.约束需求

系统开发过程和交付文档需要支持can总线2.0b协议版本规范,系统交付时需要有完整的技术说明报告、用户使用报告和方案说明报告。

本发明能够提供一个良好的人际交互界面。具体系统功能模块划分如图1所示。

本发明提出的系统架构如图2所示,阐明了系统的整体工作架构。can总线故障模拟系统可以设计为层次架构,分别是与用户交互的显示层、处理故障的逻辑层和处理数据的数据层。显示层是与用户直接交互的平台,用户可以选择一系列操作,包括设备检测、故障注入、结果分析等。其中,故障注入部分,用户可以自主选择所需要模拟的故障类型和具体参数,包括持续时间、次数、方向、方式等方式。逻辑层作为系统的主要部分,逻辑层包含两个部分,一部分是故障模拟,另一部分是注入结果的处理。故障模拟分为模拟can总线的收发、协议层的故障注入和物理层的故障注入。协议层的故障包含指定故障注入、随机故障注入、延时故障注入和概率故障注入,而物理层则包含固定0、固定、位翻转等。而数据层则包括两部分数据,分别是can总线收发的数据和故障注入的结果的数据和分析的数据。

如图3所示,系统控制软件安装于pc控制端,通过rs232串口通信控制故障注入,can总线数据帧分别由两端的目标机进行收发,数据帧需要经过can收发器进行数字信号和模拟信号的转化,最后通过控制芯片达到另一端的目标机。控制芯片包含两块,分别是can总线控制器芯片和cpld芯片。其中can总线控制芯片在未注入故障时起到了中继器的作用,在需要注入故障时则作为协议层的故障注入器;cpld芯片主要负责物理层的故障注入,所有通过串口输入的信号首先通过cpld芯片,并在芯片内部判定故障的类型是物理层还是协议层,物理层通过对外输出模拟信号从而干扰can总线在物理层的数据传输。

故障注入模块的的工作原理如图4所示,协议层故障注入设备在未收到用户控制软件的指令时作为数据的中继器,能够使can节点与节点之间进行正常的信息收发,当接收到故障注入指令后,协议层芯片能够分析收到的指令,并对接收的数据帧进行相关修改,从而对相关数据帧进行故障注入;物理层故障注入设备的主要用途是根据用户的指令,通过输出口向数据正在传输的总线上发送相应信号,从而干扰总线信号的正常发送,控制软件可以通过串口对物理层故障注入器进行故障类型、时间参数等设置,从而能够注入不同类型的故障。

模拟can数据的收发

该模块在can总线之间负责对总线上的数据进行控制,由于故障注入器是基于协议层先注入的,因此主控模块应用集成can控制器的cpu。我们用路虎开发板作为can控制器进行信号收发,具体can控制器的功能如表1所示。

表3-1can控制器功能

can总线是双向的总线,因此数据的传送需要采用fifo模式才能使得发送和接收不发生冲突。

can总线的发送过程业务流程图如图6所示,当can状态寄存器检测到发送缓冲器空闲的时候,就可以将发送帧的内容写入发送缓冲区中,并将帧的数据段前四位写入tdax寄存器,后四位写入tdbx寄存器中,将帧的id写入tidx寄存器中,设置can命令寄存器置位发送请求,发送缓冲区将根据选定的优先级准备发送排队的报文。

can总线的接收过程业务流程图如图7所示,总线报文采用中断方式接收,当读取中断捕获寄存器icr时,读取接收中断位,如果can控制器读取到接收信息,就将读取的信息存放入canxrda与canxrdb寄存器中,并释放接收缓冲器,设置接收标志,清除中断。

核心函数设计

对于实现协议层故障注入的核心代码包括了三个文件,分别是caninject.c,can.c和uart0.c文件,其中caninject.c相当于是主函数,处理故障注入的核心内容,主要函数如表2所示,can.c文件负责can总线的中继以及设置,详细函数如表3所示,uart0.c是通讯链路的主要模块,负责串口通信,利用串口中断接收来自控制软件的数据和发送故障模拟器的数据,详细函数如表4所示。

表2caninject.c中的主要函数

表3can.c中的主要函数

表4uart0.c中的主要函数

can总线通过串口向控制芯片发送故障注入指令,前台控制软件的参数生成模块根据用户的选择情况生成相应的指令,由于串口发送的数据要求每8位发送一次,所以需要对指令进行设计,从而实现不同情况复杂的故障模拟。

如图3-3所示,协议层故障指令长为五个字节,第一个字节的7-8位定义了故障的时间类型,即瞬时故障或永久故障;5-6位定义了故障的注入位置,即数据场、控制场或仲裁场;3-4位定义了故障注入的类型,即固定0、固定1或位翻转;1-2位定义了故障注入的方向,即从can1到can2或相反方向。剩下的四个字节分别是对某个场的具体位是否进行故障注入的标识。

物理层故障注入

通讯模块负责物理层故障注入器与通讯软件之间相互传递信息,故采用rs-232串口进行通信,串口的模式统一为“115200,8,n,1”,表示通讯速率115200kbps,8位数据位,无校验位,一位停止位。首先传递的是命令和地址:<高1位,低7位>,高1位是读写信号,‘1’是读信号,‘0’是写信号,低7位是寄存器地址,故最多可以设置128个寄存器,由于软复位占用了一个指令编码,所以最多有127个寄存器,这里只用到了较少的寄存器,为程序的拓展提供了预留资源。接下来传递8位数据。通信模块的端口定义见表5所示。

表5通信模块端口定义表

故障注入器的cpld芯片使用的是16m无源晶振作为时钟输入,为了提高串口传输的准确率,对时钟输入进行了分频,使通讯模块的时钟为串口速率的16倍。使用这个输入采样串口输入,可以减少串口噪声对数据传输的影响,减小了误码率。按照时钟,设计了通讯模块的状态机,如图9所示。

图9中各个状态描述如表6;

表6状态描述表

故障注入开始前,通讯模块接收来自控制软件的命令,把命令参数存入主控模块各个寄存器中;故障注入结束后,通讯模块把主控模块中存储的故障注入结果发送给控制软件。因此,通讯模块主要负责完成两大部分的工作:串口数据的发送和接收和主控模块内部寄存器的读写。模块分为两个子模块。serial子模块负责串口数据的发送和接收,rd_wr子模块负责主控模块内部寄存器的读写。

故障注入模块负责控制其余模块的工作,根据内部寄存器存储的值进行工作。主控模块内部集成了一系列与故障注入相关的寄存器组。内部时间控制子模块负责控制故障注入的时间,从而能够注入不同时间类型的故障。在故障注入开始之前,总线读写模块读取“地址-数据”参数对,把数据存入对应地址的寄存器中;故障注入结束后,总线读写模块读取寄存的数据输入和输出发送给通讯模块。表7列出了内部寄存器所表示的意义。

表7主控模块寄存器意义

故障层次选择寄存器type_reg:该寄存器储存故障类型信息,指示那个方向的总线信号通道注入什么类型的故障。该寄存器中的数据表明故障发生在物理层还是协议层,同时还指明了物理层故障注入时注入的是固定-0、固定-1还是位翻转故障。type_reg[7..6]为“01”时表示协议层故障,为“10”时表示物理层故障,为“00”时表示不注入故障。

触发类型寄存器tiggtypr_reg:该寄存器总共8位,该寄存器与故障注入模块之间有直接通路,指示了物理层故障触发的类型。由高到低每两位指定了对应数据位的触发类型:“00”表示不触发故障,“01”表示触发类型为数据场触发,“10”表示触发类型为仲裁场触发。

输入数据寄存器indata_reg和输出数据寄存器outdata_reg用于储存结果回收模块记录的总线数据,indata_reg为注入前的数据,outdata_reg为注入后的数据。这两个寄存器用于宿主机定时读取,控制软件通过比较故障注入前后的总线数据分析此次故障注入是否有效。

故障时间类型寄存器timetype_reg:该寄存器16位数据中的最低两位timetype_reg[1..0]表示了故障注入的时间类型:“01”表示注入瞬时型故障,“10”表示注入间歇型故障,“11”表示注入永久型故障。其余位数指定了间歇型故障注入的次数,表示范围为0-1000次。

故障持续时间寄存器duration_reg和故障间隔时间寄存器interval_reg:在瞬时型故障注入时,duration_reg储存了瞬时故障的长度;在间歇型故障注入时,duration_reg储存故障的持续时间而interval_reg储存故障的间隔时间。在控制软件上,为方便用户定义准确的时间参数,这两个时间的单位是微秒。控制软件在生成参数时,根据注入器时钟频率,将时间转换成为了注入器内部的时钟节拍数。

触发类型寄存器trigg_reg指定了故障注入的触发方式,trigg_reg[1..0]为“01”时表示随机触发,为“10”时表示目标触发。

在实际实现中,主控模块内部还集成了方向选择模块,该模块在故障注入开始前确定内部模块之间的连线方式,改变故障注入逻辑的结构。需要注入“主机到外设”的故障时,故障注入模块被嵌入到主机到外设的信号通道上,外设到主机的信号通道保持不变;反之,故障注入模块嵌入在外设到主机的信号通道上,主机到外设的信号通道不变;故障注入结束后方向选择模块移出故障注入模块,恢复现场。

故障注入模块

fpga最小开发板,核心芯片是epm1270。使用altiumdesignersummer10软件实现了故障注入器的原理图和pcb图绘制,并投板制造。

can总线在物理层使用一对差分信号(canh和canl)组成双向信号传输通道,分别为canh和canl。canh高电平是为“显性”值,表示逻辑0;canh电平等于canl电平时为“隐性”值,表示逻辑1;显性相对于隐性有更高的优先级,显性和隐性位同时发送到总线上时,总线上出现显性。物理层故障注入主要是在物理层通过改变数据传输的电气特性,来干扰can总线数据帧的传输。故障类型分为瞬时故障,间歇故障和永久故障。

物理层故障注入是通过串口向芯片发送故障注入指令,芯片能够通过io向外发送0或1信号,以此来改变电气特性。如图10为简化的pcb图,可以看到主要的元器件,其中核心的控制芯片是epm1270t144c5n,作为处理输入输出信号和物理层故障注入的内部逻辑处理的载体,芯片的时钟输入是16m的无源晶振,其他元器件还包括串口电平转换芯片、can的电路信号转化、复位芯片等。

故障注入器硬件主要是由两个总线模块与两者之间中央处理芯片组成,并使用gpio模块完成中央处理芯片和宿主机之间的通讯和供电。

can总线故障模拟的物理层故障注入选用的是altera公司型号为epm1270t144c5n的cpld芯片作为中央处理芯片,作为故障注入逻辑的载体。该型号的芯片采用3.3v输入输出电压的低功耗设计,并使用144-tqfp封装格式。cpld的时钟输入是16m的无源晶振,并在外围实现芯片复位电路和jtag下载电路用于芯片编程。在cpld的两端分别为两个can总线模块,由总线收发电路和总线io接口组成。can总线收发器选取了lpc1768fbd100芯片,芯片同时包含了总线接收器与总线收发器。cpld与宿主机之间的通讯接口使用的是一个串口通讯扩展接口uart0,此外还为宿主机的gpio模块留出接口,方便将来改进设计。

故障注入的启动与停止需要多个条件共同控制,把注入控制与主控模块合并不利于模块功能的开展并且不易于维护。因此单独实现了注入控制模块。该模块不断读取主控模块的寄存器值,以确定是否注入故障。注入模块分别实现了从can1到can2和从can2到can1两个方向故障注入的控制,两个方向的故障注入互不干扰,可以单独对一个方向的信号通道注入故障,亦可以同时对两个方向的信号通道注入故障。表3-14列出了注入控制模块的端口信号。

表8注入控制模块的端口信号

注入控制模块使用inj_enable信号实现对故障注入模块的控制,当inj_enable为高电平时有效,故障注入模块可以注入故障,inj_enable为低电平时无效,禁止故障注入。通过inj_enable电平的高低组合实现的三种时间类型。

瞬时型故障的inj_enable信号设置比较简单,开始命令到来时设置inj_enable为高电平,同时时间计数器开始计时,一旦计时到,inj_enable立即转化为低电平,故障注入结束。

间歇型故障指的是用户需要多次注入相同的故障,每次故障具有相同的持续时间,每两次故障之间有间歇时间。实现间歇型的时间控制,需要持续时间计数器和间歇时间计数器交替工作,在持续时间计数过程中,inj_enable有效,计数超时后间歇时间计数器工作,inj_enable无效。inj_enable信号电平的交替高低变化实现了间歇型故障的控制。

永久型故障的持续时间从控制软件发送开始命令起始,到控制软件发送停止命令终止。所以永久型故障的inj_enable与持续时间和间隔时间无关,当接收到控制软件发送的开始命令,inj_enable持续高电平;当主控模块接收到控制软件发送的停止命令,会发送一个软复位信号,inj_enable恢复低电平,故障注入结束。

图11为注入模块工作的状态转移图。从图中可以看出,模块在状态0复位即进入状态1等待注入开始命令。当接收到注入开始命令时,若timetype[1..0]=“01”,为瞬时型,进入状态2,inj_enable=‘1’,持续时间计数器工作,每个节拍减1,当计数器减到0后,inj_enable=‘0’并进入状态3;若timetype[1..0]=“10”,为永久型,设置inj_enable=‘1’并进入状态3,当软复位信号nrst到来后inj_enable=0并进入状态0;若timetype[1..0]=“11”,为间歇型,进入状态5设置持续时间计数器、间隔时间计数器和次数计数器,然后在状态6设置inj_enable=‘1’并且持续时间计数器递减,减到0后进入状态7置inj_enable=‘0’,间隔时间计数器递减,减到0返回状态5并且次数减1,直到次数用完后模块进入状态0。

表9是对控制软件中所用到的方法的说明。

表9方法说明

图12描述了故障模拟系统整体工作的流程图。程序开始运行之前,首先必须进行自检,查看设备是否能够正常进行工作,然后会根据用户在界面中做出的故障属性的选择,生成对应故障的指令,当指令生成完成即可进行下一步的故障注入。故障注入部分根据指令对总线数据进行不同的干扰,当相应指令发送过后,故障注入器能够将故障注入结果通过串口通讯反馈到控制端,控制端能够对反馈的数据进行进一步的分析,从而得出故障注入是否成功。

图13是系统中断工作的流程图,协议层故障注入模块实现了接收控制软件发送来的故障参数,并将故障注入器中相应寄存器保存的数据帧的数据段发送给控制软件。常用的通讯方式有uart、jart、以太网、usb等,为了简化电路,减少延时,我们采用rs232串口uart通讯方式。通讯链路采用中断触发的方式接收和发送信息,当判断为发送中断的时候,打开串口,将控制软件内的信息发入故障注入器,待读完数据后关闭串口;当判断为接收中断时,打开串口,将故障注入器内回收的结果传递给控制软件,待数据写完后关闭串口。

图14为can总线故障模拟系统协议层故障注入逻辑流程图,在故障注入之前,首先需要通过ser_availchar(&numavailbyte)函数获取注入的相关指令并将其保存在缓存寄存器中,接着就是指令的分析过程了,先判定指令所代表的故障的位置,并分别对相应位置进行相应的故障注入,当故障注入结束,我们需要收集故障注入的结果,0000再根据指令判定方向并输出,最后判定故障的时间类型,是永久故障或者瞬时故障,若为永久故障,则需要将故障注入指令存入缓存寄存器中,并反复调用达到永久注入的目的,若为瞬时故障,则只需要将之前的缓存寄存器清空即可,从而结束协议层故障注入逻辑。

图15为系统的物理层故障注入逻辑流程图,在故障注入之前,需要重置所有的寄存器,在cpld芯片中,我们设置了一个故障层次类型寄存器,当寄存器的值为“0x00”时,表示注入协议层故障,当寄存器的值为“0x01”时,表示注入物理层故障。在重置完寄存器后,首先需要写故障层次类型寄存器,表示进入物理层。然后需要判定输入的指令是否为物理层故障,如果不是,则直接令txd等于rxd,把输入端赋给输出端,相当于信号的直连。如果是物理层,则开始写时间类型寄存器,分别为瞬时、间歇或永久,并分别写入其他的相关寄存器,写入完成后则开始进行物理层的故障注入。

具体实施方式二:本实施方式与具体实施方式一不同的是:所述信息收发模块还包括总线初始化子模块、发送数据帧子模块和接收数据帧子模块;

所述总线初始化子模块用于对寄存器和时钟进行初始化;

所述发送数据帧子模块用于根据每条发送的数据帧的优先级,进行数据帧发送;

所述接收数据帧子模块用于根据预先得到的id,接收数据帧,并及时返回应答信息,表示接收正常。

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

具体实施方式三:本实施方式与具体实施方式一或二不同的是:所述故障注入模块包括链路层故障子模块和物理层故障子模块;

所述链路层故障子模块用于在数据帧传输的链路层中拦截信息,按照用户指定的要求改变数据帧,将故障注入方式分为指定故障、延时故障、随机故障和概率故障;故障的时间类型分为瞬时故障、永久故障和间歇故障;注入位置分为数据场、仲裁场和控制场;使得最终的故障分为位级别的故障和信息流级别的故障,用户能够随机组合不同的故障注入方式、触发时间参数和注入位置,形成不同类型的故障;

所述物理层故障子模块用于在can信号传播的物理层进行操作,故障注入器通过改变电气特性,从而改变传输的信息,能够实现不同类型的物理层故障;物理层故障注入分为两种方式,分别是用户自定义故障注入和触发故障注入;用户自定义故障注入是用户通过宿主机端控制软件选择故障注入方式和故障注入时间的物理层故障,通过串口传入故障注入器引发故障;触发故障注入则是用户可以设定触发故障的对应数据和对应id,当故障注入器检测到总线上传送的数据帧的数据或id是设定的数值时,产生物理层故障;所述故障注入方式分为指定故障、延时故障和概率故障,故障的时间类型分为瞬时故障、永久故障和间歇故障。

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

具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:所述链路层故障子模块包括串口中断单元,帧解析单元,数据帧修改单元,帧重组单元和结果回收单元;

所述串口中断单元用于接收来自控制软件的数据和发送故障模拟器的数据,使用uart的中断完成数据的接收,定义fifo缓冲区来保存接收的数据;

所述帧解析单元用于通过can总线控制器驱动程序对can总线报文进行帧解析,获得总线数据帧的不同场,并将不同数据帧的不同数据存放到相应的寄存器内等待故障注入模块的处理,帧解析操作在can控制器内完成;

由于can总线传递来的数据帧具有不同的7个段,我们要对不同的部位进行相应的故障注入,因此需要通过can总线控制器驱动程序对can总线报文进行帧解析,获得总线数据帧的不同场,并将不同数据帧的不同数据存放到相应的寄存器内等待故障注入模块的处理,帧解析操作均在can控制器内完成。can模式寄存器用于改变can控制器的行为,can中断和捕获寄存器存储了can总线事件的相关信息,can中断使能寄存器控制着can各个寄存器是否能够导致中断的产生,还有一些寄存器负责收发信息。

所述数据帧修改单元用于对数据帧上分的7个场分别注入固定0,固定1和位翻转的故障(根据控制软件模块中用户选择的注入位置参数决定往哪一个场中注入哪种故障);

所述帧重组单元用于将修改过的帧添加头形成报文存在相应的寄存器内;

所述结果回收单元用于定时采集数据帧解析单元和帧重组单元中的数据,查看故障注入是否成功,以及注入的故障对总线数据的影响;结果存入控制模块的寄存器中,由控制模块传递给控制软件显示给用户。

其它步骤及参数与具体实施方式一至三之一相同。

具体实施方式五:本实施方式与具体实施方式一至四之一不同的是:所述物理层故障子模块包括用户自定义故障单元和信号触发故障单元;

所述物理层故障子模块用于在控制界面用户自定义注入不同类型的故障,将相应的故障注入版发送到物理层上;

所述信号触发故障单元用于当故障注入板收到信号时,触发物理层的故障。

其它步骤及参数与具体实施方式一至四之一相同。

具体实施方式六:本实施方式与具体实施方式一至五之一不同的是:所述控制软件模块包括用参数生成子模块、检测子模块、注入界面子模块和结果回收子模块;

所述参数生成子模块用于根据用户的设置生成可以被注入器识别的故障注入参数;在自检过程中,参数生成子模块为注入器内部的每一个寄存器都生成一个初始值;在注入过程中,参数生成子模块生成的是在当前故障模式下的寄存器的值;所述故障注入参数包括故障注入方式、故障的时间类型、注入位置;

所述检测子模块用于检测注入器初始状态,保证注入器及通讯链路完好可用;在使用故障注入设备进行故障注入前,都要对注入器本身进行自检操作。自检的具体过程为:向注入器内部的每一个寄存器中写入初始值,读取该值,比较写入值与读出值,一致则表明注入器及通讯链路完好可用;

所述注入界面子模块用于将参数生成子模块生成的参数进行设置,将当前故障模式所需要的参数发送给注入器,同时把参数传递给结果分析模块以备注入结束后的分析;

所述结果分析模块用于接收信息收发模块读取故障注入器内部的寄存器值,获取故障注入的结果。

其它步骤及参数与具体实施方式一至五之一相同。

具体实施方式七:一种can总线故障模拟方法包括以下步骤:

步骤一:通过检测子模块对注入器进行检测,若注入器及通讯链路工作状态正常,则通过注入界面子模块进行故障注入参数设置,通过参数生成子模块生成故障注入参数;若注入器及通讯链路工作状态不正常,则调试注入器及通讯链路;

步骤二:将步骤一生成的故障注入参数发送至故障注入器,根据故障注入参数设置故障注入模块中的故障层次类型寄存器,当寄存器的值为0x00时,表示通过链路层故障子模块注入链路层层故障,当寄存器的值为0x01时,表示通过物理层故障子模块注入物理层故障;

步骤三:通过结果分析模块获取故障注入器的结果。

具体实施方式八:本实施方式与具体实施方式七不同的是:所述步骤二中通过链路层故障子模块注入链路层层故障的具体过程为:

步骤二一:判断故障注入参数的注入位置是否是数据场,若是数据场,则进行数据场故障注入,判定传输方向并输出结果;若否,则执行步骤二二;

步骤二二:判断故障注入参数的注入位置是否是仲裁场,若是仲裁场,则进行仲裁场故障注入,判定传输方向并输出结果;若否,则执行步骤二三;

步骤二三:进行控制场故障注入,判定传输方向并输出结果;

步骤二四:判断故障注入参数的故障的时间类型是否是永久故障,若是,则将缓存寄存器的值写入其对应的寄存器中(若为永久故障,则需要将故障注入指令存入缓存寄存器中,并反复调用达到永久注入的目的,若为瞬时故障,则只需要将之前的缓存寄存器清空即可,从而结束协议层故障注入逻辑);若否,则清除缓存寄存器。

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

具体实施方式九:本实施方式与具体实施方式七或八不同的是:所述步骤二中通过物理层故障子模块注入物理层故障的具体过程为:

步骤(1):判断故障注入参数的故障注入时间是否是间歇故障,若是,则设置间歇时间、注入次数和持续时间寄存器;若否,则执行步骤(2);

步骤(2):判断故障注入参数的故障注入时间是否是瞬时故障,若是,则设置持续时间寄存器;若否,则执行步骤(3);

步骤(3):设置inj_enable恒定为1。

其它步骤及参数与具体实施方式七或八相同。

实施例一:

测试方案

can总线故障模拟系统的开发所用的模型为v模型,所以系统测试要跟随着开发模型走,依次包括单元测试、集成测试、系统测试和验收测试,测试的重点在单元测试和集成测试。在单元测试中,需要对每个子模块进行黑盒测试和白盒测试,用于检查程序内部逻辑和功能的准确性,其中白盒测试采用基本路径覆盖的方法,黑盒测试采用等价类划分的方法。而在集成测试中,设计了集成测试的用例,对各个模块进行测试。对于最后的系统测试和验收测试,则对照系统设计阶段提出的指标要求,根据指标逐条验证,测试是否达到指标要求。

测试范围

本测试将系统各功能模块进行逐一的检测,包括can总线数据的收发模块、故障注入器模块和控制软件模块,对需求分析中的列举的功能进行排查,对系统实现各功能的正常运行做充分的测试,输入合理及不合理的测试数据检验功能的运行及出错处理情况。

串口设置和自检

第一步:系统登录等价分类如表10所示。

表10系统登录等价类划分表

第二步:系统登录测试用例如表11所示。

表11系统登录等价类划分表

第三步:串口设置流程与测试流程如图16所示。

第四步:系统登录白盒测试数据如表12所示。

表12系统登录白盒测试表

协议层故障注入

第一步:协议层故障注入等价分类如表13所示。

表13协议层故障注入等价类划分表

第二步:协议层故障注入测试用例如表14所示。

表14协议层故障注入测试用例表

第三步:协议层故障注入测试流程如图17所示。

第四步:协议层故障注入白盒测试数据如表15所示。

表15协议层故障注入白盒测试表

集成测试

在单元测试的基础上将各个模块组装在一起进行整合测试,检测整合后的各个模块能不能正常工作。

集成测试模块划分如图18所示。

系统测试各模块测试顺序如下:

m1—m2—m6—m7—m8—m9—m3—m10—m11—m4—m12—m13—m5—m14—m15—m16—m17

如表16所示,是根据测试模块顺序罗列的集成测试用例,并注明预期结果和实际的测试结果。

表16集成测试用例

系统测试和验收测试

系统测试和验收测试主要测试系统是否满足项目指标要求,能否满足用户需求,系统测试和验收测试要求如表17所示。

表17系统测试和验收测试表

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

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