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

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

3天内不再提示

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

北汇信息POLELINK 2025-01-15 10:03 78次阅读


作者 |Dawnfly
小编 | 不吃猪头肉

f45a9360-d2e4-11ef-9434-92fbcf53809c.png

引言

CAN(Controller Area Network)协议是当前使用最普遍的车载通信协议之一,其优点不只体现在多主并行、最高达1Mbit/sec的传输速率(针对标准CAN)、基于优先级的仲裁机制以及广播发送的短帧结构,还体现在其错误检测机制上。通过总线数据以及总线波形来分析总线故障时,CAN协议错误检测机制中丰富的错误帧类型能让定位问题的效率更高。错误帧是CAN协议进行错误报告的方式,可以将总线上任何一个节点发现错误的信号通知给其他节点。作为一名总线测试工程师,在日常测试过程中不可避免的会接触到错误帧,因此了解错误帧的作用、类型与产生原因,对于测试工作的顺利开展有很大的帮助。

f472fcde-d2e4-11ef-9434-92fbcf53809c.png

CAN错误帧格式

f485820a-d2e4-11ef-9434-92fbcf53809c.png

图1 错误帧通用格式

CAN错误帧通用格式如上图1所示,主要包括错误标志和错误界定符两个部分,其形成的原理以及作用如下:

错误标志

出现错误后若CAN节点处在主动错误阶段则发送6个连续显性位,在被动错误阶段则发送6个连续隐性位。由于6个连续相同的位违背了位填充规则会引发填充错误,会使其他节点也发送错误标志,因此,一个错误标志通常由两个连续6位的信号组成,由于会存在错误标志的重叠,所以错误标志的长度会在6-12位的范围。

错误界定符

错误界定符由8个连续隐性位组成,所有节点在发送错误标志后,都会向总线发送1个隐性位,若检测到总线上该位为隐性,则发送剩下的7个隐性位。

f4969324-d2e4-11ef-9434-92fbcf53809c.png

CAN错误帧分类

CAN错误帧根据产生错误的节点类型可以分为发送错误接收错误两大类,根据错误产生的原因则可以分为位错误、填充错误、ACK错误、格式错误以及CRC错误,下图2为各类错误帧所检测范围的分布。

f4a939f2-d2e4-11ef-9434-92fbcf53809c.png

图2 错误检测分布

位错误:回读总线位状态与自身发送的位不同,发送节点发送错误帧,需要注意仲裁段和ACK位发送隐性位但是回读到显性位除外。

填充错误:违反位填充规则,发送节点在发送报文时遇到5个相同极性位后需要插入1个极性相反的位,接收节点再接收报文时则需要删除填充位。如果接收到的报文存在6个相同极性的位,则第6个位便是出现了填充错误,需要在该位后发送错误帧。

ACK错误:当发送节点发送报文后,在ACK位没有在总线上检测到其他节点发送的显性电平。

格式错误:固定格式位场(如CRC界定符、ACK界定符、EOF等)与协议标准定义的显隐性不同则会被检测为非法位触发格式错误,发送和接收节点都会发送错误帧。

CRC错误:接收节点计算的CRC序列与接收到报文中的CRC序列不同。

f4bc49ac-d2e4-11ef-9434-92fbcf53809c.png

错误帧的表现形式

f4d47d9c-d2e4-11ef-9434-92fbcf53809c.png

图3 实验环境配置

为了更直观的展示各种错误帧类型,搭建了如图3所示的实验环境,以VN1630为发送节点,VH6501为接收节点,结合VH6501的报文干扰功能制造各类错误帧。

1. 发送错误

位错误

如图4所示,用VH6501干扰发送节点仿真报文的SOF位后,SOF位出现位错误,在Bit0开始发送错误帧,接收节点在Bit5检测到存在6个连续的隐性位,触发填充错误。

f4db96cc-d2e4-11ef-9434-92fbcf53809c.png

图4 位错误报文示例

ACK错误

按照CAN协议的规定,在一帧报文发出之后,如果接收节点成功接收了该帧报文,则接收节点需要在该帧报文ACK段内向总线上发送一个显性位来对发送节点的报文进行应答,此时发送节点会在ACK段内从总线上回读到一个显性位。如图5所示,通过配置关闭接收节点的ACK应答功能,此时发送节点在ACK位没有收到其他节点应答,触发ACK错误。

f4f9d902-d2e4-11ef-9434-92fbcf53809c.png

图5 ACK错误报文示例

格式错误

如图6所示,分别干扰EOF的第一位和第六位都会导致发送和接收节点出现格式错误,是由于发送节点发送隐性位EOF,回读到总线为显性位,在该位后发送格式错误帧。

f5073bc4-d2e4-11ef-9434-92fbcf53809c.png

图6 EOF格式错误报文示例

2. 接收错误

填充错误

如图7所示,干扰报文0x210,使Bit7隐性变为显性,总线出现6个连续显性位,使得发送节点和接收节点都检测到填充错误,发送错误帧。

f513ce52-d2e4-11ef-9434-92fbcf53809c.png

图7 报文填充错误

CRC错误

如图8所示,通过VH6501直接发送报文序列,并篡改数据场使其与CRC序列不匹配,触发接收节点检测到CRC错误,错误位置是100(ACK DEL),ISO 11898-1中规定检测到CRC错误后,应该在ACK界定符之后发送错误标志。

f5243d00-d2e4-11ef-9434-92fbcf53809c.png

图8 CRC错误报文示例

格式错误

如图9所示,Position 98和Position 100分别为CRC界定符和ACK界定符,干扰发送报文固定格式位后,接收节点检测到格式错误帧。

f530ade2-d2e4-11ef-9434-92fbcf53809c.pngf546be84-d2e4-11ef-9434-92fbcf53809c.png

图9 界定符格式错误报文示例

f567b1ac-d2e4-11ef-9434-92fbcf53809c.png

错误标志重叠由于错误标志为6个极性相同的位,因此错误标志会导致填充错误,引起其他节点发送错误标志,或在发送错误标志时将原本个,从而使其他节点紧跟着发送错误标志,当引起全局错误时,所有节点都会同时发送错误标志,使得错误标志为6个位。以下为三种典型错误标志重叠范例

重叠部分为6个位时

如图10所示,在固定格式ACK界定符发送后,总线获取到的信号为显性位,由此发送节点和接收节点同时检测到格式错误,都在ACK界定符后发送6个连续显性位。

f5781d3a-d2e4-11ef-9434-92fbcf53809c.png

图10 错误标志完全重叠

重叠部分为5个位时

用定位可以如图11所示,当接收节点B出现CRC错误时,在ACK DEL后发送主动错误标志,发送节点和接收节点A监测到EOF的第一位被显性位覆盖,发送格式错误帧,总线上表现为7位长度的错误标志。

f5896acc-d2e4-11ef-9434-92fbcf53809c.png

图11 错误标志部分重叠

重叠部分为0时

如图12所示,发送节点回读总线监测到位错误,发送错误标志,当错误标志的6个连续显性位发送完毕之后,总线上出现填充错误,引起其他节点发送错误标志,从而使错误标志达到12个位。

f59e3cf4-d2e4-11ef-9434-92fbcf53809c.png

图12 错误标志不重叠

f5af5200-d2e4-11ef-9434-92fbcf53809c.png

总结

CAN总线在几十年的使用和发展下,被使用在几乎每一台车辆上,可以说是车辆行业不可或缺的存在,是现如今国际上应用最广泛的现场总线之一。而错误帧是CAN总线用于错误报告的报文,丰富的错误帧类型有助于迅速排查定位总线故障,因此错误帧的理解和使用也是作为总线测试工程师的必修课,希望这篇简介能够帮助了解错误帧的相关内容。北汇信息是一家专注于汽车电子测试领域的企业,网络测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载网络的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。

参考文献:【1】《ISO11898-1 - 2015》,Road vehicles - Controller area network (CAN) - Part 1:Data link layer and physical signalling【2】《CAN入门书》瑞萨科技RCJ05B0027-0100【3】文中部分图片来源于Vector

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

    关注

    57

    文章

    2766

    浏览量

    464195
  • 车载通信
    +关注

    关注

    0

    文章

    47

    浏览量

    13458
  • Vector
    +关注

    关注

    3

    文章

    62

    浏览量

    8650
收藏 人收藏

    相关推荐

    浅谈CAN FD总线协议格式

    假期更新了一文搞懂CAN总线协议格式,CAN FD总线协议怎能错过?本篇博文将讲解CAN FD
    发表于 10-14 12:49 3515次阅读
    浅谈<b class='flag-5'>CAN</b> FD总线<b class='flag-5'>协议</b><b class='flag-5'>帧</b>格式

    CAN总线错误基础知识及排查分析技术

    错误CAN总线用于进行错误通知的报文,可以将任何一个节点发现的错误通知给其他节点,包括发送节
    发表于 02-24 09:27 1865次阅读

    示波器破解CAN错误/BusOff的经验分享

    MCU内置了CAN控制器用来将MCU的数据封装为CAN格式,同时它也负责CAN的校验和错误
    发表于 09-08 09:19 1588次阅读

    一文读懂CAN通讯错误

    CAN总线通信技术广泛应用于多个行业,是每个总线设计工程师必学的一个通讯网络。然而,对于CAN通信中的错误,许多人仅停留在表面了解,缺乏深入理解,这导致许多工程师在面对总线通信故障时
    的头像 发表于 06-12 08:24 2852次阅读
    一文读懂<b class='flag-5'>CAN</b>通讯<b class='flag-5'>错误</b><b class='flag-5'>帧</b>

    CAN错误定义

    ] &0x40为真,表明恢复到错误激活状态。CAN通信协议出错  #define CAN_ERR_PROT  0x00000008U  当错误
    发表于 01-03 15:57

    一文解析CAN总线远程错误

    本文主要介绍了CAN总线远程错误,首先我们先来了解了解一下通讯时使用的类型有哪些,他们的作用又是什么,具体的跟随小编一起来了解一下吧
    的头像 发表于 05-07 11:30 2.7w次阅读
    一文解析<b class='flag-5'>CAN</b>总线远程<b class='flag-5'>帧</b>和<b class='flag-5'>错误</b><b class='flag-5'>帧</b>

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 06-09 09:46 2232次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>错误</b>类型

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

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 05-27 10:39 4679次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(一)——<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>与<b class='flag-5'>错误</b><b class='flag-5'>帧</b>

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 06-02 09:41 1492次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>错误</b>类型

    虹科干货 | 带你全面了解“CAN总线错误”(四)——在实践中生成和记录CAN错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 06-09 10:21 1768次阅读
    虹科干货 | 带你全面了解“<b class='flag-5'>CAN</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中独特的一种,了解其作用,类型与产生
    的头像 发表于 02-23 15:11 3235次阅读
    科普系列:<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b><b class='flag-5'>帧</b>及排查方法简介

    CAN协议数据的介绍

    通过 CAN 总线传输数据是需要按照一定协议进行的,CAN 协议提供了 5种格式来传输数据:数
    的头像 发表于 07-25 10:36 1.1w次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>协议</b>数据<b class='flag-5'>帧</b>的介绍

    CAN和CANFD协议简介(下)

    则规定了通讯逻辑。 2.2.1 的种类 通信是通过以下5种类型的进行的。 • 数据 • 遥控
    的头像 发表于 08-02 12:15 3210次阅读
    <b class='flag-5'>CAN</b>和CANFD<b class='flag-5'>协议</b>简介(下)

    如何用示波器排查CAN的各种错误呢?

    如何用示波器排查CAN的各种错误呢? 导言: 控制器局域网络(Controller Area Network,CAN)是一种常用的现场总线通信协议
    的头像 发表于 12-07 11:09 1260次阅读

    CAN通信协议中有哪几种类型?CAN通信中格式的作用

    CAN通信协议中有四种类型,分别是数据、远程错误
    的头像 发表于 01-30 09:18 5740次阅读