如何验证CAN控制器的错误响应机制?

描述

 

CAN节点的稳定性、可靠性和安全性得益于其强大的错误管理机制。上一篇文章我们介绍了CAN控制器的错误管理机制的工作原理(点击阅读)。本文将基于其工作原理及ISO16845-1:2016标准,为大家介绍使用ZPS-CANFD设备验证CAN控制器的错误响应过程。


 

CAN控制器的错误管理机制是保障CAN总线通信可靠性的关键机制,它能检测并处理多种错误情况,即位错误、填充错误、CRC错误、格式错误以及ACK错误,并及时地响应错误帧,另外通过错误计数器的数值(发送错误计数器TEC,接收错误计数器REC),它可以判断自身通信状态,如主动错误、被动错误和总线关闭,从而采取不同应对策略。
在CAN网络里,CAN节点既可以作为发送节点,也可以作为接收节点,当总线上出现错误时,可能是作为发送节点报出的错误,也可能是作为接收节点报出的错误,所以验证CAN控制器错误处理机制,需要从发送和接收两个方向进行测试。本文通过使用ZPS-CANFD设备提供的发送干扰和接收干扰功能,进行总线的错误注入,结合报文接收、报文解码窗口观察总线情况,分析错误帧的产生和错误计数器动作是否符合标准。

检测

图1  ZPS-CANFD功能开启界面
 

接收错误响应能力验证

在CAN控制器的运行机制中,当面对不同的接收错误时,错误响应位置与REC增量存在一定的差异,部分错误发生后,下一位便紧跟错误标志位;而另一些错误出现后,要在随后几位才开始呈现错误标志位。在REC增量方面,不同错误导致的结果也各不相同,有的错误让REC以1为单位进行递增,有的使其以8为单位进行递增,还有的情况下REC保持不变。接下来我们将通过两个实例,介绍不同错误情形下,CAN控制器的接收错误检测结果以及REC增量是否符合标准。

 

实例一:CRC错误

 

1、验证目的

 

①观察出现CRC错误之后,错误帧生成位置是否符合标准;②观察出现错误帧之后,REC递增是否符合标准。

 

2、预期结果

 

①根据ISO16845-1:2016(E)标准中7.2.5小节要求,当DUT接收到CRC错误(CANFD帧的)之后,它将生成一个有效的错误帧,从CRC定界符后的第四位开始;②根据ISO16845-1:2016(E)标准中7.6.10小节要求,当DUT生成一帧错误帧后,它的REC应增加1。

 

3、硬件准备

 

ZPS-CANFD作为测量设备,简称ZPS。USBCANFD-200U作为被测设备,简称DUT。

 

4、软件准备

 

打开ZPS和DUT的软件,进行CAN通道参数的匹配(如波特率、终端电阻),并开启CAN通道,进行数据数据交互,ZPS参数设置如图2所示。

检测

图2  波特率匹配注:

 

1、总线允许,代表CAN1通道启动;

 

2、ZPS的工作模式选择“只听应答模式”,ZPS不会回应错误帧,可以便于在对错误帧的波形分析时,只看到DUT发送的错误帧。

 

5、错误注

 

打开ZPS软件的报文发送窗口,添加任意报文(例如ID 100的CANFD帧),然后点开高级按钮,勾选“发送干扰”,将干扰位置选择“自定义”,干扰类型选择“单位干扰”,干扰光标移到CRC的某个位,如图3所示。

检测

图3  发送CRC错误注:CANFD帧的CRC场有固定填充位,所以发送CRC错误时,干扰光标不能选择固定填充位,且需离它远一些,否者会发送CRC固定填充位错误,这样就不符合该测试项的预期了。

 

6、验证结果

 

①在ZPS软件界面,观察错误帧的波形,当DUT接收到CRC错误后,它的错误帧从CRC定界符后的第四位开始发出,符合标准。如图4、图5所示,对比正确帧和错误帧的CRC定界符位置可以看出。

检测

图4  正确CANFD帧时,CRC起始~CRC定界符宽度:23us

检测

图5  DUT在CRC定界符后第四位开始发出错误帧注:主动错误帧格式:6个显性位+8个隐性位。
②查看DUT软件界面的错误信息,观察到当出现一帧错误帧时,REC+1,两帧错误帧时,REC+2,以此类推,符合标准。

检测

图6  REC递增结果显示

 

实例二:EOF错误

 

1、验证目的

 

①观察出现EOF错误之后,错误帧生成位置是否符合标准;②观察出现错误帧之后,REC递增是否符合标准。

 

2、预期结果

 

①根据ISO16845-1:2016(E)标准中7.2.10小节要求,当DUT接收到EOF错误时,它将生成一个有效的错误帧,从损坏位的下一位位置开始。②根据ISO16845-1:2016(E)标准中7.6.14小节和ISO 11898-1:2015(E)标准中12.1.4.2小节描述,若REC起始值为0,接收节点ACK发送成功,REC保持为0,若REC起始值大于0,接收节点ACK发送成功,REC减1。③根据ISO16845-1:2016(E)标准中7.6.8小节要求,当DUT生成一帧错误帧后,它的REC应增加1。

 

3、硬件准备同上。

 

4、软件准备同上。

 

5、错误注入打开ZPS-CANFD(1)软件的报文发送窗口,添加任意报文,然后点开高级按钮,勾选“发送干扰”,将干扰位置选择“自定义”,干扰类型选择“单位干扰”,干扰光标移到EOF位,如图7所示。

检测

图7  发送EOF错误

 

6、验证结果

 

①在ZPS软件界面,观察错误帧的波形,当DUT接收到EOF错误后,错误帧在该位之后的第一位开始发出,符合标准,如图8所示。

检测

图8  DUT在EOF损坏位后第一位开始发出错误帧

 

②查看DUT软件界面的错误信息,观察到当出现一帧错误帧时,REC保持初始值,符合标准。例如REC初始值为1,因为EOF错误出现在ACK之后,ACK发送成功,REC-1,EOF错误,REC+1,所以,REC值不变。

检测

图9  REC递增结果显示
 

发送错误响应能力验证

在CAN控制器的运行机制中,当面对不同的发送错误时,它的错误响应一般在错误出现后,下一位便紧跟错误标志位。在TEC增量方面,错误帧的产生会让TEC以8为单位进行递增。接下来我们将通过一个实例,介绍在错误情形下,CAN控制器的发送错误检测结果以及TEC增量是否符合标准。

 

实例一:CRC定界符错误

 

1、验证目的

①观察出现CRC定界符错误之后,错误帧生成位置是否符合标准。②观察出现错误帧之后,TEC递增是否符合标准。

 

2、预期结果

①根据ISO16845-1:2016(E)标准中8.2.5小节要求,当DUT发送报文的CRC定界符位被破坏之后,它将生成一个有效的错误帧,从损坏位的下一位位置开始。②根据ISO16845-1:2016(E)标准中8.6.7小节要求,当DUT生成一帧错误帧后,它的TEC应增加8。

 

3、硬件准备

同上。

4、软件准备

打开ZPS和DUT的软件,进行CAN通道参数的匹配(如波特率、终端电阻),如图 2所示,并开启CAN通道,ZPS接收DUT发送的报文。DUT发送数据如图10所示。

检测

图10  DUT发送帧

5、错误注入

打开ZPS软件的被动接收干扰窗口,按照DUT发送的报文,设置帧数据、干扰位置,即设置模版,然后将干扰光标放到“CRC定界符”位,再将干扰类型选择为“隐性干扰为显性”并启动干扰,如图11所示。

检测

图11  CRC定界符位干扰

6、验证结果

①在ZPS软件界面,观察错误帧的波形,当DUT的CRC定界符位被干扰后,它的错误帧在该位之后的第一位开始发出,符合标准,如图12所示。

检测

图12  DUT在CRC定界符后第一位开始发出错误帧

 

②查看DUT软件界面的错误信息,观察到当发送一帧错误帧时,它的TEC+8,以此类推,符合标准。检测图13  TEC递增结果显示
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分