完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1. 在CAN总线中存在5种错误类型,它们互相并不排斥,下面介绍一下它们的区别方式、产生的原因以及处理方法。
l 位错误,CAN网络某个节点在向总线发送一个位的同时也在监测总线,当检测到总线位的电平与发送该位的电平不相同时,则在该位时刻检测到一个位错误。 *注:在仲裁区的填充位流期间或者应答间隙所发送出的隐性位后而检测到总线电平为显性位,不会导致位错误。 *注:发送节点发送出被动错误标志期间检测总线电平为显性位时,也不会导致位错误。 l 填充错误,在使用位填充方法进行编码的报文(帧起始至CRC序列)中,检测出6个联系相同的位电平时,将产生一个填充错误; l CRC错误,CRC序列是由发送节点CRC计算的结果组成的,接收节点与发送节点相同的方法计算CRC,如果计算的结果与接收到的CRC序列不同,则检测出一个CRC错误; l 格式错误,当固定格式(如CRC界定符、ACK界定符、帧结束符等)的位区中出现一个或多个非法位时,则检测出一个格式错误; l 应答错误,发送节点在应答间隙期间未检测到显性位时,则检测出一个应答错误。 发送节点包含的错类:位错误、格式错误、ACK错误。 接收节点包含的错误:填充错误、格式错误、CRC错误。 2. 检测到错误,错误标识发送的方式。l 位错误、填充错误、格式错误以及应答错误产生后,其错误标识会在下一位发送出去; l CRC错误标识ACK应答界定符后发送出去,除了其他错误类型的错误标识已经发送完毕。 3. 错误的界定。总线上每个节点都含有发送错误计数器(TEC)和接收错误计数器(REC)进行错误界定。 当节点接收错误标识时REC数值增加,正确接收到数据帧时REC数值减少。 当节点发送错误标识时TEC数值增加,正确发送出数据帧时TEC数值减少。 REC与TEC的数值会产生总线节点状态的改变。 *注:接收错误计数器(REC)- Receive Error Counter。 *注:发送错误计数器(TEC)- Transmit Error Counter。 4. 错误计数的12条规则。l 接收节点检测到错误时,接收节点的接收错误计数器加1,除了所检测的错误是发送主动错误状态标识或过载状态标识期间的位错误; *注:When a RECEIVER detects an error, the RECEIVE ERROR COUNT will be increased by 1, except when the detected error was a BIT ERROR during the sending of an ACtiVE ERROR FLAG or an OVERLOAD FLAG。 l 接收节点在发送错误标识后的第一位检测为显性位时,接收错误计数器将加8; *注:When a RECEIVER detects a ’dominant’ bit as the first bit after sending an ERROR FLAG the RECEIVE ERROR COUNT will be increased by 8。 l 发送节点发出一个错误标识时,发送错误计数器加8。有两种情况除外:一种情况是如果发送节点的认可发送被动错误或应答错误,但是未在应答错误与被动错误标识后检测到一个显性位;第二种情况是如果仲裁控制场产生了填充错误,发送控制器发送出一个隐性位错误标识,而检测到却是显性位。以上两种情况,发送错误计数器不改变。 *注:When a TRANSMITTER sends an ERROR FLAG the TRANSMIT ERROR COUNT is increased by 8。 Exception 1:If the TRANSMITTER is ’error passive’ and detects an ACKNOWLEDGEMENT ERROR because of not detecting a ’dominant’ ACK and does not detect a ’dominant’ bit while sending its PASSIVE ERROR FLAG。 Exception 2:If the TRANSMITTER sends an ERROR FLAG because a STUFF ERROR occurred during ARBITRATION,and should have been ’recessive’, and has been sent as ’recessive’ but monitored as ’dominant’。 In exceptions 1 and 2 the TRANSMIT ERROR COUNT is not changed。 l 节点发送控制器发送出一个主动错误标识或过载状态标识时,检测到总线一个位错误,发送错误计数器加8。 *注:If an TRANSMITTER detects a BIT ERROR while sending an ACTIVE ERROR FLAG or an OVERLOAD FLAG the TRANSMIT ERROR COUNT is increased by 8。 l 节点接收控制器接收到一个主动错误标识或过载状态标识时,检测到总线一个位错误,接收错误计数器加8。 *注:If an RECEIVER detects a BIT ERROR while sending an ACTIVE ERROR FLAG or an OVERLOAD FLAG the RECEIVE ERROR COUNT is increased by 8. l 在发送到总线上主动错误标识、被动错误标识或过载错误状态标识后,任何节点都最多允许连续7个显性位。在检测到第11个连续显性位后,或紧随认可错误标志检测到第8个连续的显性位,以及附加的8个连续的显性位的每个序列后,每个发送器的发送错误计数都加8,并且每个接收器的接收错误计数也加8。 *注:Any node tolerates up to 7 consecutive ’dominant’ bits after sending an ACTIVE ERROR FLAG, PASSIVE ERROR FLAG or OVERLOAD FLAG. After detecting the 14th consecutive ’dominant’ bit (in case of an ACTIVE ERROR FLAG or an OVERLOAD FLAG) or after detecting the 8th consecutive ’dominant’ bit following a PASSIVE ERROR FLAG, and after each sequence of additional eight consecutive ’dominant’ bits every TRANSMITTER increases its TRANSMIT ERROR COUNT by 8 and every RECEIVER increases its RECEIVE ERROR COUNT by 8。 l 报文成功发送后,发送错误计数减1,除非计数值已经为0。 *注:After the successful transmission of a message (getting ACK and no error until END OF is finished) the TRANSMIT ERROR COUNT is decreased by 1 unless it was already 0。 l 报文成功发送后,如果接收错误计数处于1~197之间,则其值减1;如果接收错误计数为0,则仍保持为0;如果大于127,则将其值记为119~127之间的某个数值。 *注:After the successful reception of a message (reception without error up to the ACK SLOT and the successful sending of the ACK bit), the RECEIVE ERROR COUNT is decreased by 1, if it was between 1 and 127. If the RECEIVE ERROR COUNT was 0, it stays 0, and if it was greater than 127, then it will be set to a value between 119 and 127。 l 当发送错误计数器大于或等于256时,节点进人总线关闭状态。 *注:A node is ’bus off’ when the TRANSMIT ERROR COUNT is greater than or equal to 256。 l 当发送错误计数和接收错误计数均小于或等于127时,错误认可节点再次变为错误激活节点。 *注:An ’error passive’ node becomes ’error active’ again when both the TRANSMIT ERROR COUNT and the RECEIVE ERROR COUNT are less than or equal to 127。 l 在检测到总线上11个连续的隐性位发送128次后,总线关闭节点将变为2个错误计数器均为0的错误激活节点。 *注:An node which is ’bus off’ is permitted to become ’error active’ (no longer ’bus off’) with its error counters both set to 0 after 128 occurrances of 11 consecutive ’recessive’ bits have been monitored on the bus。 ※当错误计数器数值大于96时,说明总线被严重干扰了。 *注:An error count value greater than about 96 indicates a heavily disturbed bus. It may be of advantage to provide means to test for this condition。 *注:(以上中文翻译要重新参考,从第5条开始)。 5. 节点的三个错误状态检测到节点错误将改变节点错误状态,为了尽量减小网络上故障节点的负面影响,进而提出故障界定方法,CAN2.0规范中定义了一个故障界定状态机制,一个节点可能处于下列三种错误状态之一: l 错误主动状态(Error Active),当一个错误主动节点检测上述某个错误时,它将发送一个错误主动帧,该帧由6个连续性的显性位组成,这一发送将覆盖其他任何同时发生的发送,并导致其他所有节点都检测到一个填充错误,并依次放弃当前帧。 当处于错误主动状态的节点检测到一个发送问题时,它将发出一个活动错误帧,以避免所有其他节点接收信息包。无论检测到错误的节点是否要接收这个数据。它都要执行这个过程。 l 错误被动状态(Error Passive),当一个错误被动节点检测到上述的某一个错误时,它将发出一个错误被动帧,该帧由6个连续的隐性位组成,这个帧可能会被同时出现的其他发送所覆盖。如果其他节点没有检测到这个错误,将不会引起丢弃当前帧。 l 离线状态(Bus Off),处于离线状态下的节点不允许对总线有任何影响,它在逻辑上与网络断开。 关于故障界定状态机制,其包含过程简述如下: l 节点保持对发送和接收错误计数器的跟踪; l 节点在开始错误主动状态时错误计数器的值等于0,该状态下的节点假设所有检测到的错误非该节点所为; l 错误类型以及检测出错误的节点被赋予不同的计数值,这些计数值将根据是发送还是接收错误进行累加,有效的接收及发送使这些计数器递减,直至最小值为0; l 当这些计数器中的任何一个超出CAN定义的阀值时,该节点进入错误被动状态,在此状态下该节点将被认为是导致错误的原因; l 当发送错误计数值超出CAN定义的另一个阀值时,节点进入离线状态,并规范了从离线到错误主动之间的状态转换机制; l 当错误被动的节点发送以及接收错误计数器值都减小至CAN定义的阀值以下时,节点重新进入错误主动状态。 6. 节点错误状态切换 CAN节点错误状态如图3.8.3。 l Error Active状态时,节点能够进行正常的总线通信,错误产生时,发送主动错误标识(6个连续显性位); l Error Passive状态时,节点能够进行总线通信,会限制连续2次抱文发送,错误产生时,发送被动错误标识(6个联系隐性位); Buss Off状态时,节点不能收发任何报文。 |
|
相关推荐
3个回答
|
|
多谢分享
|
|
|
|
謝謝,學習了~~~~!!!
|
|
|
|
谢谢分享
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:19 , Processed in 0.722937 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号