CAN总线

久未见 提交于 2019-12-04 11:55:52
CAN 是什么?
CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。

在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统
被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很
多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需
要,1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。此后,CAN 通过 ISO11898 及 ISO11519 进
行了标准化,现在在欧洲已是汽车网络的标准协议。
现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。
图 1 是车载网络的构想示意图。CAN 等通信协议的开发,使多种 LAN 通过网关进行数据交换得以实现。

总线拓扑图
 CAN-bus 主要特性 

1) 多主控制。
 在总线空闲时,所有的单元都可以开始发送消息(多主控制)。
 最先访问总线的单元可获得发送权。
 多个单元同时发送时,发送高优先级 ID 消息的单元可获得发送权。
2) 消息的发送

在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以
开始发送新的消息。两个以上的单元同时发送消息是,根据标示符(Identifier 以下称 ID)决定
优先级。ID 并不是发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时
开始发送消息时,对各消息 ID 的每个位进行逐个仲裁。仲裁获胜(被判定为高优先级)的单元
可继续发送消息,仲裁失利的单元则立刻停止发送而转为接收模式。

3) 系统的柔软性
 与总线相连的单元没有类似于“地址”的信息,因此在总线上增加单元时,连接在总线上的其他单
元的软硬件及应用层都不需要改变。
4) 通信速度
 根据网络的规模,可设置合适的通信速度。在同一网络中,所有单元必须设置统一的通信速度。
5) 远程数据请求
 任意单元都可以发送“遥控帧”来请求其他单元发出数据。
6) 错误检测功能—错误通知功能—错误恢复功能
 所有单元都可检测错误(检测功能)。  检测出错的单元会立即通知其他所有单元(错误通知功能)。
 发送出错的单元,会立即停止当前发送,并不断重新发送此消息,直到发送成功为止(错误恢复
功能)。
7) 故障封闭
 CAN 可以判断出错误的类型是总线上暂时的错误(如外部噪声等)还是持续的数据错误(如单
元内部的故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此
故障的单元从总线上隔离出去。
8) 连接
 CAN 总线是可以同时连接多个单元的总线。可连接的单元总数理论上是没有限制的,但实际上
可连接的单元数受总线上的时间延迟及电气负载的限制,降低通信速度,可连接的单元数增加;
提高通信速度,则可连接的单元数减少。

1.4 ISO/OSI 基本参照模型 

 OSI(Open System Interconnect),即开放式系统互联。 一般都叫 OSI 参考模型,是 ISO(国际标准化组织)

组织在 1985 年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络
层、传输层、会话层、表示层和应用层),即 OSI 开放系统互连参考模型。在这一框架下进一步详细规定了每
一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性。如图 1.2 。
 

 

 

上三层总称应用层,用来控制软件方面。下四层总称数据流层,用来管理硬件。除了物理层之外其他层都
是用软件实现的。数据在发至数据流层的时候将被拆分。在传输层的数据叫段,网络层叫包,数据链路层叫帧,
物理层叫比特流,这样的叫法叫 PDU(协议数据单元)。
1.5 CAN 的分层结构
 
 

 

 

1.6 CAN 总线物理层的定义
CAN 协议经 ISO 标准后,有 ISO11898 标准和 ISO11519-2 标准两种。ISO11898 标准和 ISO11519-2 标准
对数据链路层定义相同,但对物理层定义不同。如图 1.4。
1) 关于 ISO11898
 ISO11898 是通信速度为 125kbps~1Mbps 的 CAN 高速通信标准。
2) 关于 ISO11519
 ISO11519 是通信速度 为 125kbps 以下的的 CAN 低速通信标准。
 

 

 

 

8. CAN 总线协议
8.1 帧的种类
 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!