如何验证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递增结果显示

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值