一、CAN总线介绍
CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式(即在同一时刻网络上所有节点侦测的数据是一致的)的串行通信总线。
一个控制单元发送其数据,将其输入网络,而其他控制单元“共同收听”该数据。其中一部分控制单元对此数据感兴趣,因此他们使用它。另一部分控制单元可能对该特定数据不感兴趣,将其丢弃,等待下一条数据消息。
ECU(Electronic Control Unit)电子控制器单元,又称为汽车的“行车电脑”,它们的用途就是控制汽车的行驶状态以及实现其各种功能。主要是利用各种传感器、总线的数据采集与交换,来判断车辆状态以及司机的意图并通过执行器来操控汽车。
CAN总线是用于各个ECU之间互相通信的网络以及协议。
二、CAN总线特征
总线网络特征,就是一个信号可以被所有连接在总线上的节点所接收。 对于车载CAN网络来说:
- 所有连接在总线上的ECU可以接收任何一个ECU发来的信号
- CAN总线不存在主从关系,所有的ECU都可以进行收发信息的工作
三、基于内容的总线网络
CAN网络不同于以太网或者IP网络,其各个节点没有网络地址,不了解数据包是由哪个ECU发出来的,而是通过各个CAN封包中的CANID来识别内容。
根据OSI模型,CAN属于链路层协议,包含了运载控制信息的报头,以及运载具体数据的报文。
报头中,有标识消息内容的CANID,ECU可以通过CANID来判断消息的内容种类。比如,0x4E0 可以表达车速,0x100可以是刹车指令等等。
CANID 一般又被分为车辆控制和诊断信息2种。
通常,车辆控制的CANID分布在0x000~0x6FF之间。而诊断信息分布在0x700~0x7FF之间。
由于多条消息可能同时出现在总线上,CAN根据 ID 大小制定了优先级,ID越小,优先级越高 。从而保障了重要信息,如车辆控制信号的优先传输。
四、一般燃油车CAN网络分类
五、CAN网关
CAN网关是整个CAN网络的核心, 控制着整车5条CAN总线的各类信号转发与处理。
接收任何CAN总线传来的不同传输速率网络信号,把这些信号按一定的标准处理后,广播到整车网络去,如果有ECU订阅(接收)了这个信号, 则ECU将解析信号并做相应的处理。
整车所有ECU以毫秒级或微妙级的速度在源源不断的发送并接收信号,网关需要处理并转发广播的信号是非常多的且必须要很快处理完。
主要功能包含:
- 连接不同波特率(传输速度)的CAN总线/LIN总线,以实现CAN网络的网关中继功能。
- 诊断报文/非诊断报文转发。
- 诊断防火墙管理。
- 节点在线监控。
- 巡航控制器开关检测。
- 脚踏板位置检测。
- 网关休眠与唤醒管理。
- ECU升级/网关升级。
- 电压管理。
案例:仪表显示发动机转速
发动机的转速信号,先从PCAN的ECM(发动机引擎控制模块)节点发出,CAN网关接收并处理后广播以GW_开头的ECM信号到其他4条CAN总线上去。
简略发送图如下:
作者: 千里和他的软件测试