车机技术之CAN、CAN-bus
CAN是车载控制局域网(Controller Area Network)的缩写,是ISO国际标准化的串行通信协议。
在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,现在在欧洲已是汽车网络的标准协议。
下图是车载网络的构想示意图,CAN通过多种LAN网关进行数据交换。
总线拓扑
CAN控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。下图是CAN的连接示意图:
CAN总线特点
多主控制
在总线空闲时,所有的单元都可开始发送消息(多主控制)。最先访问总线的单元可获得发送权(CSMA/CA方式,和以太网CSMA/CD方式类似)。多个单元同时开始发送时,发送高优先级ID消息的单元可获得发送权。
消息的发送
在CAN协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符ID决定优先级。ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消
息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
系统的柔软性
与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。
通信速度
根据整个网络的规模,可设定适合的通信速度。在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。
远程数据请求
可通过发送“遥控帧” 请求其他单元发送数据。
错误检测功能·错误通知功能·错误恢复功能
所有的单元都可以检测错误(错误检测功能)。检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送
此消息直到成功发送为止(错误恢复功能)。
故障封闭
CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
连接
CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。
CAN总线协议栈
CAN主要由两个协议定义:ISO11898和ISO11519-2,下图为参考ISO七层模型的对比:
在物理层,ISO11898和ISO11519-2不同,区别见下图,在链路层及往上,两者一致。
总线长度和通信速率的关系如下图所示,速度越高,则距离越短:
CAN速率标准和规格
除了ISO,SAE,其它的组织、团体、企业也对CAN协议进行了标准化。基于CAN的各种标准规格如下表所示:
下表则对面向汽车的通信协议以通信速度为准进行了分类:
CAN消息格式
CAN消息由五种类型的帧组成,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符 (Identifier,简称ID),扩展格式有29个位的ID。更详细的可参考协议ISO11898、ISO11519-2。
数据帧格式
数据帧由帧起始SOF(表示数据帧开始的段)、仲裁段(表示该帧优先级的段)、控制段(表示数据的字节数及保留位的段)、数据段(数据的内容,可发送0~8个字节的数据)、CRC段(检查帧的传输错误的段)、ACK段(表示确认正常接收的段)、帧结束(表示数据帧结束的段)组成。
遥控帧格式(接收单元向发送单元请求发送数据所用的帧)
错误帧格式(用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成)
过载帧格式(过载帧是用于接收单元通知其尚未完成接收准备的帧。过载帧由过载标志和过载界定符构成)
帧间隔(帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开,过载帧和错误帧前不能插入帧间隔)
总结
其实CAN总线算是老协议了,基本所有车型都已经采用,在车机上附加CAN盒子也差不多算是标配。