0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

ZLG致远电子 2025-07-15 11:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文导读

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

79274aca-612e-11f0-9cf1-92fbcf53809c.png

图1 简单双节点网络模型

2、ACK延迟定义:

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

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

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

经历n个位时间(793c67de-612e-11f0-9cf1-92fbcf53809c.jpg)后,找到TX预期收到ACK开始边沿的时刻T1;

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

ACK延迟计算公式:794bdd4a-612e-11f0-9cf1-92fbcf53809c.png

7960f694-612e-11f0-9cf1-92fbcf53809c.png

图2 ACK延迟测量原理

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

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

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

797427b4-612e-11f0-9cf1-92fbcf53809c.png

图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软件中报文接收列表可以看到,没有错误帧产生。

798c9452-612e-11f0-9cf1-92fbcf53809c.png

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

79a3af0c-612e-11f0-9cf1-92fbcf53809c.png

图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规范,然后报出了应答定界符错误。

79c1f368-612e-11f0-9cf1-92fbcf53809c.png

图6 错误帧解析

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

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

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

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

79d956fc-612e-11f0-9cf1-92fbcf53809c.png

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

79ea9174-612e-11f0-9cf1-92fbcf53809c.png

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

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

ZPS-CANFD系统传播延迟评估

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

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

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

79fdf020-612e-11f0-9cf1-92fbcf53809c.png

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

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

    关注

    145

    文章

    2020

    浏览量

    134705
  • 通信异常
    +关注

    关注

    0

    文章

    4

    浏览量

    6131
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CAN总线知识】为何总线“镰刀”波形频频发生?

    导读无论是CAN总线还是485总线,实际应用中经常会出现各种异常,常因总线组网后,波形边沿出现过缓、呈“镰刀”状的
    的头像 发表于 12-03 01:04 1440次阅读
    【<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>知识】为何<b class='flag-5'>总线</b>“镰刀”波形频频发生?

    优化CAN节点位时序以适应数字隔离器传播延迟

    它们发送被动位,允许另一个节点赢得仲裁时,如果出现传播延迟,则会停止监控(图1中的节点A)。 图1. 两个节点间的仲裁传播延迟不可过大,否则
    发表于 10-16 17:00

    优化CAN节点位时序以适应数字隔离器传播延迟

    ;而当它们发送被动位,允许另一个节点赢得仲裁时,如果出现传播延迟,则会停止监控(图1中的节点A)。 图1. 两个节点间的仲裁传播延迟不可过大
    发表于 10-22 16:40

    CAN总线多节点通信异常问题解决

    的两个120Ω的终端电阻的作用是使阻抗连续,消除反射。二、CAN总线三节点通讯异常现象测试工具:1.PC端:利用USB转CAN模块将PC机作为一个节点挂载到
    发表于 07-01 19:20

    can总线通信出现奇怪现象

    目前在测试 nxp芯片can总线通信功能时出现一奇怪现象,在波特率为20k时,节点a以15ms时间间隔连续发送64帧数据过程中节点b发送一帧数据竞争无影响。当节点a以9ms间隔连续发送
    发表于 08-17 21:11

    STM32的串口通讯的实验异常现象及解决办法有哪些

    串口调试助手有何功能?STM32的串口通讯的实验异常现象及解决办法有哪些?
    发表于 12-01 07:01

    电源设计调试过程中的异常现象分析

    调试过程中所看到的一些异常现象,以及后来的解决办法。其实很多工程师认为设计电源是非常重经验的一门技术,要见多识广。这种经
    发表于 10-09 10:49 1938次阅读

    工业烤箱操作方法及异常现象排除

    工业烤箱操作方法及异常现象排除
    发表于 08-23 16:26 3904次阅读

    蓄电池极板硫化的异常现象盘点

    有关蓄电池极板硫化后的异常现象,分为充电中的异常现象,使用中的异常现象,充电终了时温度很高,电压降低,电解液低于正常值,蓄电池容量显著降低,充足电的蓄电池,搁置很短时间就无电。
    的头像 发表于 02-14 01:37 4306次阅读

    贴片机取料的异常现象及解决方法

    贴片机取料异常现象定义为:软件增加抛料次数达到五次自动暂停并且蜂鸣器长鸣报警。下面分析从网络技术转摘的贴片机取料异常原因及排除方法。
    的头像 发表于 03-16 11:04 1.2w次阅读

    STM32G0B1看似无法唤醒的一种异常现象分析

    看似无法唤醒的一种异常现象分析
    的头像 发表于 10-25 17:09 2393次阅读
    STM32G0B1看似无法唤醒的一种<b class='flag-5'>异常现象</b>分析

    变压器运行中常见的异常现象应如何处理呢?

    变压器运行中常见的异常现象应如何处理?
    的头像 发表于 03-08 09:19 943次阅读
    变压器运行中常见的<b class='flag-5'>异常现象</b>应如何处理呢?

    叉车can总线异常怎么解决

    ,被广泛应用于叉车控制系统中,实现了叉车各控制单元之间的高速、可靠通信。然而,在实际使用过程中,叉车CAN总线可能会出现各种异常情况,影响叉车的正常使用。 叉车
    的头像 发表于 06-16 10:56 4290次阅读

    电路异常现象及解决

    1 电路异常现象 这是面包板论坛看到的一则帖子,帖主的问题主要是使用一个网上借鉴的光耦串口隔离电路,结果实际调试发现根本通讯不上:   您是否已经看到这个问题发生的原因了?   2 问题原因
    的头像 发表于 02-07 10:10 880次阅读
    电路<b class='flag-5'>异常现象</b>及解决

    CAN总线电容过大?三种解决方案来了

    在新能源汽车路试中,CAN总线传输异常是一个常见问题。本期我们将探讨由于总线电容过大导致的下降沿
    的头像 发表于 07-22 11:36 480次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>电容<b class='flag-5'>过大</b>?三种解决方案来了