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

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

3天内不再提示

虹科干货 | 带你全面认识“CAN总线错误”(一)——CAN总线错误与错误帧

虹科智能自动化 2022-05-27 10:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

A simple intro to CAN errors

CAN总线错误

在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误的类型、CAN错误帧和CAN节点错误状态,并通过实际的应用测试生成并记录CAN错误。

什么是CAN总线错误?

控制器局域网络(Controller Area Network, CAN)是当今汽车和工业自动化系统的重要标准。可靠性是CAN总线协议的核心优势之一,这使其成为安全关键应用的理想选择。但值得注意的是,错误处理对CAN的稳健性来说至关重要。


CAN总线错误的发生可能有多种原因,比如电缆故障、噪声、不匹配的终端电阻、CAN节点故障等。识别、分类和解决此类CAN错误是确保整个CAN系统持久性能的关键。错误处理可以识别和拒绝错误的信息,使发送者能够重新传输信息。此外,该过程有助于识别和断开持续传输错误信息的CAN节点。

CAN错误处理如何工作?

错误处理是CAN标准和每个CAN控制器的内置部分。换句话说,每个CAN节点都以相同的方式处理故障识别和限制。下面我们做了一个简单的说明性示例:


0f0280f4-dd12-11ec-b80f-dac502259ad0.jpg

具体步骤示例

1

CAN节点1将消息传输到CAN总线-并读取它发送的每一位,在这样做的过程中,它发现发送显性的一位被读取为隐性

2

这是一个“位错误”,节点1会引发一个活动错误标志以通知其他节点,实际上,这意味着节点1将6个显性位序列发送到总线上,反过来,6个显性位被其他节点视为“位填充错误”

3

作为响应,节点2和3同时引发活动错误标志,此引发的错误标志序列构成“CAN错误帧”的一部分

4

CAN节点1的发送器将其“发送错误计数器”(TEC)增加8,CAN节点2和3将其“接收错误计数器”(REC)增加1,CAN节点1自动重新传输消息。结果节点1将其TEC减少1,节点2和3将其REC减少1

CAN错误帧

在上述示例中,CAN节点“引发活动错误标志”,从而创建“错误帧”以响应检测到的CAN错误。为了理解它是如何工作的,让我们首先看一个“正常”的CAN帧(没有错误):


0f24c178-dd12-11ec-b80f-dac502259ad0.jpg

请注意,我们突出显示了CAN帧中的“位填充”。位填充是CAN标准的一个微妙但重要的部分。基本上它规定,每当CAN节点发送相同逻辑电平(显性或隐性)的五个位时,它必须发送相反电平的一个位。接收CAN节点会自动删除这个额外的位。此过程有助于确保网络的持续同步。

根据前面的示例,当CAN节点1在CAN消息传输期间检测到错误时,它会立即传输相同逻辑电平的6位序列——也称为引发活动错误标志。

0f466e90-dd12-11ec-b80f-dac502259ad0.jpg

正如前文所述,这样的序列违反了位填充规则——也称为“位填充错误”。此外,此错误对网络上的所有CAN节点都是可见的(与导致此错误标志出现的“位错误”相反)。因此,错误标志的增加可以被视为一种“全局性”错误发现的方式,确保通知每个CAN节点。

请注意,其他CAN节点会将活动错误标志视为位填充错误。作为响应,它们还会引发一个活动错误标志。正如我们后面将解释的,区分错误标志很重要。特别是,第一个错误标志(来自“发现”节点)通常被称为“主要”活动错误标志,而后续“反应”节点的错误标志被称为“次要”活动错误标志(s)。

0f956266-dd12-11ec-b80f-dac502259ad0.jpg

CAN错误帧示例

示例1

6位错误标志

在这里,所有CAN节点同时发现CAN报文中存在错误并同时发出错误标志。结果是错误标志全部重叠并且显性位的总序列总共持续6位。在这种情况下,所有CAN节点都将自己视为“发现”CAN节点。

0fb8415a-dd12-11ec-b80f-dac502259ad0.jpg

同时发现这种类型的错误帧在实践中不太常见。但是,它可能是由于格式错误(例如CRC定界符是显性而不是隐性)或CAN发送器在写入CRC字段期间遇到位错误而发生的。

示例2

12位错误标志

在本示例中,CAN节点1传输显性位,但将其读取为隐性-这意味着它发现了位错误。它立即发送6个显性位的序列。其他节点仅在读取完整的6位后才发现位填充错误,之后它们同时提高错误标志,从而产生随后的6个显性位序列-即总共12个。

0fe55c76-dd12-11ec-b80f-dac502259ad0.jpg

示例3

9位错误标志

在本示例中,当CAN节点1发现位错误并开始发送6个显性位时,它已经发送了3个显性位序列。一旦通过主要活动错误标志的一半,节点2和3识别位填充错误(由于3个初始显性位后面跟着另外3个显性位)并开始提高它们的错误标志。结果是来自错误标志的显性位序列变为9位长。

1038ddb0-dd12-11ec-b80f-dac502259ad0.jpg

上述引发错误标志的逻辑反映在我们所谓的“活动”CAN错误帧中。请特别注意各个节点引发的次要错误标志如何相互重叠——以及主要和次要标志也可能如何重叠。结果是来自引发错误标志的主要位序列可能是6到12位长。

该序列始终以8个隐性位序列终止,标志着错误帧的结束。实际上,活动错误帧可能在错误CAN帧中的不同位置“开始”,这取决于何时发现错误。然而,结果将是相同的:所有节点都丢弃错误的CAN帧,发送节点可以尝试重新发送失败的消息。

被动错误标志

如果CAN节点已从其默认的“活动”状态转变为“被动”状态,那么它将只能引发所谓的“被动错误标志”。被动错误标志是6个隐性位的序列。在这种情况下,区分由发送节点和接收节点引发的被动错误标志是相关的。


示例4

发送器是被动错误

如图所示,如果发送器(例如我们示例中的CAN节点1)引发被动错误标志(例如响应位错误),这将对应于6个隐性位的连续序列。这又被所有CAN节点检测为位填充错误。假设其他CAN节点仍处于其错误活动状态,它们将引发6个显性位的活动错误标志。换言之,无源发送器仍然可以“传达”CAN帧是错误的。

105fcd3a-dd12-11ec-b80f-dac502259ad0.jpg


示例5

接收器是被动错误

相反,如果接收器产生被动错误标志,这实际上对总线上的所有其他CAN节点“不可见”(因为任何显性位都胜过隐性位序列)。实际上,这意味着错误被动接收器不再具有破坏其他CAN节点传输的帧的能力。

10b45314-dd12-11ec-b80f-dac502259ad0.jpg

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

    关注

    59

    文章

    3097

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于FPGA的轻量级CAN总线控制器实现方案

    CAN总线作为工业和汽车领域最常用的通信总线,具有拓扑结构简洁、可靠性高、传输距离长等优点。CAN总线的非破坏性仲裁机制依赖于
    的头像 发表于 04-03 10:10 1885次阅读
    基于FPGA的轻量级<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>控制器实现方案

    CAN总线报错看不懂?5种错误+5步排查法次讲清

    CAN总线通信异常?错误帧频繁出现?本文详解五种错误类型,并提供五步排查法,助你快速定位问题根源。错误
    的头像 发表于 03-16 11:36 384次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>报错看不懂?5种<b class='flag-5'>错误</b><b class='flag-5'>帧</b>+5步排查法<b class='flag-5'>一</b>次讲清

    S32K310 MCAL CAN 在初始通电时触发错误怎么解决?

    时 ,总线上会发送错误。此外,即便CAN2处于禁用状态,错 误仍会触发。(如图所示,PA
    发表于 03-12 07:47

    CAN_DeInit API 错误的原因?怎么解决?

    我尝试在 BOOTLOADER 跳转到 APP 之前关闭 CAN 控制器,但当我调用 CAN_DeInit 时,它实际上没有重新初始化,导致跳转后在 CAN 总线上发送了
    发表于 03-06 08:26

    HK-CoreTest:专业的CAN/CAN FD总线测试软件,高效易用

    面对汽车电子开发中复杂的车载网络测试需求,如何选择款功能全面、操作便捷的CAN/CAN FD测试软件?
    的头像 发表于 12-29 13:20 695次阅读

    EtherCAT总线节点顺序错误问题详解

    总线节点顺序错误是工程师常遇到的典型问题之。本文将深入剖析该问题的成因、诊断方法及解决方案,并结合实际案例提供系统性指导。 、EtherCAT
    的头像 发表于 12-27 07:39 313次阅读
    EtherCAT<b class='flag-5'>总线</b>节点顺序<b class='flag-5'>错误</b>问题详解

    CAN被动错误恢复后为什么rt_device_write还会返回异常呢?

    1、系统启动,给CAN总线发送数据,总线设备通讯正常 2、制造总线错误,当总线设备
    发表于 12-22 16:29

    干货 | 嵌入式AI崛起,CAN总线如何重塑新角色?

    工作?答案,或许就藏在历经考验的通信技术——CAN总线之中。分享的这篇来自国际CAN领域权威组织CiA(CANinAutomation)
    的头像 发表于 11-26 17:03 1975次阅读
    <b class='flag-5'>虹</b><b class='flag-5'>科</b><b class='flag-5'>干货</b> | 嵌入式AI崛起,<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>如何重塑新角色?

    圆满收官 | CAN总线专题全系列直播精华回顾已上线!

    CAN总线系列直播圆满收官!HongKeWebinars作为汽车电子通信领域的核心协议,CAN总线
    的头像 发表于 11-24 17:55 2975次阅读
    圆满收官 | <b class='flag-5'>虹</b><b class='flag-5'>科</b><b class='flag-5'>CAN</b><b class='flag-5'>总线</b>专题全系列直播精华回顾已上线!

    直播回顾 | 硬核干货放送,CAN总线应用层直播助您告别低效联调,破解车载网络开发核心难题

    周二下午3点准时开播,资深技术工程师团队倾囊相授,助您掌握CAN总线从基础到高阶的全链路技术与核心技能。更多硬核课程与技术干货敬请持续关
    的头像 发表于 09-17 17:39 958次阅读
    直播回顾 | 硬核<b class='flag-5'>干货</b>放送,<b class='flag-5'>虹</b><b class='flag-5'>科</b><b class='flag-5'>CAN</b><b class='flag-5'>总线</b>应用层直播助您告别低效联调,破解车载网络开发核心难题

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

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

    CAN总线采样点不致的危害

    采样点不致是CAN总线网络中常见的配置错误,可能导致位错误、同步问题、错误
    发表于 06-07 08:55

    如何评估CAN总线信号质量

    网络中,数据通过双绞线上的差分信号传输。信号质量直接影响节点正确解读数据的能力。信号质量差可能表现为: 位错误 :由于噪声或信号失真导致的位误判。 错误CAN
    发表于 06-07 08:46

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

    CAN节点的稳定性、可靠性和安全性得益于其强大的错误管理机制。上篇文章我们介绍了CAN控制器的错误管理机制的工作原理。本文将基于其工作原理
    的头像 发表于 04-30 18:24 1020次阅读
    如何验证<b class='flag-5'>CAN</b>控制器的<b class='flag-5'>错误</b>响应机制?