CAN总线传播延迟过大导致通信异常现象解析

描述

 

本文导读

在CAN总线系统中,传播延迟过大是引发通信故障的关键诱因之一,可能会导致仲裁异常,使优先级高的信号无法正常优先传输,破坏通信秩序;可能会造成应答错误,使发送节点难以在应答隙内接收到有效应答信号,影响数据传输确认机制;也可能会引发数据采样错误,导致发送与接收位不一致,产生位错误。

本文将在不考虑其它影响下,对传播延迟过大造成的应答错误现象进行详细解析。


 


 

相关定义

1、传播延迟定义:传播延迟是所有类型的传输媒体都存在的一种特性。以简单双节点网络模型(如图1所示)为例,传播延迟包括终端收发器及其附件的延迟时间与线缆的延迟时间。

Node A到Node B的传播延迟=0.2+10+0.1=10.3

Node B到Node A的传播延迟=0.2+10+0.1=10.3

CAN总线

图1  简单双节点网络模型

2、ACK延迟定义:

CAN总线网络中,当一个节点按照CAN协议要求发送完数据后,其它节点都会回应ACK,但是受传播延迟及控制器响应快慢的影响,发送节点一般不能在预期的时刻收到接收节点回应的ACK,而实际回应ACK时刻和预期时刻间的差值,我们称之为ACK延迟时间。

以简单双节点网络模型(如图2所示)为例,测量方法如下:

以发送节点TX位流中最后一个下降沿为起始时刻T0;

经历n个位时间(CAN总线)后,找到TX预期收到ACK开始边沿的时刻T1;

从发送节点RX位流中找到实际收到ACK开始边沿的时刻T2,计算∆T=T2-T0;

ACK延迟计算公式:CAN总线

CAN总线

图2 ACK延迟测量原理

 

3、ACK延迟和传播延迟的关联:如图3所示,ACK延迟由三部分组成:

  • 阴影1:发送节点TX到接收节点RX的传播延迟;
  • 阴影2:接收节点控制器发送ACK前的元件响应时间;
  • 阴影3:接收节点TX到发送节点RX的传播延迟。

结合ACK延迟计算公式,上述三部分之和即为ACK延迟,因此ACK延迟包含了双向的传播延迟和控制器响应时间。

CAN总线

图3  ACK延迟和传播延迟关系图

注:

1、选择ACK前的下降沿作为参考点,是因为下降沿落在接收节点同步段外时会触发重同步,可减少波特率误差积累对结果的影响。

2、本章节内的解析均以简单双节点CAN网络模型为例,所以从ACK开始边沿开始计算延时,较好理解。若在多节点的CAN网络中,因为无法看到最晚节点开始回应ACK的时间,所以以ACK的结束边沿进行传播延时的计算。

3、受接收节点重同步影响,ACK起始回应时间存在0~1TQ偏差,因此可能比标准值小0~1TQ。


 

传播延迟过大的影响


如图 4所示,ZPS-CANFD设备与USBCANFD卡组网后,USBCANFD卡以500K bps的波特率(采样点80%)在线缆很短的情况发送数据给ZPS,然后通过ZPS软件中报文接收列表可以看到,没有错误帧产生。

CAN总线

图4  传播延迟很小时现象将线缆换为100m,ZPS-CANFD设备与USBCANFD卡组网后,USBCANFD卡以相同的波特率参数发送数据给ZPS,然后从ZPS软件中报文接收列表看到有很多错误帧产生,如图 5所示。

CAN总线

图5  传播延迟很大时现象

 

对比两次报文接收列表关联的波形数据可以看出,当ZPS报出应答定界符错误时,本应该是隐性位的应答定界符位却显示了显性位,不符合CAN规范要求,所以导致了错误帧的产生。那么为什么应答定界符位显示了显性位呢?下面我们对其进行详细的解析。

1、传播延迟过大为什么会产生错误帧?

图 6所示,从DUT-TX波形可以知道DUT在TA时刻开始等待ZPS回应的ACK,从DUT-RX的波形可以知道在TB时刻,DUT开始收到ZPS回应的ACK,所以ACK延迟是1604ns。

前面已知DUT的采样点是80%,所以DUT应该在1600ns(2000ns×0.8)的时刻判断显隐性电平,但是由于传播延迟的影响,此时DUT-RX刚好收到ZPS回应的ACK边沿临界位置,所以会导致DUT在正确的时刻采样不到预期的显性值,从而发送了主动错误帧(6个显性错误标志位+8个隐性错误定界符位)。

正是因为DUT发送了主动错误帧,将ACK应答定界符的隐性位覆盖了,所以ZPS识别到的应答定界符位不符合CAN规范,然后报出了应答定界符错误。

CAN总线

图6  错误帧解析

2、如何消除因传播延迟过大导致的通信错误?

 

 

传播延迟主要是受线缆、收发器及其附件影响,如果想要减小延迟,我们可以在选型时,选择延迟较小的收发器,或者减少网络中的线缆长度,如果这些硬件环境已经固定,我们可以通过修改软件参数,来消除通信错误,比如降低波特率或采样点后移。

下面以采样点后移(采样点调整到90%)的方法为例,来细看通信错误被消除后的波形细节。

 

 

如图 7所示,从报文接收列表中,可以看到无错误帧产生,通过观察报文关联的波形,如图 8所示,M0时刻为DUT采样点位置:2000ns×0.9=1800ns,大于ACK延迟时间1604ns,所以此时DUT-RX可正确判断显隐性位,从而不会发出错误帧。

CAN总线

图7  采样点改为90%,无错误帧产生

CAN总线

图8  DUT- RX识别位正确不报错误帧

 

在上述分析环节,我们基于所获取的DUT发送(TX)与接收(RX)数据,借助ZPS的光标测量功能,手动地测量出传播延迟,帮助大家直观理解传播延迟对通信的具体影响。那在实际的现场环境中,如何快速的测量出系统的传播延迟呢?下面,我们一起看下ZPS-CANFD设备的自动化系统传播延迟评估功能测量出的结果。
 

ZPS-CANFD系统传播延迟评估

ZPS-CANFD设备的“系统传播延迟评估”功能,可自动化测量关键参数,步骤如下:

1)配置软硬件测试环境,打开评估功能并设置参数;

 

 

2)测试完成后,输出ACK偏移(延迟时间)、最大传播延迟、建议传播段长度、线缆长度等结果,如图9所示。

CAN总线

图9  结果展示从测量结果界面可以看到,最大ACK偏移是1607ns,最大单向传播延迟是803ns,当波特率为100k bps、采样点75%时,采样点占比(75%)远大于延迟占比(1607/10000≈16%),无通讯错误,但是若波特率提高至500k bps且采样点仍为75%,可能因延迟占比接近采样点而引发通讯错误。
 

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

全部0条评论

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

×
20
完善资料,
赚取积分