产品推荐:气相|液相|光谱|质谱|电化学|元素分析|水分测定仪|样品前处理|试验机|培养箱


化工仪器网>技术中心>解决方案>正文

欢迎联系我

有什么可以帮您? 在线咨询

CAN-bus节点的错误处理规则

来源:深圳市深东金仪器有限公司   2016年10月31日 15:05  

CAN-bus的可靠性很高,但是在某些情况下还是发生错误,为了使数据能够在总线上可靠传输,CAN-bus规范对各类帧的格式、用途及发送时机都进行了详细的规定。并实现在CAN控制器中自动完成帧格式处理及校验等工作,一旦错误被检测,正在传送的数据帧将会立即停止而待总线空闲时再次重发直至发送成功,该过程并不需要CPU的干涉除非错误累计该发送器退隐(Bus off)。

CAN-bus的可靠性很高,但是在某些情况下还是发生错误,为了使数据能够在总线上可靠传输,CAN-bus规范对各类帧的格式、用途及发送时机都进行了详细的规定。下面我们来总结下在CAN通讯中会出现哪些错误。

位错误:发送节点在发送数据的同时也会对发出的比特流采样回收,如果监测到总线电平与正在发送的电平不符,将会发生位错误(Bit Check Error);

位填充错误:为解决异步串行通讯中共有的缺点——各节点通讯时钟不同步,CAN-bus采用了一种同步的方式,规定每隔5个位的时间长度进行一次同步,当传输信号连续5个位是相同的,就要插入一个点评相反的位(称为“填充位”),如果电缆上传输的信号不满足这一规则,则会出现填充位错误(Bit Stuff Error);

CRC错误:发送端发送的CRC值由发送器计算得出,接收器采用同样的CRC算法,计算出接收端CRC值,若接收器计算的CRC值与接收到的CRC值不符,将会产生该类错误(CRC Error);

格式错误:当传输的数据帧格式与任何一种合法的帧格式不符时会发生该类格式错误(frame Check Error);

应答错误:如果在ACK段发送节点没有接收到接收节点发出的应答(显性位),将发生应答错误(Acknowledgment Error),所以当单个节点发送数据帧时会发生该类错误。

错误帧在总线信号传输中起着信号灯的作用,接收和发送过程中如果检测到通信出错,便会发送错误帧,错误帧由错误标识符以及错误界定符构成。其中错误标识符分为两种:“主动错误”和“被动错误”。

主动错误状态下,只要检查到错误,它立即“主动地”发出错标识。所谓“出错标识“,它本身就是一个“错误的位序列”(连续的6个显性位,不满足CAN协议的“zui多5个连续的同性位”要求),目的是“主动地”告诉大家:即使你们没有发现“刚才我已发现”的错误,现在我“以身作则”出错啦!你们该看到这个错误了吧!

如果处于被动状态下,检查到错误,它只能干瞪眼“被动地”等别人(主动报错站点)报错,等待的时候它可不能去动总线,直到识别出由主动报错站点发出 的“错误的位序列”,它才松了一口气:有人正式报错了!然后他就可以去竞争总线,该干啥干啥。

为了避免某个设备因为自身原因(例如硬件损坏)导致无法正常收发数据而不断地破坏数据帧,从而影响其他正常节点通讯,CAN-bus规范中规定每个CAN控制器都有一个发送错误计数器和一个接收计数器。根据计数值不同CAN节点会处于不同的设备状态,状态之间的转换关系见下图:

 

免责声明

  • 凡本网注明“来源:化工仪器网”的所有作品,均为浙江兴旺宝明通网络有限公司-化工仪器网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:化工仪器网”。违反上述声明者,本网将追究其相关法律责任。
  • 本网转载并注明自其他来源(非化工仪器网)的作品,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
企业未开通此功能
详询客服 : 0571-87858618