图片展示

物联网硬件 & 智慧物联云平台

图片展示

CAN 协议-CAN protocol

发表时间: 2019-08-29 10:32:00

作者: 研煌科技

浏览:

CAN协议是在ISO 11898中定义的国际标准。除了CAN协议本身,CAN协议的一致性测试在ISO 16845中定义,用于保证CAN芯片的可互换性。
1. 数据交换原理
CAN基于广播通讯机制,该机制又建立在面向消息的传送协议的基础之上。它定义消息内容而不是站和站地址。每条消息都有一个消息标识符,且该消息标识符在整个网络内是独一无二的,因为它定义了消息内容及消息优先权。这在多个站争抢总线访问(总线仲裁)的情况下很重要。
面向内容的寻址方案带来的结果是高度的系统和组态灵活性。只要新站纯粹是接收器,可以很轻松地将站添加到现有的CAN网络,无需对目前站的任何硬件和软件进行改动。这允许运用模块化概念,也允许接收多重数据并实现分布式过程的同步。同时,数据传输并非基于站的特定类型的可用性,能简单的维修和升级网络。
2. 实时数据传输
在实时过程中,通过网络进行交换的消息的紧急程度可以有很大差别:快速变化的单位例如发动机载荷)需要更频繁地进行传输,因此比其它单位(例如发动机温度)的延迟更少。
使用每个消息的标识符来指定用于衡量消息发送的紧急程度的优先级。优先级在系统设计时就已确定下来了,它表现为相应的二进制值,并且无法动态地更改。二进制数最小的标识符具有最高的优先级。
通过逐位观测总线电平的每个站所含标识符的逐位仲裁机制来解决总线访问冲突。在电缆联通的情况下按照显性状态覆盖隐性状态的规则。所有那些带有隐性传输和显性观测的站(节点)会失去争抢总线访问的机会。所有那些争抢失败者会自动成为优先级最高的消息的接收器,且在总线再次可用之前不会重新尝试传输。
按照传输请求对于整个系统的重要程度,对传输请求进行处理。这点在过载情况下更能证明其优势。由于是基于消息区分总线访问的优先等级,从而可以保证实时系统中个体的等待时间很短。
 
3. 消息帧格式
CAN协议支持两种消息帧格式,二者唯一的重大差别在于标识符的长度。“CAN基本帧/支持长度为11位的标识符,而“CAN扩展帧支持长度为29位的标识符。
4. CAN扩展帧格式
扩展帧格式消息与基本帧格式消息的不同在于所使用的标识符长度。29位的标识符由11位标识符(“基本标识符”)18位扩展符(“标识符扩展”)组成。CAN基本帧格式和CAN扩展帧格式之间的区别在于IDE位的使用:在11位帧的情况下,该IDE位作为显性位传输,在29位帧的情况下,该IDE位作为隐性位传输。由于两种格式必须共存于一根总线中,在总线访问冲突的情况下,利用不同的格式和相同的标识符/基本标识符规定总线上的哪个信息具有较高的优先权:11位消息始终比29位消息的优先级高。
扩展格式要付出一些代价:总线等待时间较长(最小20个位时间),具有扩展格式的消息要求更多的带宽(大约20 %),且错误检测的性能较低(因为15CRC所选用的多项式是针对112位的帧长进行优化的)
支持扩展帧格式消息的CAN控制器也能够发送和接收具有CAN基本帧格式的消息。只涵盖基本帧格式的CAN,不支持扩展帧格式,然而有的CAN控制器支持基本帧格式,对于扩展消息只能识别和忽略。
5. 检测错误并发信号通知
与其它总线系统不同,CAN协议不使用确认消息,而是在错误发生时发信号通知。对于错误检测,CAN协议在消息级别执行三种机制(数据链路层:OSI2)
循环冗余校验(CRC)CRC通过在传输端添加帧检查序列(FCS)来保护帧中的信息。在接收器处,参照接收到的FCS对该FCS进行验算和测试。如果它们不匹配,表示已发生CRC错误。
帧校验:该机制通过参照固定格式和帧大小来检查位字段,以验证所传输帧的结构。通过帧检查检测到的错误被命名为格式错误
ACK错误:消息的接收器确认所接收到的帧。如果发送器没有接收到确认,表示有ACK错误。
对于位级别的错误检测,CAN协议也执行两种机制(物理层:OSI1)
监视:发送器的错误检测能力基于对总线信号的监视。传输消息的每个站也观测总线电平,这样可以检测到发送的位与接收的位之间的差别。这能实现可靠地检测全局错误以及发送器的本地错误。
位填充:在位级别测试单个位的编码。CAÇ采用的位表达法是不归零制(NRZ)”编码。同步沿通过位填充产生。这表示在5个连续的相等位之后,发送器将一个填充位插入到位流中。该填充位带有被接收器删除的互补值。
如果至少一个站利用上述机制发现了一个或者多个错误,那么通过发送错误帧来中断传输。这可以防止其他站接受消息,从而保证了数据的一致性在整个网络。后一个错误消息传输已中止,发送者自动重新传输。节点可以再次争抢总线访问。
然而,尽管这里所描述的方法切实有效,但是在站出现故障的情况下,该方法会导致所有消息(包括正确的消息)被取消。如果没有采取自我监视的措施,总线系统会因此而受阻。因此,CAN协议提供一种机制将偶发性错误与永久性错误和站的本地故障区分开来。可以通过对节点错误情况的统计评估来达到这一目的,评估的目的是识别站自身的故障或者引进一种工作模式,在该模式下CAN网络的其它部分不受负面影响。这种情况可能一直持续到站将自己关闭,以防止其它节点的消息被误认为是错误的。


图片展示

Copyright @ 2023 Adawin .com 版权所有   粤ICP备19024129号   粤公网安备:44010602003233    网站地图

在线客服
联系方式
销售热线:
020-82567866
二维码
二维码
研煌微信客服
在线客服
添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功
添加微信好友,详细了解产品
我知道了