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

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

3天内不再提示

科普系列:CAN总线错误帧及排查方法简介

北汇信息POLELINK 2023-02-23 15:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


作者 | 蒹葭小编 | 吃不饱

CAN帧有多种格式,错误帧作为CAN帧中独特的一种,了解其作用,类型与产生原因,对于进行测试以及开发有很大的帮助,本文将对错误帧的相关基础知识以及后续的分析排查进行介绍。
01错误帧的基础知识错误帧的作用错误帧是CAN总线用于进行错误通知的报文,可以将任何一个节点发现的错误通知给其他节点,包括发送节点;进而丢弃错误的报文,发送节点再进行报文的重新发送,保证传递信息的准确性。
d35dfa92-b231-11ed-ad0d-dac502259ad0.gif错误类型
d3a84886-b231-11ed-ad0d-dac502259ad0.png图1CAN的分层体系结构
首先,如上图所示,按照分层的理念,CAN的错误检测和错误信号的发送都处于二层,即数据链路层,因此,错误检测所检测的报文也是检测数据链路层的报文。其次,当总线上的帧出现错误时,节点就会发出错误帧,而错误也有多种类型:

位错误

位错误是发送节点在发送数据,进行回读,检测到总线上的数据与自身发出的数据不同时,发出的错误。由于CAN的仲裁机制和ACK应答机制,在仲裁场和ACK处发出隐性位,而回读到显性位时并不会认为是位错误。d3c5a34a-b231-11ed-ad0d-dac502259ad0.png图2位检测

格式错误

格式错误是在固定格式的位场处检测到非法位,例如:ACK界定符固定是一个隐性位,若检测到显性,就认为是格式错误。d3d719a4-b231-11ed-ad0d-dac502259ad0.png图3格式检测

ACK错误

发送节点在自身发送的报文的ACK位检测到隐性时,会认为没有其他节点接收到此条报文,即为ACK错误。d410c578-b231-11ed-ad0d-dac502259ad0.png图4ACK检测

填充错误

CAN的填充机制是每检测到5个连续相同的位时,即填充一个相反的位,以提供足够的跳变沿来进行同步,当在总线上有报文时,检测到连续的6个相同的位时,即认为是填充错误。d429e346-b231-11ed-ad0d-dac502259ad0.png图5填充检测

CRC错误

接收节点接收到的CRC序列与发送节点发送的CRC序列不同时,即识别为CRC错误。d4543966-b231-11ed-ad0d-dac502259ad0.png图6CRC检测
d35dfa92-b231-11ed-ad0d-dac502259ad0.gif错误帧的类型

上文已经说了CAN错误的类型,当检测到错误时,就会有错误帧发出,处于不同错误状态的节点,所发送的错误帧格式是不同的。从错误的角度分析,节点有三种不同的状态,分别是主动错误状态,被动错误状态和总线关闭状态。并有两种不同的错误计数器,分别是接收错误计数器REC和发送错误计数器TEC。当节点检测到错误时,会发出错误帧,并增加错误计数器的值,根据错误计数器的值,节点会进入不同的状态。具体的计数算法参照 ISO 11898-1。d47a7054-b231-11ed-ad0d-dac502259ad0.png图7节点状态转换图
当TEC和REC的值都小于128时,节点处于主动错误状态时,节点发送的错误帧由6个显性位(主动错误标志)加8个隐性位(错误界定符)组成,共14位。一个节点发出错误帧,其他节点识别到后会跟着发出错误帧,由此机制,将一个节点检测到的错误通知给其他节点,也能防止其他节点接收到错误的报文。当TEC或REC大于127时,节点处于被动错误状态时,节点发送的错误帧由6个隐性位(被动错误标志)加8个隐性位(错误界定符)即14个连续的隐性位组成,当处于被动错误状态的节点在接收报文时检测到错误进而发出的错误帧,一定会被正常的报文或者其他节点的错误帧覆盖掉。只有当处于被动错误状态的节点在主动发出报文,发出的错误帧才会被其他节点正常检测到并触发其他节点发出错误帧。当TEC大于255时,节点处于总线关闭状态(busoff)时,节点会停止收发报文,直到有用户请求(如:重启)或总线连续128次出现11个连续的隐性位时,节点重新恢复到主动错误的状态。总线关闭状态主要是为了防止一个节点出现故障或持续被干扰时,不断发出错误帧,从而影响其他节点的正常收发报文。
综上,错误帧按具体格式分类只有两类,即6个显性0 + 8个隐性1和6个隐性1 + 8个隐性1两种。当一个节点连续检测到多个错误,进入到被动错误模式时,此时很有可能是此节点出了问题或者受到干扰,这个时候这个节点检测出的错误可能已经不被信任,所以处于被动错误模式的节点发出的错误帧是14个隐性位,可以被正常报文或正常的错误帧覆盖掉。

02实车上出现错误帧的主要原因
对于实车而言出现错误帧主要可能是因为以下几种原因:终端电阻不匹配:终端电阻用以匹配电缆的阻抗特性,减少信号的反射,当终端电阻与总线的阻抗不匹配时,产生的反射现象就会较为严重,影响结果。
d48e63f2-b231-11ed-ad0d-dac502259ad0.png总线电阻75Ωd4a0fd1e-b231-11ed-ad0d-dac502259ad0.png总线电阻40Ωd4b1bdac-b231-11ed-ad0d-dac502259ad0.png总线电阻60Ω图8 不同电阻对波形的影响
电容对波形的影响:电容不匹配会影响电平上升下降沿的时间,进而影响采样时的结果。总线电容过大,会导致放电时间增加,下降沿时间会增加,影响最后采样的结果。
d4c69bb4-b231-11ed-ad0d-dac502259ad0.pngd4d78992-b231-11ed-ad0d-dac502259ad0.png

图9 不同电容对波形的影响
支线长度的影响:支线长度过长,会对总线的阻抗匹配产生影响,形成的反射也会更严重,进而影响总线上的波形。采样点不合适的节点。当总线上的节点的采样点位置设置的不一致,有可能会出现错误帧。电磁干扰比较大的电源,较大的电磁干扰会影响总线的波形,进而影响总线上的报文,出现错误帧。
总结:实车上出现错误帧一般是波形较差,波形的波动,进而影响采样的结果,出现错误帧。
03错误帧的排查方法示例
进行错误帧的原因排查,观察错误帧的类型等信息,可借助Vector公司软件工具CANoe、示波器万用表等。在CANoe的Trace窗口中可以看到报文的详细信息,错误类型等。实车上出现错误帧时,综合出现错误帧的原因,如下部分典型排查方法可以参考。

先判断终端节点是否在线,加载DBC来判断是否有终端节点的报文,或者用万用表测量终端电阻阻值是否正确。

d4f0aac6-b231-11ed-ad0d-dac502259ad0.png

图10 判断节点是否在线


确认错误帧出现的频率,是否为周期型或仅在固定的时间段内出现。

排查错误帧出现时,对应的报文是否有固定的ID,或者是固定的节点。

根据错误帧的信息排查,是否与正常报文相关;同时再结合重传和报文的优先级综合分析。

d50e0cf6-b231-11ed-ad0d-dac502259ad0.png

图11 优先级对错误帧的影响


04结语
通过上述的介绍,相信读者对于错误帧的类型和原因有了一定的了解。对于测试而言,了解错误帧的类型,进而分析错误出现的原因,对于测试中出现的问题以及对测试结果的分析,都是可以参考的方法。北汇信息专注于汽车电子网络通信、诊断刷写、逻辑功能测试开发服务,期待进一步沟通交流、共享合作的机会。

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

    关注

    58

    文章

    3010

    浏览量

    471472
  • 总线
    +关注

    关注

    10

    文章

    3014

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CAN总线通信异常频发?CANBridge+帮您快速搞定!

    CAN总线通信现场,工程师们常常遇到这样的难题:实验室测试一切正常,但一到现场就频繁出现错误,通信异常不断,排查起来既耗时又费力,令人头
    的头像 发表于 07-14 11:38 361次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>通信异常频发?CANBridge+帮您快速搞定!

    电商API常见错误排查指南:避免集成陷阱

      在电商平台开发中,API集成是连接系统、实现数据交换的核心环节。然而,许多开发者在集成过程中常遇到错误,导致项目延迟、数据丢失或用户体验下降。本文将逐步介绍常见错误类型、排查方法
    的头像 发表于 07-11 14:21 1794次阅读
    电商API常见<b class='flag-5'>错误</b><b class='flag-5'>排查</b>指南:避免集成陷阱

    CAN总线采样点不一致的危害

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

    如何评估CAN总线信号质量

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

    CAN芯片逻辑响应验证测试

    CAN芯片研发阶段,需要做诸多涉及通讯错误管理验证的问题。在ISO-16845国际标准中,规定完善的测试标准,如错误检测,传输相关检测
    的头像 发表于 04-30 18:24 606次阅读
    <b class='flag-5'>CAN</b>芯片逻辑响应验证测试

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

    使用ZPS-CANFD设备验证CAN控制器的错误响应过程。CAN控制器的错误管理机制是保障CAN总线
    的头像 发表于 04-30 18:24 647次阅读
    如何验证<b class='flag-5'>CAN</b>控制器的<b class='flag-5'>错误</b>响应机制?

    CAN总线故障排查:从问题到解决的实战案例

    视频推荐在工业现场的煤安监控网络中,CAN总线通信常因复杂环境出现数据丢失问题。本文以一起煤安监控网络中CAN总线数据丢失的故障排查案例,简
    的头像 发表于 02-28 11:37 1407次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>故障<b class='flag-5'>排查</b>:从问题到解决的实战案例

    实战案例 | RK3588 CAN通信BUG避坑指南

    RK3588内置CAN控制器存在以下不可修复的硬件缺陷:发送扩展时可能降级为标准,导致丢帧;接收时概率性CRC校验和ID填充错误,触发总线
    的头像 发表于 02-20 08:30 9053次阅读
    实战案例 | RK3588 <b class='flag-5'>CAN</b>通信BUG避坑指南

    CAN总线十万个为什么 | 做好这几点,总线通讯不再异常

    导读在当今的工业和汽车电子领域,CAN总线的应用极为广泛,但错误问题却常常困扰着工程师们。本文将通过一个真实的案例,深入探讨CAN
    的头像 发表于 02-14 11:37 924次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>十万个为什么 | 做好这几点,<b class='flag-5'>总线</b>通讯不再异常

    CAN错误的表现形式#汽车总线 #CAN #CANoe

    CAN
    北汇信息POLELINK
    发布于 :2025年01月22日 16:23:53

    基于Vector工具进行CAN协议错误的分析实践

    广播发送的短结构,还体现在其错误检测机制上。通过总线数据以及总线波形来分析总线故障时,CAN
    的头像 发表于 01-15 10:03 994次阅读
    基于Vector工具进行<b class='flag-5'>CAN</b>协议<b class='flag-5'>错误</b><b class='flag-5'>帧</b>的分析实践

    CAN错误格式与错误分类#汽车总线 #CAN #CANoe

    汽车总线
    北汇信息POLELINK
    发布于 :2025年01月13日 09:44:37

    科普系列】LIN协议错误类型介绍

    了解 LIN总线错误类型对于开发、测试均具有极大的好处。通过对错误类型的全面了解,开发人员可以提前预测和避免潜在的问题,增强系统的稳定性、容错能力和安全性,从而提升系统整体的可靠性和性能。对于测试人员来说则可以更加从容应对
    的头像 发表于 01-02 17:27 4827次阅读
    【<b class='flag-5'>科普</b><b class='flag-5'>系列</b>】LIN协议<b class='flag-5'>错误</b>类型介绍

    使用CAN总线进行数据采集的方法

    使用CAN总线进行数据采集的方法通常涉及一系列步骤,这些步骤确保了数据的准确采集、处理和存储。以下是一个详细的方法指南: 一、了解
    的头像 发表于 12-20 18:18 3460次阅读