前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >CAN总线错误处理机制

CAN总线错误处理机制

作者头像
Hello工控
发布2024-12-25 15:18:20
发布2024-12-25 15:18:20
1620
举报
文章被收录于专栏:Hello工控Hello工控
工业场景的应用最紧要的不是要多先进,而是要稳定可靠。对于通信而言,这点也是如此!

特别是对错误的处理上,好的机制能确保了数据传输的完整性和系统的可靠性。

而CAN总线采用了多种错误检测和处理机制,包括位监测、帧校验序列、确认检查、帧格式检查和错误帧。我们重点介绍下这些机制。

CAN流处理

首先我们在上一节介绍如何保证CAN消息交互有条不紊的:

如何保证CAN bus总线数据有条不紊的交互?

CAN通信原理是基于优先级来发送消息的。在CAN协议中,消息的优先级是在仲裁字段中设定的。对于标准帧,消息标识符是11位;而对于扩展帧,消息标识符是29位。这样的设计允许系统设计者在设计阶段就确定消息标识符。消息标识符越小,消息的优先级就越高。

仲裁机制的工作流程如下:

  1. 总线空闲检测:发送者想要发送消息时,首先等待CAN总线变为空闲状态。
  2. 发送起始位:如果CAN总线是空闲的,发送者会发送SOF(帧起始位)或者主导位来获取总线访问权。
  3. 发送消息标识符:接着,发送者会以最高有效位的形式发送消息标识符位。
  4. 仲裁过程:如果在发送隐性位的同时节点检测到总线上的主导位,这意味着该节点在仲裁中失败,因此会停止传输更多的位。
  5. 等待和重发:发送者会等待,一旦总线空闲,就会重新发送消息。

通过这种方式,CAN总线确保了高优先级的消息能够优先被发送,同时也能够在多个节点同时尝试发送数据时,通过仲裁机制解决冲突,保证了CAN总线的高效和可靠通信。

五种错误检测方法

CAN总线系统的关键特性之一是其高效的错误检测和处理能力。系统包含五种错误检测方法,每种方法都旨在确保数据传输的完整性,如下所述:

  • 位监测:CAN网络系统中的每个传输节点在传输时都会监测总线的状态。如果总线状态与预期状态不匹配,节点就知道发生了错误。
  • 帧校验序列(FCS):该字段包含一个基于帧内数据计算的循环冗余校验(CRC)值。每个接收节点计算自己的CRC值,并将其与接收到的FCS进行比较。如果两个值不匹配,节点就知道发生了错误。
  • 确认检查:每个帧包含一个ACK位,所有其他节点都期望发送一个主导位来确认接收到帧。如果传输节点在ACK位上没有检测到主导位,它就知道发生了错误。
  • 帧格式检查:每个帧都有特定的格式,包括预期出现主导位和隐位的特定位置。如果节点检测到违反此格式的情况,它就知道发生了错误。
  • 错误帧:当节点使用上述任何方法检测到错误时,它会传输一个特殊的错误帧,以警告所有其他节点发生了错误。这导致所有节点丢弃当前帧,并等待正确帧的重传。当检测到错误时,检测到错误的节点会自动重传帧。这会一直持续,直到帧无错误地传输。如果一个节点检测到太多错误,它会进入错误被动状态,此时它只监听总线而不传输。如果错误继续发生,节点会进入总线关闭状态,此时它与总线断开连接。这种机制确保了一个有故障的节点不会干扰总线上的通信。

参考链接:

  1. https://www.wevolver.com/article/understanding-can-bus-a-comprehensive-guide
  2. https://www.javatpoint.com/can-protocol
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档