• 578查看
  • 0回复

[网络开发] CAN通讯系列12- 错误帧如何发送?

[复制链接]


该用户从未签到

发表于 7-1-2024 16:30:25 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在CAN通讯系列11- 错误帧的基本信息 已了解错误帧的相关概念。本文接着这个主题,通过下面几个例子来做进一步了解。


1. 错误帧发送  

按照CAN协议的规定,当节点检测到位错误、填充错误、格式错误和ACK错误后,就需要开始发送错误帧。而当节点检测到CRC错误后,紧随ACK界定符后的位发送错误帧。接下来,先通过位错误和填充错误的例子来了解错误帧的发送。当发送节点Node_A发送一个显性位,但是从总线上接收到一个隐性位,于是发送节点Node_A就会检测到一个位错误。当发送节点Node_A检测到位错误后,就立即在下一位开始发送主动错误帧,即6个连续显性位的主动错误标志和8个连续隐性位的错误界定符。
CAN通讯系列12- 错误帧如何发送?w1.jpg
Source: https//weixin_40528417/category_7489864.html对应着发送节点Node_A发出的主动错误标志,总线上电平为6个连续显性位。此时,接收节点Node_B和Node_C从总线上听到连续6个显性位,那么就会检测到一个填充错误,于是这两个节点都会发送主动错误帧。那么总线电平又有6个连续显性电平,对应接收节点Node_B和Node_C发出的错误界定符,总线电平有8个连续的隐性电平。在间歇场之后,发送节点Node_A重新发送刚刚出错的报文。再通过接着上面的例子继续了解错误标志重叠,上篇文章介绍错误帧时,提到了错误标志重叠,它由0~6位构成,但具体是几位并未明确,由上面的例子,我们知道发送节点Node_A因位错误发出主动错误标志,紧着接收节点Node_B和Node_C因填充错误也发出了主动错误标志,这里两个主动错误标志就出现了重叠,如下所示:
CAN通讯系列12- 错误帧如何发送?w2.jpg

Source: https//weixin_40528417/category_7489864.html不难发现,上图重叠2位,那么错误标志重叠为4位。按照下图定义,错误标志重叠部就为10位。
CAN通讯系列12- 错误帧如何发送?w3.jpg

Source: CAN入门书,renesas所以错误标志重叠具体几位,取决于相邻两错误标志的重叠位数。  最后,借用CAN/CAN-FD的Bus-Off排查和定位之错误帧2的示波器采集的实际数据再来了解错误帧发送,下图发送节点Tx(紫线)在箭头2到箭头4之间出现连续12us的显性位,而CAN位时间位2us,这意味着出现了连续的6个显性位,即错误帧的主动错误标志。
CAN通讯系列12- 错误帧如何发送?w4.jpg
将差分电压波形(黄线)解析成逻辑电平,结果如下图所示:

CAN通讯系列12- 错误帧如何发送?w5.jpg

2 错误帧再理解
从上面例子发现,一个节点上检测到错误发送错误帧,会导致总线上所有的节点都会检测到错误并发送错误帧,为什么要这样设计?这是因为单一节点上的错误标志格式违背了从帧起始到CRC界定符的位填充规则,也破坏了ACK段或EOF的固定格式。注意:位填充规则(发送器只要检测到位流里有5个连续相同值的位,便自动在位流里插入补充)只是针对数据帧和远程帧,而错误帧格式固定。所以所有其他的节点会检测到错误条件并且开始发送错误标志,因此错误帧就是各个节点的不同错误标志叠加在一起的结果。


该用户从未签到

发表于 16-3-2025 00:58:00 | 显示全部楼层
针对您关于CAN通讯中的错误帧发送问题,现回复如下:

了解错误帧的基本信息后,当节点在CAN通讯中检测到位错误、填充错误、格式错误和ACK错误时,需发送错误帧。以位错误为例,若发送节点检测到发送的显性位与总线上接收到的隐性位不符,即会检测到位错误。此时,发送节点会立即发送主动错误帧,包含6个连续的显性位,以通知其他节点该帧存在错误。这样,通过错误帧的发送,网络中的其他节点可以了解到通信中的异常情况,并采取相应措施以保证整个网络的稳定运行。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 00:58:00 | 显示全部楼层
好的,对于CAN通讯中的错误帧发送,当节点检测到错误时,会按照协议规定发送错误帧。以位错误为例,若发送节点检测到接收到的数据与预期不符,如发送显性位却收到隐性位,则节点会检测到位错误。此时,节点会立即发送主动错误帧,连续发送六个显性的位序列,以此来标识错误的发生并通知其他节点。在实际操作中,还需结合其他类型的错误如填充错误、格式错误和ACK错误等来处理。了解并正确处理这些错误帧,对于保障CAN通讯的可靠性和稳定性至关重要。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 00:58:00 | 显示全部楼层
关于CAN通讯中的错误帧发送,以下是根据您的要求所做的专业回复:

在CAN通讯中,当节点检测到通信错误,如位错误、填充错误等,便会发送错误帧。以位错误为例,若发送节点NodeA在总线上接收到的数据与发送的不一致,它会立即检测到位错误,并紧接着发送主动错误帧,包含连续的六个显性位。这些显性位是对正常数据帧的模拟,用以通知网络中的其他节点发生了错误。通过这种方式,整个网络都能感知到错误的存在并采取相应措施。这一过程是CAN协议的核心部分,确保了网络通讯的健壮性和可靠性。在实际应用中,我们需要按照协议规范操作,确保网络的稳定运行。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 18:54 , Processed in 0.267014 second(s), 37 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.