一种基于CAN的总线信号故障模拟装置产生故障信号的方法与流程

文档序号:11431876阅读:659来源:国知局
一种基于CAN的总线信号故障模拟装置产生故障信号的方法与流程

本发明涉及故障模拟装置产生故障信号的方法。



背景技术:

can总线系统在汽车领域应用广泛,因为在这种环境下,对系统稳定性有着更高的要求,所以在can总线系统组建之前,需要对总线上的各节点进行全面的测试,观察其在不同的总线数据传输状态下,能否保证正确的通信。并且,如果出现了总线故障,总线各节点是否能够执行正确的错误处理机制。

在对其进行测试过程中,如果使用专用的can节点装置,在出厂时,相应厂家一定已经对这些节点装置进行了全面的测试。所以在使用这些节点装置组建总线系统时,往往只能测试节点在正常工作时的情况,不能测试节点在异常工作时的情况,即便在千百次工作中节点出现了故障,这个故障也很大可能是随机的,不能进行故障定制,所以总线系统测试人员想要复现这个故障也十分困难。而如果使用专用的can测试装置,虽然可以定制输出数据产生需要的故障信号从而较全面的测试整个总线系统,但这样的测试装置造价高,通用性不强。对于一般的系统测试人员来说,并非一个很好的选择。

can总线简介

can即控制器局域网络,属于工业现场总行的范畴,与一般的通信总线相比,can总线的数据通信具有突出的可靠性,实时性和灵活性。由于其良好的性能及独特的设计,can总线越来越受到人们的重视。他在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商都采用了can总线来实现汽车内部控制系统和执行机构间的数据通信。同时由于can总线本身的特点,其应用范围已不再局限于汽车行业,而向自动控制,航空航天,航海,过程工业。机械工业,纺织工业,等领域发展。

can总线拓扑图

如图1所示can总线可以挂载多个节点,can节点不分主从,只要总线空闲均可往总线上发送数据。

can总线的基本概念

can节点的层结构,如图2所示;

物理层定义的实际信号的传输方法。

传输层是can协议的核心。它把接受到的报文提供给对象层,以及接受来自对象层的报文。传输层负责位定时及同步,报文分帧,仲裁,应答,错误检测和标定,故障界定。

对象层的功能是报文滤波以及状态和报文的处理。

报文(messages):

总线上的信息以不同的固定报文格式发送,但长度受限。当总线空闲时任何连接的单元都可以开始发送新的报文。

位速率(bitrate):

不同的系统,can的速度不同,可是,在一给定的系统里,位速率是一定的,并且是固定的。

远程数据请求(remotedatarequest):

通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧由相同的识别符命名的。

多主机(multimaster):

总线空闲时,任何单元都可以开始传输报文。具有较高优先权报文的单元可以优先获得总线访问权。

总裁(arbitrition):

只要总线空闲,任何单元都可以开始发送报文。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。通过使用识别符的位形式仲裁可以解决这个冲突。仲裁的机制确保信息和时间均不会损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监控视到一“显性”电平(见总线值),那么该单元就失去了仲裁,必须退出发送。

错误检测(errordetection):

为了检测错误,必须采取以下措施:

监视(发送器对发送位的电平与被监控的总线电平进行比较)

循环冗余检查

位填充

报文格式检查

应答(acknowledgement):

所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答;对于不连贯的报文,接收器作出标志。

报文传输

帧类型

报文传输由以下4个不同的帧类型所表示和控制:

数据帧:数据帧携带数据从发送器至接收器。

远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。

错误帧:任何单元检测到一总线错误及发出错误帧。

过载帧:过载帧用在先行的和后续的数据帧(或者远程帧)之间提供一附加的延时。(数据帧或者远程帧)通过帧间空间与前面的个帧分开。

数据帧

数据帧由7个不同的位场组成:如图3所示;

帧起始、仲裁场、控制场、数据场、crc场、应答场、帧结尾。数据场的长度可以为0。

帧起始

它标志数据帧和远程帧的起始,由一个单独的“显性”位组成。只有在总线空闲时才允许发送开始信号。

仲裁场

标准格式帧与扩展格式帧的仲裁场格式不同。

标准格式里,仲裁场由11位识别符和rtr为组成,识别符由id-28…id-18。如图4所示。

扩展格式里,仲裁场包括29位识别符,srr位、ide位、rtr位。其识别符由id-28...id-0。如图5所示。

识别符:识别符的长度为11位。这些位的发送顺序是从id-10到id-0。最低位是id-0。最高的7位(id-10到id-4)必须不能全是“隐性”。

srr位:隐性位,它在扩展格式的标准帧rtr位位置,因此代替标准的rtr位。

ide位:标准格式的ide位为“显性”,而扩展格式里的ide位为“隐性”

rtr位:该位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。

控制场(标准帧以及扩展帧),如图6所示;

控制场由6个位组成。标准格式的控制场格式和扩展格式的不同。标准格式里的帧包括数据长度代码、ide位(为显性位)、及保留位r0。扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的组合。数据长度代码:数据长度代码指示了数据场中字节数量。数据长度代码为4个位,在控制场里被发送。

数据场

数据场由数据帧中的发送数据组成。它可以为0~8个字节,每字节包含了8个位,首先发送msb。

crc场

crc场包括crc序列(crcsequence),其后是crc界定符(crcdelimiter)。crc序列:由循环冗余码求得的帧检查序列最适用于位数低于127位〈bch码〉的帧。为进行crc计算,被除的多项式系数由无填充位流给定,组成这些位流的成分是:帧起始、仲裁场、控制场、数据场(假如有),而15个最低位的系数是0。

应答场

应答场长度为2个位,包含应答间隙(ackslot)和应答界定符(ackdelimiter)。在应答场里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ackslot)期间(发送ack信号)向发送器发送一“显性”的位以示应答。应答间隙:所有接收到匹配crc序列(crcsequence)的站会在应答间隙(ackslot)期间用一“显性”的位写入发送器的“隐性”位来作出回答。

帧结尾

每一个数据帧和远程帧均由一标志序列界定。这个标志序列由7个“隐性”位组成。远程帧通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。远程帧也有标准格式和扩展格式,而且都由6个不同的位场组成:帧起始、仲裁场、控制场、crc场、应答场、帧结尾。与数据帧相反,远程帧的rtr位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0...8的任何数值)。此数值是相应于数据帧的数据长度代码。rtr位的极性表示了所发送的帧是一数据帧(rtr位“显性”)还是一远程帧(rtr“隐性”)。



技术实现要素:

本发明的目的是为了解决现有总线出现故障时无法判断总线各节点是否能够执行正确的错误处理机制以及现有can测试装置造价高、通用性不强的问题,而提出一种基于can的总线信号故障模拟装置产生故障信号的方法。

一种基于can的总线信号故障模拟装置产生故障信号的方法具体过程为:

步骤一、通过usb将任意函数发生器连接到pc机,打开pc机中上位机;

步骤二、上位机程序打开任意函数发生器,获取界面控件参数,界面控件参数包括电平、速度、帧类型、帧格式、基本id、扩展id、数据长度、数据设置、故障参数;判断下载信号控件是否按下,如果是,执行步骤三;如果否,重新执行步骤二;

所述故障参数为包括ack丢失错误、dlc长度错误、crc校验错误、填充错误中的0个、1个、2个、3个或4个;

所述id为身份标识码,ack为应答,crc为循环冗余校验,dlc为数据长度;

步骤三、将获取到的界面控件参数组装成帧,下载帧信息到任意函数发生器的rom里,根据can总线协议,设置任意函数发生器的输出电平值、速度,打开控制任意函数发生器输出的通道控件,输出帧信号,即任意函数发生器输出信号;判断退出控件是否按下,如果是,结束上位机程序,如果否,重新执行步骤三;

rom为只读存储器,can为控制器局域网络;

步骤四、将步骤三得到的任意函数发生器输出信号传输给can总线收发器,经can总线收发器转换后传输给can总线,得到故障信号。

本发明的有益效果为:

本发明基于一种常用的电子领域测试仪器——任意函数发生器,配合can专用的收发器,和一款pc软件。首先,软件通过控制任意函数发生器实现对can总线数据较为灵活的定制,定制精度可以达到每一个总线字的每一位。测试人员不仅可以在软件界面中直观定制can总线帧内容,以进行正确的数据传输,还可以输出若干种错误的总线字,以模拟总线故障。本发明可以方便快捷的产生特定类型,特定位置的符合can帧格式和电气特性的故障总线信号,解决了一般can控制器只能产生正确can帧总线信号的问题。本发明也可以产生符合can规范的任意id,任意数据长度的数据的can总线信号,使得产生符合can规范的总线信号变得更加快捷和方便。并且因为任意函数发生器通用性较强,是一般实验室都具有的测试仪器,所以本发明具有良好的经济效益。解决了现有总线出现故障时无法判断总线各节点是否能够执行正确的错误处理机制以及现有can测试装置造价高、通用性不强的问题。本发明故障模拟装置产生故障信号的准确率达到100%。

附图说明

图1为can总线拓扑图;

图2为can节点的层结构图,can为控制器局域网络;

图3为数据帧的帧结构图,crc为循环冗余校验,ack为应答;

图4为标准帧仲裁域示意图,rtr远程发送请求位;

图5为扩展帧仲裁域示意图,srr为远程替代位,ide为集成开发环境;

图6为控制场示意图,r1,r0为保留位,dlc为数据长度;

图7为本发明基于can的总线信号故障模拟装置结构图;

图8为上位机软件界面示意图,uart为通用异步收发传输器,off为关闭;

图9为上位机程序流程图;

图10为总线收发器框图;

图11为实施例一的can的总线信号故障模拟装置结构图,gui为图形用户界面,tekvisa为泰克公司的可编程仪器的函数库;

图12为步骤三中将获取到的界面的控件参数组装成帧流程图。

具体实施方式

具体实施方式一:结合图8、图9、图10说明本实施方式,本实施方式的一种基于can的总线信号故障模拟装置产生故障信号的方法具体过程为:

基于can的总线信号故障模拟装置包括上位机软件部分,任意函数发生器、can协议收发器、can总线。

步骤一、通过usb将任意函数发生器连接到pc机,打开pc机中上位机;

步骤二、上位机程序打开任意函数发生器,获取界面控件参数,界面控件参数包括电平、速度、帧类型、帧格式、基本id、扩展id、数据长度、数据设置、故障参数;判断下载信号控件是否按下,如果是,执行步骤三;如果否,重新执行步骤二;

所述故障参数为ack丢失错误、dlc长度错误、crc校验错误、填充错误中的0个、1个、2个、3个或4个;

所述id为身份标识码,ack为应答,crc为循环冗余校验,dlc为数据长度;

步骤三、将获取到的界面控件参数组装成帧,下载帧信息到任意函数发生器的rom里,根据can总线协议,设置任意函数发生器的输出电平值、速度,打开控制任意函数发生器输出的通道控件,输出帧信号,即任意函数发生器输出信号;判断退出控件是否按下,如果是,结束上位机程序,如果否,重新执行步骤三;

rom为只读存储器,can为控制器局域网络;

步骤四、将步骤三得到的任意函数发生器输出信号传输给can总线收发器,经can总线收发器转换后传输给can总线,得到故障信号。

因为任意函数发生器的驱动能力不足以直接与can总线相连,本发明使用了can总线收发器完成这个目标。该总线收发器的整体设计方案如图7所示。

任意函数发生器的输出信号,经过收发器后,转变为符合can协议规定的电平标准,从而将故障模拟装置挂载到总线系统中。任意函数发生器输出就可以向真实的被测can总线设备发送消息,完成对被测设备节点的故障测试。

id为身份标识码,ack为应答,crc为循环冗余校验,dlc为数据长度;

基本参数、传输内容(十六进制)、故障参数的控件的编写都是根据can总线协议确定的。

电平:任意波形发生器产生信号的电平大小。

速度:总线的速度。

帧类型:数据帧还是远程帧。

帧格式:标准帧扩展帧。

基本id:帧的标识符。(标准帧和扩展帧都有)

扩展id:帧的标识符。(扩展帧才有)

数据长度:帧数据的长度。(1~8字节可设置)

数据设置:数据内容。

故障参数:可设置的故障类型。包括ack丢失错误,dlc长度错误,crc校验错误,填充错误四种错误类型。

设置完成后,点击下载信号即可下载到任意函数发生器中。

具体实施方式二:本实施方式与具体实施方式一不同的是:所述步骤一中上位机包括上位机程序和上位机界面;

上位机程序编写过程为:

判断pc机是否找到任意函数发生器,如果找到任意函数发生器,执行步骤二;如果没找到任意函数发生器,结束上位机程序;

上位机界面编写包括对基本参数、传输内容、故障参数和仪器控制的控件的编写;

基本参数的控件包括隐性电平、显性电平、速度、帧类型、帧格式;

传输内容的控件包括基本id、扩展id、数据长度、数据设置;

故障参数的控件包括ack丢失错误,dlc长度错误,crc校验错误,填充错误;

仪器控制的控件包括通道、保存信号、调出信号、下载信号、退出。

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

具体实施方式三:本实施方式与具体实施方式一或二不同的是:所述步骤三中将获取到的界面控件参数组装成帧,具体过程为:

步骤三一、在帧序列中添加帧头,基本id,执行步骤三二;

步骤三二、如果是标准数据帧或者是标准远程帧(上位机界面的基本参数中获得),则在帧序列中添加rtr,ide,r0,dlc,执行步骤三三;

rtr为远程发送请求位;ide为集成开发环境;r0为保留位;dlc为数据长度;

如果是扩展数据帧或者是扩展远程帧(上位机界面的基本参数中获得),则在帧序列中添加srr,ide,扩展id,r1,r0,dlc,执行步骤三三;

srr为远程替代位,r1为保留位;

步骤三三、如果是数据帧(上位机界面的基本参数中获得)并且有dlc长度错误(上位机界面的故障参数中获得),则在帧序列中添加错误数据;执行步骤三四;

如果是数据帧(上位机界面的基本参数中获得)并且没有dlc长度错误(上位机界面的故障参数中获得),则在帧序列中添加正确数据,执行步骤三四;

步骤三四、如果有crc校验错误(上位机界面的故障参数中获得),则在帧序列中添加错误crc;执行步骤三五;

如果没有crc校验错误(上位机界面的故障参数中获得):则在帧序列中添加正确crc,执行步骤三五;

步骤三五、在帧序列中添加crc界定符,执行步骤三六;

步骤三六、如果有填充错误(上位机界面的故障参数中获得),则在帧序列中插入错误的填充,执行步骤三七;如果没有填充错误(上位机界面的故障参数中获得),则直接执行步骤三七;

步骤三七、如果有应答错误(上位机界面的故障参数中获得),则在帧序列中添加错误的应答,执行步骤三八;如果没有应答错误(上位机界面的故障参数中获得),则直接执行步骤三八;

步骤三八、则在帧序列中添加帧结尾。

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

具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:所述步骤三三中在帧序列中添加错误数据;具体为:

错误数据为在正确的数据上少一字节的数据,正确数据为从上位机界面中获取的数据。

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

具体实施方式五:本实施方式与具体实施方式一至四之一不同的是:所述步骤三四中在帧序列中添加错误crc;具体为:

错误crc为生成多项式按位取反计算得到的crc。

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

具体实施方式六:本实施方式与具体实施方式一至五之一不同的是:所述步骤三六中在帧序列中插入错误的填充,具体为:

若有连续的5位的1则在帧序列连续的5位1中的最后一位1后插入一位1,若有连续的5位0则在帧序列连续的5位0中的最后一位0后插入一位0。

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

具体实施方式七:本实施方式与具体实施方式一至六之一不同的是:所述步骤三七中在帧序列中添加错误的应答,具体为:

应答间隙设为显性位。

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

如图12,所示:

1)、添加错误数据中,错误数据为:在正确的数据上少一字节的数据。正确数据为从上位机界面中获取的数据设置中的数据。

2)添加错误crc中:错误crc为生成多项式按位取反所计算得到的crc。

3)在插入填充错误中:具体实现方式为:在前面已经生成的帧序列中:如果有连续的5位的1就在帧序列后面插入一位1,如果有连续的5位0就在则帧序列后面插入一位0。

4)添加错误应答数据:应答间隙设为显性位。

采用以下实施例验证本发明的有益效果:

实施例一:

本实施例一种基于can的总线信号故障模拟装置产生故障信号具体是按照以下步骤制备的:

任意函数发生器选择泰克afg3252c型号,该型号仪器的任意波发生功能支持输出频率范围1mhz~120mhz,有效模拟带宽(-3db)225mhz。应用软件使用python语言开发。如此开发的装置框图如图11所示。仪器操作通过tekvisa软件实现。并使用pyhon的qt库设计gui面板。收发器部分使用ctm1050t作为can总线协议收发器。

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

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