当前位置: 首页 > news >正文

CAN bus off ——ISO11898

什么是can bus off?
CAN总线关闭(CAN bus off)是指CAN节点进入一种错误状态,无法继续正常的数据通信。当一个CAN节点的错误计数器超过了设定的阈值时,该节点将进入CAN总线关闭状态。在这种状态下,该节点将停止发送和接收数据,并且无法参与到总线通信中。
CAN总线关闭状态通常是由于节点发送错误次数过多导致的,这可能是由于硬件故障、电缆连接问题、电源电压异常或其他通信干扰引起的。一旦节点进入CAN总线关闭状态,它将无法正常工作,直到重新初始化或解决问题为止。
其他节点在CAN总线关闭状态下的节点仍然可以继续正常的数据通信,但是受到关闭节点的影响,可能会导致通信性能下降或数据传输延迟。因此,当出现CAN总线关闭情况时,需要及时识别和解决问题,以确保整个CAN总线的正常运行。

什么情况会出现bus off?
CAN总线关闭(bus off)状态通常出现在以下情况下:

  1. **错误计数器超过阈值:**每个CAN节点都有一个错误计数器,当节点在发送或接收数据时发生错误,计数器会递增。如果错误计数器超过了设定的阈值,节点将进入bus off状态。
  2. **通信故障:**CAN总线的通信可能会受到各种干扰和故障的影响,如电缆连接问题、电源电压异常、信号干扰等。这些故障可能导致节点无法正常发送或接收数据,最终导致bus off状态。
  3. **节点故障:**CAN节点自身的硬件或软件问题可能导致其无法正常工作。例如,节点的CAN控制器故障、节点程序错误等都可能导致bus off状态。
    CAN总线的CANH和CANL 短接、CAN总线的CANH接GND和CAN总线的CANL接VCC、CAN总线的因为终端电阻的问题,导致RXD相对于TXD 的信号延迟较大导致。(以500K的CAN为例,通常情况RXD和TXD的延迟约在100ns左右,若由终端断电阻的配置不对会导致TXD和RXD延迟时间增大可能达到500ns。若是2M的CANFD 就会造成数据传送产生问题,最终导致BUSOFF )

当一个节点进入bus off状态时,它将停止发送和接收数据,并无法参与到总线通信中。其他节点仍然可以继续正常的数据通信,但受到bus off节点的影响,可能会导致通信性能下降或数据传输延迟。因此,当出现bus off情况时,需要及时识别和解决问题,以确保整个CAN总线的正常运行。

进入can bus off

在故障限制方面,一个节点可能处于三种状态中的一种,这取决于错误计数器的级别 error active,error passive 和 bus off.

Error counting错误计数法

1、当接收机检测到错误时,接收错误计数器应增加1,除非在发送主动错误标志或过载标志时检测到的错误是位错误。
2、当接收端在发送错误标志后检测到一个主比特作为第一个比特时,接收错误计数器需要增加8个( 8 )。
3、当发送端发送错误标志时,发送错误计数器应增加8 ( 8 )个。

  • 如果发送端是错误被动的并且由于没有检测到主导ACK而检测到ACK错误,并且在发送其被动错误标志时没有检测到主导比特。
  • 如果发送方发送了一个错误标志,因为在仲裁过程中发生了一个错误,那么这个错误标志应该是隐性的,并且被发送为隐性的,但被监控为显性的。
    在这两种情况下,发射误差计数器保持不变。 +8

4、 如果发送端在发送主动错误标志或过载标志的同时检测到比特错误,则发送错误计数器应增加8 ( 8 )。
5、如果接收机在发送主动错误标志或过载标志的同时检测到比特错误,则接收错误计数器应增加8 ( 8 )。
6、在发送主动错误标志、被动错误标志或过载标志后,任何节点最多可以容忍七( 7 )个连续的优势比特。在检测到第14 ( 14 )个连续的主导比特(在出现主动错误标志或过载标志的情况下)后或检测到第8个连续的主导比特后,在每增加8个连续的主导比特后,每个发送端将其发送错误计数器增加8 ( 8 )个,每个接收端将其接收计数器增加8 ( 8 )个。
7、当一帧(得到ACK ,直到EOF结束,没有检测到误差)成功传输后,除非传输错误计数器已经为零( 0 ),否则传输错误计数器将减少1 ( 1 )。 -1
8、成功接收一帧(接收到ACK时隙无误码且成功发送ACK比特)后,如果接收误差计数器在一( 1 )到一百二十七( 127 )之间,则应减小1。如果接收错误计数器为零( 0 ),则应保持为零( 0 ),如果大于一百二十七( 127 ),则应设置为一百一十九( 119 )到一百二十七( 127 )之间的值。

主动错误和被动错误状态之间的转换

如果节点的发送错误计数器或接收错误计数器超过127 ( 127 ) ( 7位接收误差计数器情况下的进位条件),则监控器应请求MAC子层将相应节点设置为错误被动状态。让节点成为错误被动的错误条件将导致节点发送一个主动错误标志。当发送错误计数器和接收错误计数器均小于或等于127 ( 127 ) 时,错误被动节点将重新变为错误主动节点。当节点的接收误差计数器超过一百二十七( 127 )的误差被动限时,该接收误差计数器的进一步增量将受到计数器宽度的限制。在下一次成功接收一帧(过渡到错误激活( error-active ))时,接收错误计数器应设置为低于错误被动l的值。

bus off manangement

如果一个节点的发送错误计数器大于二百五十五( 255 ) ( 8位传输错误计数器情况下的进位条件),那么主管应该请求PL将该节点设置为总线关闭状态。总线关闭状态不得对公交车产生任何影响。它既不发送任何帧,也不发送ACK、错误帧、过载帧。这样的节点是否接收来自总线的帧取决于实现方式。处于总线关闭状态的节点在监测到(见图16)总线上128 ( 128 )个连续11 ( 11 )个隐性位后,其错误计数器都设置为0 ( 0 ),可能成为错误活跃的(不再是总线关闭)。注:现有的实现方式可能不同。例如,6.14允许发射端和接收端的关断;恢复可能只在用户请求时开始。这在ISO 16845的一致性测试中没有涉及。

恢复bus off

要恢复CAN总线关闭状态(bus off),可以采取以下步骤:

  1. 检查和修复通信故障:首先需要排查并解决导致CAN总线关闭的问题,如检查电缆连接是否良好,确保电源电压正常,排除信号干扰等。
  2. 重新初始化CAN节点:将进入bus off状态的CAN节点进行重新初始化,包括重新设置CAN控制器、清除错误计数器等。
  3. 等待恢复时间:在重新初始化节点后,需要等待一段时间,通常为128个错误帧时间(TEC),以确保CAN节点已经完全恢复。 快慢恢复,所谓的快慢恢复,即进入CAN BUSOFF状态后,ECU重新初始化CAN模块,并等待t(tBusOffQuick 或 tBusOffSlow)后,重新使能总线报文的发送。一些主机厂对其系统供应商的设备提出了相应的Busoff后恢复时间需求。例如:当ECU 进入Busoff 模式后,首先,ECU 执行快恢复模式,连续n次(TBD值,不同厂商次数要求不一样)快速恢复后,ECU 进入慢恢复模式。

判断CAN总线关闭状态是否已经恢复,可以通过以下方式:

  1. 监测错误计数器:在重新初始化节点后,可以通过监测节点的错误计数器来判断是否还在持续增加。如果错误计数器停止增加或保持在一个较低的值,说明CAN总线关闭已经恢复。
  2. 数据通信测试:进行数据通信测试,发送一些数据帧并观察节点的发送和接收情况。如果节点能够正常发送和接收数据,说明CAN总线关闭已经恢复

参考文章:
https://blog.csdn.net/u014156403/article/details/103725924
ISO11898标准文档

相关文章:

CAN bus off ——ISO11898

什么是can bus off? CAN总线关闭(CAN bus off)是指CAN节点进入一种错误状态,无法继续正常的数据通信。当一个CAN节点的错误计数器超过了设定的阈值时,该节点将进入CAN总线关闭状态。在这种状态下,该节点将停…...

如何评测一个大语言模型?

编者按:大型语言模型(Large language models, LLMs)因其在学术界和工业界展现出前所未有的性能而备受青睐。随着 LLMs 在研究和实际应用中被广泛使用,对其进行有效评测变得愈发重要。近期已有多篇论文围绕大模型的评测进行研究&am…...

React中useMemo和useCallback的区别

一句话来解释,useMemo是缓存值的,useCallback是缓存函数的。 一、useMemo: 接收两个参数,第一个参数是个函数,第二个是依赖项。返回一个memoized值,只有当它的某个依赖项改变时才重新计算 memoized 值&…...

SpringBoot 快速实现IP地址解析

如果使用本地ip 解析的话&#xff0c;我们将会借助ip2region&#xff0c;该项目维护了一份较为详细的本地ip 地址对应表&#xff0c;如果为了离线环境的使用&#xff0c;需要导入该项目依赖&#xff0c;并指定版本&#xff0c;不同版本的方法可能存在差异。 <dependency>…...

亚马逊、速卖通,阿里国际等平台测评如何用自养号测评补单

在电商领域&#xff0c;补单是一种常见的推广方式。它能够优化商品销售、留下优质评论、打压竞品和赶走跟卖等&#xff0c;具有很多好处。然而&#xff0c;补单也存在安全性问题&#xff0c;有些卖家找人补单后店铺反而出了问题。因此&#xff0c;了解测评系统是非常重要的的。…...

ubuntu挂载ext4文件系统

文章目录 1.虚拟机分配10G磁盘用来挂载ext4文件系统2.磁盘分区3.创建文件系统4.挂载文件系统5.卸载文件系统6.使用ior测试ext4三种日志模式&#xff08;1&#xff09;ordered&#xff08;2&#xff09;journal&#xff08;3&#xff09;writeback 1.虚拟机分配10G磁盘用来挂载e…...

MySQL 读写分离

目录 一、什么是读写分离&#xff1f; 二、为什么要读写分离呢&#xff1f; 三、什么时候要读写分离&#xff1f; 四、主从复制与读写分离 五、MySQL 读写分离原理 六、企业 使用MySQL 读写分离场景 1&#xff09;基于程序代码内部实现 2&#xff09;基于中间代理层实现…...

【多线程例题】顺序打印abc线程

顺序打印-进阶版 方法一&#xff1a;三个线程竞争同一个锁&#xff0c;通过count判断是否打印 方法二&#xff1a;三个线程同时start&#xff0c;分别上锁&#xff0c;从a开始&#xff0c;打印后唤醒b 三个线程分别打印A&#xff0c;B&#xff0c;C 方法一&#xff1a;通过co…...

WebSocket工具类

最近的项目在整长连接WebSocket&#xff0c;之前也写过一个感觉没有这个全面。提供个工具类WebSocketHelper和Java-WebSocket-1.3.9.jar包以及一个HttpURLConnectionUtil 1、WebSocketHelper import android.util.Log;import org.java_websocket.client.WebSocketClient; imp…...

Linux 的 crontab

Linux 的 crontab 是一个用于在特定时间运行命令或脚本的工具。每个用户都可以创建自己的 crontab 文件来安排定时任务。 以下是使用 Linux crontab 的基本步骤&#xff1a; 打开终端或命令行界面。 输入以下命令来编辑当前用户的 crontab 文件&#xff1a; crontab -e如果是…...

十二.Redis模拟集群搭建

配置环境 查看环境信息 127.0.0.1:6379> info replication #查看当前redis的信息 # Replication role:master #角色 master主机 connected_slaves:0 #从机数量为0 master_failover_state:no-failover master_replid:115f37a0ec195680ef754d6915738b0c0a05f450 master_replid…...

IDEA导入微服务项目后自动将微服务展示在service面板中

有时候&#xff0c;不会自动将微服务展示在service面板中。 添加service面板&#xff1a; service面板&#xff1a; 更新所有maven&#xff0c;就可以自动将微服务展示在service面板中。...

MySQL体系结构及执行过程

一、MySQL体系结构 1、网络连接层 客户端连接器&#xff08;Client Cnnectors&#xff09;&#xff1a;提供支持与MySQL服务器建立连接。 建立连接命令&#xff1a;mysql -h -u -p -h指定MySQL服务的IP 若本地连接则不需要 每一个连接均会保存用户权限&#xff0c;中途修改权…...

21. MySQL基础知识

文章目录 一、索引B Tree 原理1. 数据结构2. 操作3. 与红黑树的比较 MySQL 索引1. BTree 索引2. 哈希索引3. 全文索引4. 空间数据索引 索引优化1. 独立的列2. 多列索引3. 索引列的顺序4. 前缀索引5. 覆盖索引 索引的优点索引的使用条件 二、查询性能优化使用 Explain 进行分析优…...

【ArcGIS Pro微课1000例】0029:绘制全球海洋波纹荡漾效果图

本文讲解ArcGIS Pro3.0中,基于全球航洋面状矢量数据,绘制震撼全球海洋波纹荡漾效果图。 文章目录 一、效果预览二、效果制作三、参数详解一、效果预览 绘制好的海水波纹荡漾效果图如下: 下面我们来学习绘制过程。 二、效果制作 波纹荡漾效果需要在全局或者局部场景中制作…...

2023“钉耙编程”中国大学生算法设计超级联赛(3)8-bit Zoom

2023“钉耙编程”中国大学生算法设计超级联赛&#xff08;3&#xff09;8-bit Zoom 题解 有一张尺寸为 n n n\times n nn的图片&#xff0c;你要将图片放大成大小为 n Z 100 n Z 100 \dfrac{nZ}{100}\times \dfrac{nZ}{100} 100nZ​100nZ​的图片。 当下列任何一个条件不成…...

【PWN · ret2text | 伪rand()】[HDCTF 2023]pwnner

伪随机数以及ctypes库的初步接触 目录 前言 一、题目 二、解题思路 三、exp 总结 前言 一道简单的ret2text&#xff0c;加上一些伪随机的知识&#xff0c;对于本蒟蒻萌新来说&#xff0c;比较新&#xff0c;值得记录。 一、题目 栈溢出保护、PIE保护都没有开。反汇编后…...

第五章:通过对抗擦除的目标区域挖掘:一种简单的语义分割方法

0.摘要 我们研究了一种逐步挖掘具有鉴别性的物体区域的原则方法&#xff0c;使用分类网络来解决弱监督语义分割问题。分类网络只对感兴趣对象中的小而稀疏的鉴别性区域有响应&#xff0c;这与分割任务的要求相背离&#xff0c;分割任务需要定位密集、内部和完整的区域以进行像素…...

自定义view - 玩转字体变色

自定义View步骤&#xff1a; 1>&#xff1a;values__attrs.xml&#xff0c;定义自定义属性&#xff1b; 2>&#xff1a;在第三个构造方法中获取自定义属性&#xff1b; 3>&#xff1a;onMeasure【不是必须的】&#xff1b; 4>&#xff1a;onDraw&#xff1a;绘制代…...

工业边缘网关HiWoo Box的4G/5G CPE功能:为现场无线设备提供网络

引言 随着工业物联网的快速发展&#xff0c;现场设备的无线连接需求越来越迫切。然而&#xff0c;在一些室外或者不方便布网的场景下&#xff0c;为现场的无线设备提供网络仍然是一个挑战。为了满足这一需求&#xff0c;工业边缘网关HiWoo Box引入了4G/5G CPE&#xff08;Cust…...

Set 和 Map 数据结构

数据结构Set ES6提供了新的数据结构Set。它类似于数组&#xff0c;但是成员的值都是唯一的&#xff0c;没有重复的值。 Set本身是一个构造函数&#xff0c;用来生成Set数据结构。 // 数组去重 const set new Set([1, 2, 3, 4, 4]); [...set] // [1, 2, 3, 4]目前个人感觉Se…...

nginx根据url参数动态代理

nginx根据url参数动态代理 请求url格式&#xff0c;其中参数proxy后面的url就是需要访问的真实地址&#xff1a; http://localhost:9388/?proxyhttp://localhost:8038/Content/layui/font/iconfont.woff?v256 http://localhost:9388/?proxyhttp://localhost:8072/article/A…...

TCP协议(收集和记录)

收集写的比较好的文章 TCP四次挥手详解 四次挥手介绍的非常详细, 重点介绍了各种异常情况下协议是如何处理的, 异常处理可以做到两点: 让连接保活, 也许只是一次连接异常让连接死掉后不影响后续的操作, 重点介绍了TIME_WAIT...

【Kafka】自动提交偏移量和手动提交偏移量的区别

区别 自动提交偏移量&#xff08;Auto Commit Offset&#xff09;和手动提交偏移量&#xff08;Manual Commit Offset&#xff09;是两种不同的消费者偏移量管理方式。 自动提交偏移量&#xff1a; 在自动提交模式下&#xff0c;消费者会定期自动将已消费的消息偏移量提交给…...

缠论线段的划分

第一种情况&#xff1a; 第二种情况&#xff1a; 第二种情况中的特例&#xff1a; 第二种情况的特例&#xff1a; 顶分型成立&#xff1a; 向上线段延续&#xff1a; 顶分型后面底分型&#xff0c;形成三段 插入一个分型的反面例子&#xff1a; dd...

【Linux】Ubuntu基本使用与配置, 以及常见问题汇总(一)

前言 大学期间&#xff0c;感觉很多时候学习课外知识都是被推着往前走&#xff0c;很多内容并没有深入去学习&#xff0c;知识的记录受限于所学比较片面&#xff0c;如今渐渐意识到似乎并没有建立起相关知识的体系架构&#xff0c;缺乏一个系统学习并整理的过程。本文将以Ubunt…...

【UE5 多人联机教程】02-开始游戏菜单控件

目录 步骤 一、完善开始游戏菜单控件 二、控件功能实现 2.1 “开始游戏”按钮切换界面 2.2 “创建房间”、“加入房间”按钮切换界面 2.3 “创建房间”按钮 步骤 一、完善开始游戏菜单控件 打开“UMG_Main” 首先在控件切换器外层包裹一个画布面板 然后调整控件切换器全…...

设计模式-工厂方法模式

基于面向对象语言开发中&#xff0c;免不得需要创建对象。前面讲解的"单例模式"也是如此&#xff0c;不过是要创建唯一的对象。本文要讲述“工厂方法模式”是要封装创建对象的过程。工厂&#xff0c;也称之为“制造厂”&#xff0c;用于创建具体的产品直接提供给外界…...

【Hammerstein模型的级联】快速估计构成一连串哈默斯坦模型的结构元素研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 在许多振动应用中&#xff0c;所研究的系统略微非线性。Hammerstein模型的级联可以方便地描述这样的系统。Hammerstein提供了一种基于指数正弦…...

「C 语言」extern关键字

在 C 语言中&#xff0c;关键字 extern 是用来告诉编译器&#xff0c;这个变量 OR 函数在其他文件中已有定义&#xff0c;可在当前文件中使用 当我们定义了一个全局变量 OR 函数时&#xff0c;它就已经具有了外部链接的属性&#xff0c;我们只需要通过在引用该变量的文件中用 …...