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

news/2025/1/16 10:37:31/文章来源:https://www.cnblogs.com/polelink/p/18674477

引言

 

 

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

 

 

CAN错误帧格式

图1 错误帧通用格式

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

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

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

 

 

CAN错误帧分类

 

 

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

 

图2 错误检测分布

  • 位错误:回读总线位状态与自身发送的位不同,发送节点发送错误帧,需要注意仲裁段和ACK位发送隐性位但是回读到显性位除外。
  • 填充错误:违反位填充规则,发送节点在发送报文时遇到5个相同极性位后需要插入1个极性相反的位,接收节点再接收报文时则需要删除填充位。如果接收到的报文存在6个相同极性的位,则第6个位便是出现了填充错误,需要在该位后发送错误帧。
  • ACK错误:当发送节点发送报文后,在ACK位没有在总线上检测到其他节点发送的显性电平。
  • 格式错误:固定格式位场(如CRC界定符、ACK界定符、EOF等)与协议标准定义的显隐性不同则会被检测为非法位触发格式错误,发送和接收节点都会发送错误帧。
  • CRC错误:接收节点计算的CRC序列与接收到报文中的CRC序列不同。

错误帧的表现形式

 

图3 实验环境配置

 

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

1. 发送错误

  • 位错误

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

 

图4 位错误报文示例

  • ACK错误

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

 

图5 ACK错误报文示例

  • 格式错误

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

 

图6 EOF格式错误报文示例

2. 接收错误

  • 填充错误

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

 

图7 报文填充错误

  • CRC错误

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

 

图8 CRC错误报文示例

  • 格式错误

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

 

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

 

 

错误标志重叠

 

 

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

 

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

 

图10 错误标志完全重叠

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

 

图11 错误标志部分重叠

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

 

图12 错误标志不重叠

总结

CAN总线在几十年的使用和发展下,被使用在几乎每一台车辆上,可以说是车辆行业不可或缺的存在,是现如今国际上应用最广泛的现场总线之一。而错误帧是CAN总线用于错误报告的报文,丰富的错误帧类型有助于迅速排查定位总线故障,因此错误帧的理解和使用也是作为总线测试工程师的必修课,希望这篇简介能够帮助了解错误帧的相关内容。

 

北汇信息是一家专注于汽车电子测试领域的企业,对网络测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载网络的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。

 

参考文献

【1】《ISO11898-1 - 2015》,Road vehicles - Controller area network (CAN) - Part 1:Data link layer and physical signalling

【2】《CAN入门书》瑞萨科技RCJ05B0027-0100

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/870025.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化办公时代的工时管理新模式

在当今数字化浪潮的推动下,传统的工时管理方式已经难以满足高效办公的需求。在线文档协作工具作为数字化办公的关键环节,正在深刻改变工时管理的模式与效率。本文将探讨在线协作工具在工时管理中的独特优势及其对现代办公模式的深远影响。一、在线文档协作的数字化优势 1. 信…

[车联网/以太网] SOME/IP 协议

概述: SOME/IP 协议车载以太网协议栈总共可划分为5层:物理层 数据链路层 网络层 传输层 应用层其中本文所要描述的SOME/IP就是一种应用层协议。SOME/IP协议内容按照AUTOSAR中的描述,我们可以更进一步的拆分为3类子协议:应用层的SOME/IP标准协议 SOME/IP-SD协议 TP层的SOME/IP…

[附源码]图书管理系统+SpringBoot+Vue前后端分离

今天带来一款优秀的项目:图书借阅管理系统源码 。 系统采用的流行的前后端分离结构,内含功能包括 "系统权限角色",“登录,注册”,“图书管理”,“借阅管理”,“图书类别管理”,“系统账号管理”。 如果您有任何问题,也请联系小编,小编是经验丰富的程序员!…

深入解析 Spring AI 系列:解析函数调用

我们之前讨论并实践过通过常规的函数调用来实现 AI Agent 的设计和实现。但是,有一个关键点我之前并没有详细讲解。今天我们就来讨论一下,如何让大模型只决定是否调用某个函数,但是Spring AI 不会在内部处理函数调用,而是将其代理到客户端。然后,客户端负责处理函数调用,…

【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7901520.html?templateId=1718516 问题现象 在YMP校验过程中,从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致问题的风险及影响 YMP校验出现数据内容不一致 问题影响的版本 yashandb…

提升团队协作效率:必备的多人协作软件清单

企业团队协作离不开多人协作软件的支持。这些软件各有特色,功能各异,企业可以根据自身的需求和实际情况进行评估和选择。选择一款适合自己的协作软件,不仅能够提升团队效率,还能让团队协作更加顺畅、高效。在快节奏的现代办公环境中,企业团队协作变得尤为重要。为了提升团…

东方通更新HTTPS证书,开启SSL协议

东方通更新HTTPS证书,开启SSL协议1、上传jks证书2、进入tongweb管理页面,打开WEB容器配置->HTTP通道管理。点击tong-http-listener3、修改HTTP为HTTPS,注意端口由80变为443。证书类型改成JKS,证书路径就是上传的路径,还有证书密码

如何调整虚拟主机中网站后台的超时设置

问题描述: 用户在登录网站后台后,短时间内会自动跳转到登录页面,导致无法正常操作。用户询问如何设置或调整网站后台的超时时间。 回答: 为了确保网站后台的稳定性和用户体验,调整超时时间是一个常见的需求。以下是详细的步骤和建议:检查程序池设置: 网站后台的超时问题…

这个指令实际上是的一部分用来指定一个文档的初始或主体在撰写如建这样的长篇文章时通常我们会构建更详细的…………这个指令实际上是HTML的一部分,用来指定一个HTML文档的初始或主体。在撰写如“《建》”这样的长篇文章时,通常我们会构建更详细的结构来实现复杂内容展示,这…

如何让大小不同的图片等比缩放不变形显示在固定大小的div里?写个例子

在前端开发中,等比缩放图片以适配固定大小的 div 容器是一个常见的需求。这通常可以通过 CSS 来实现,确保图片在缩放时不会变形。以下是一个简单的例子,说明如何使用 CSS 来完成这个任务:HTML 结构:首先,创建一个包含图片的 div 容器。 <div class="image-contai…

vulfocus靶场实操tomcat-pass-getshell弱口令漏洞

vulfocus靶场实操之tomcat-pass-getshell弱口令漏洞 提前声明: 本节所有操作都是在vulfocus靶场中进行操作,严禁在无授权的情况下进行任何的渗透操作。 前言: 本节主要对vulfocus靶场中tomcat中间件进行模拟攻击,通过该中间件存在的漏洞进入到后台拿到flag,完成该靶场要求…

Animate 2024 动画设计制作

Animate 2024 动画设计制作 Adobe Animate 2024是一款动画设计制作软件。集成了诸多绘图工具、高级动画特效和灵活的交互设计功能,让用户能够轻松绘制出精美的角色与场景,并通过精细的时间轴控制实现流畅的动画效果。无论是二维动画、HTML5广告、互动网页、游戏元素还是教育课…