CAN bus off ——ISO11898
什么是can bus off?
CAN总线关闭(CAN bus off)是指CAN节点进入一种错误状态,无法继续正常的数据通信。当一个CAN节点的错误计数器超过了设定的阈值时,该节点将进入CAN总线关闭状态。在这种状态下,该节点将停止发送和接收数据,并且无法参与到总线通信中。
CAN总线关闭状态通常是由于节点发送错误次数过多导致的,这可能是由于硬件故障、电缆连接问题、电源电压异常或其他通信干扰引起的。一旦节点进入CAN总线关闭状态,它将无法正常工作,直到重新初始化或解决问题为止。
其他节点在CAN总线关闭状态下的节点仍然可以继续正常的数据通信,但是受到关闭节点的影响,可能会导致通信性能下降或数据传输延迟。因此,当出现CAN总线关闭情况时,需要及时识别和解决问题,以确保整个CAN总线的正常运行。
什么情况会出现bus off?
CAN总线关闭(bus off)状态通常出现在以下情况下:
- **错误计数器超过阈值:**每个CAN节点都有一个错误计数器,当节点在发送或接收数据时发生错误,计数器会递增。如果错误计数器超过了设定的阈值,节点将进入bus off状态。
- **通信故障:**CAN总线的通信可能会受到各种干扰和故障的影响,如电缆连接问题、电源电压异常、信号干扰等。这些故障可能导致节点无法正常发送或接收数据,最终导致bus off状态。
- **节点故障:**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),可以采取以下步骤:
- 检查和修复通信故障:首先需要排查并解决导致CAN总线关闭的问题,如检查电缆连接是否良好,确保电源电压正常,排除信号干扰等。
- 重新初始化CAN节点:将进入bus off状态的CAN节点进行重新初始化,包括重新设置CAN控制器、清除错误计数器等。
- 等待恢复时间:在重新初始化节点后,需要等待一段时间,通常为128个错误帧时间(TEC),以确保CAN节点已经完全恢复。 快慢恢复,所谓的快慢恢复,即进入CAN BUSOFF状态后,ECU重新初始化CAN模块,并等待t(tBusOffQuick 或 tBusOffSlow)后,重新使能总线报文的发送。一些主机厂对其系统供应商的设备提出了相应的Busoff后恢复时间需求。例如:当ECU 进入Busoff 模式后,首先,ECU 执行快恢复模式,连续n次(TBD值,不同厂商次数要求不一样)快速恢复后,ECU 进入慢恢复模式。
判断CAN总线关闭状态是否已经恢复,可以通过以下方式:
- 监测错误计数器:在重新初始化节点后,可以通过监测节点的错误计数器来判断是否还在持续增加。如果错误计数器停止增加或保持在一个较低的值,说明CAN总线关闭已经恢复。
- 数据通信测试:进行数据通信测试,发送一些数据帧并观察节点的发送和接收情况。如果节点能够正常发送和接收数据,说明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 解析的话,我们将会借助ip2region,该项目维护了一份较为详细的本地ip 地址对应表,如果为了离线环境的使用,需要导入该项目依赖,并指定版本,不同版本的方法可能存在差异。 <dependency>…...
亚马逊、速卖通,阿里国际等平台测评如何用自养号测评补单
在电商领域,补单是一种常见的推广方式。它能够优化商品销售、留下优质评论、打压竞品和赶走跟卖等,具有很多好处。然而,补单也存在安全性问题,有些卖家找人补单后店铺反而出了问题。因此,了解测评系统是非常重要的的。…...
ubuntu挂载ext4文件系统
文章目录 1.虚拟机分配10G磁盘用来挂载ext4文件系统2.磁盘分区3.创建文件系统4.挂载文件系统5.卸载文件系统6.使用ior测试ext4三种日志模式(1)ordered(2)journal(3)writeback 1.虚拟机分配10G磁盘用来挂载e…...
MySQL 读写分离
目录 一、什么是读写分离? 二、为什么要读写分离呢? 三、什么时候要读写分离? 四、主从复制与读写分离 五、MySQL 读写分离原理 六、企业 使用MySQL 读写分离场景 1)基于程序代码内部实现 2)基于中间代理层实现…...
【多线程例题】顺序打印abc线程
顺序打印-进阶版 方法一:三个线程竞争同一个锁,通过count判断是否打印 方法二:三个线程同时start,分别上锁,从a开始,打印后唤醒b 三个线程分别打印A,B,C 方法一:通过co…...
WebSocket工具类
最近的项目在整长连接WebSocket,之前也写过一个感觉没有这个全面。提供个工具类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 的基本步骤: 打开终端或命令行界面。 输入以下命令来编辑当前用户的 crontab 文件: 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面板中
有时候,不会自动将微服务展示在service面板中。 添加service面板: service面板: 更新所有maven,就可以自动将微服务展示在service面板中。...
MySQL体系结构及执行过程
一、MySQL体系结构 1、网络连接层 客户端连接器(Client Cnnectors):提供支持与MySQL服务器建立连接。 建立连接命令:mysql -h -u -p -h指定MySQL服务的IP 若本地连接则不需要 每一个连接均会保存用户权限,中途修改权…...
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“钉耙编程”中国大学生算法设计超级联赛(3)8-bit Zoom 题解 有一张尺寸为 n n n\times n nn的图片,你要将图片放大成大小为 n Z 100 n Z 100 \dfrac{nZ}{100}\times \dfrac{nZ}{100} 100nZ100nZ的图片。 当下列任何一个条件不成…...
【PWN · ret2text | 伪rand()】[HDCTF 2023]pwnner
伪随机数以及ctypes库的初步接触 目录 前言 一、题目 二、解题思路 三、exp 总结 前言 一道简单的ret2text,加上一些伪随机的知识,对于本蒟蒻萌新来说,比较新,值得记录。 一、题目 栈溢出保护、PIE保护都没有开。反汇编后…...
第五章:通过对抗擦除的目标区域挖掘:一种简单的语义分割方法
0.摘要 我们研究了一种逐步挖掘具有鉴别性的物体区域的原则方法,使用分类网络来解决弱监督语义分割问题。分类网络只对感兴趣对象中的小而稀疏的鉴别性区域有响应,这与分割任务的要求相背离,分割任务需要定位密集、内部和完整的区域以进行像素…...
自定义view - 玩转字体变色
自定义View步骤: 1>:values__attrs.xml,定义自定义属性; 2>:在第三个构造方法中获取自定义属性; 3>:onMeasure【不是必须的】; 4>:onDraw:绘制代…...
工业边缘网关HiWoo Box的4G/5G CPE功能:为现场无线设备提供网络
引言 随着工业物联网的快速发展,现场设备的无线连接需求越来越迫切。然而,在一些室外或者不方便布网的场景下,为现场的无线设备提供网络仍然是一个挑战。为了满足这一需求,工业边缘网关HiWoo Box引入了4G/5G CPE(Cust…...
万象熔炉 | Anything XL快速上手:拖拽上传参考图进行ControlNet扩展
万象熔炉 | Anything XL快速上手:拖拽上传参考图进行ControlNet扩展 安全声明:本文仅讨论本地化部署的AI图像生成技术,所有数据处理均在用户本地设备完成,不涉及任何网络传输或云端服务,确保数据隐私和安全。 1. 工具简…...
YOLO目标检测完全指南:从入门到实践
YOLO目标检测完全指南:从入门到实践YOLO概述 YOLO(You Only Look Once)是目标检测领域的开创性算法,其核心思想非常直接——对图像只看一次,同时输出所有物体的位置和类别。 两阶段 vs 单阶段 传统R-CNN系列是"两…...
2026年西安市莲湖区Geo搜索优化排名,专业企业究竟谁能拔得头筹?
在数字化浪潮席卷的今天,Geo搜索优化(地理搜索优化)对于企业的重要性不言而喻。尤其在西安市莲湖区,企业们对于提升自身在Geo搜索中的排名需求愈发迫切。究竟哪家专业企业能够在2026年的竞争中脱颖而出,成为Geo搜索优化…...
终极Godot解包指南:3分钟学会提取游戏资源
终极Godot解包指南:3分钟学会提取游戏资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 想要轻松提取Godot游戏中的图片、音频和脚本资源吗?godot-unpacker正是你需要的God…...
保姆级教程:在Ubuntu 20.04上跑通ORB-SLAM3双目模式(EuRoC MH04数据集实测)
从零到一:Ubuntu 20.04下ORB-SLAM3双目模式实战全记录(EuRoC MH04数据集篇) 当第一次在实验室的显示器上看到ORB-SLAM3成功重建出MH04数据集的完整三维环境时,那种成就感至今难忘。作为视觉SLAM领域的标杆算法,ORB-SL…...
保姆级教程:用Zephyr RTOS 3.x和nRF52832开发板,5分钟跑通你的第一个BLE心率监测应用
从零构建基于Zephyr RTOS的BLE心率监测系统:nRF52832开发实战指南 在物联网和可穿戴设备爆发的时代,低功耗蓝牙(BLE)技术已成为连接智能设备的重要纽带。对于嵌入式开发者而言,掌握BLE开发意味着打开了通往智能硬件世界…...
计算机内存与缓存完全指南
计算机内存与缓存完全指南 目录 计算机存储体系概览内存(RAM)深度解析 2.1 RAM 的基本原理2.2 DRAM vs SRAM2.3 DDR 内存发展历史与对比2.4 内存关键参数详解2.5 内存模组类型(DIMM / SO-DIMM / LPDDR) CPU 缓存深度解析 3.1 缓…...
Docker TLS 证书一键生成脚本(安全加密远程访问)
Docker TLS 证书一键生成脚本(安全加密远程访问) 这是一键自动生成 Docker TLS 加密证书的 Shell 脚本,无需手动输入复杂命令,自动生成 CA 证书、服务端证书、客户端证书,配置好权限,直接复制就能用&#x…...
Spring - 循环依赖
一、循环依赖概览1.1 什么是循环依赖?循环依赖是指两个或多个 Bean 之间互相持有对方引用,形成闭环。例如 A 依赖 B,B 又依赖 A。A 依赖 BB 依赖 A1.2 循环依赖的三种类型// 类型1:构造器注入的循环依赖(无法解决&…...
MaskGIT Revolution: How Bidirectional Transformers Redefine Image Synthesis
1. MaskGIT如何颠覆传统图像生成模式 想象一下你正在拼一幅巨型拼图。传统方法要求你从左上角开始,严格按照从左到右、从上到下的顺序一块块拼接。这就是当前主流图像生成Transformer的工作方式——自回归解码。而MaskGIT带来的革命性变化,就像允许你同时…...
