导读:在了解 can 网络之前, 先了解 1 个问题:什么是智能硬件与ECU?
何为智能硬件,就是包含智能控制单元的硬件。比如发动机,发动机上有一块儿专门负责控制发动机进气量、喷油量、排气量的控制单元,这块单元相当于发动机的大脑。它具有信号发送、信号接收、参数存储等基本功能,这个控制单元就是 ECU。
ECU(Electronic ControlUnit)电子控制单元,是汽车专用微机控制器,一个 ECU 一般负责 1 个或多个智能硬件设备。
随着汽车的发展,车上的智能设备越来越多,也就是说车上的 ECU 也越来越多,如何用一个网络把这些智能设备的 ECU 全部连接起来并整体协调控制?
这就是 CAN 网络。
CAN 网络
CAN(Controller Area Network)控制器局域网络,CAN 网络在早期的整车应用中以 BCM(车身控制器)为控制中心,主要是车身零部件(雨刮 / 大灯 / 车窗…),智能硬件较少,所以早期的正常 CAN 网络把所有其他的 ECU 全部放在 Other ECU 里边,如下图。
每条 CAN 总线一般都是由 2 根线组成的双绞线构成,一根 can_high,一根 can_low,分别代表高电平和低电平,以下是某条 CAN 总线的模型图, 一条 CAN 总线上连着 4 个 ECU 控制单元。
一般燃油车的 CAN 网络可以分成如下 5 条 CAN 总线: 1. PT CAN (PowerTrain CAN ) 动力总成 CAN 总线
PT CAN 总线上一般有以下 ECU:
PT CAN 负责车辆动力,是整车 CAN 网络信号优先级及信号传输速率最高的一条 CAN 总线。
2. CH CAN (Chassis CAN) 底盘控制 CAN 总线
CH CAN 总线上一般有以下 ECU:
CH CAN 负责汽车底盘及 4 个轮子的制动 / 稳定 / 转向,由于涉及整车制动 / 助力转向等, 所以其网络信号优先级也是较高的。
3. Body CAN 车身控制总线
Body CAN 总线上一般有以下 ECU:
Body CAN 负责车身上的一些提高舒适性 / 安全性的智能硬件的管理与控制,其网络信号优先级较低, 因为以上设备都是辅助设备。
4. Info CAN ( Infomercial CAN ) 娱乐系统总线
Info CAN 总线上一般有以下 ECU:
Info CAN 是辅助可选设备, 所以优先级也是较低的,主要负责车身上的一些提高娱乐性的智能硬件的管理与控制。
5. DiagCAN ( Diagnose CAN ) 诊断控制总线
DiagCAN 总线主要提供远程诊断功能,只有一个 ECU。
CAN 网络基本构成单元 ECU 节点,就是车上的智能硬件设备里 ECU 控制单元。比如 ABS(防抱死系统)这个 ECU 是专门用于车辆制动过程中防止车轮被抱死的一套智能设备。当今汽车越豪华,ECU 就越多,智能控制硬件就越多,相对价格就越贵。一般的,一辆车普通的家用轿车都有 25 个左右 ECU。
如下图,车上某个智能硬件上的 ECU(智能电子控制单元):
由于车上 ECU 太多,每种 ECU 作用各不相同,信号传输速率(波特率)也不一致。为了更加方便管理这些 ECU,我们把以上各类 ECU 按其功能 / 波特率分别布置在 5 条 CAN 总线上。
CAN 网关
CAN 网关或叫汽车网关,因为网关不仅处理 CAN 网络,还处理 LIN 网络。
CAN 网关的外形结构:
实际 can 网关大概有六七十个接线 pin 脚,每个接线 pin 脚都有严格的定义,要匹配规定好的 can 总线或者开关设备,除了刚才涉及的 10 个 can 线接线口(5 条双绞线)、2 个电源线接线口,还应包括:定速巡航设备的 8 个接线口、电源管理方面的 3 个接线口、钥匙开关(或无钥匙启动系统)的 5 个接口、脚踏板的 3 个接线口、5 个 LIN 接线 pin 脚、档位开关的 4 个接线 pin 脚等等。
某些汽车厂商可能有更多新的硬件开关设备,电压电阻开关设备等也都有对应的接线 pin 脚,且可能预留一些 PIN 脚以备用。
CAN 网关是整个 CAN 网络的核心,控制着整车 5 条 CAN 总线的各类信号转发与处理,基本功能包括:
1. 连接不同波特率(传输速度)的 CAN 总线 /LIN 总线,以实现 CAN 网络的网关中继功能。
2. 诊断报文 / 非诊断报文转发。
3. 诊断防火墙管理。
4. 节点在线监控。
5. 巡航控制器开关检测。
6. 脚踏板位置检测。
7. 网关休眠与唤醒管理。
8. ECU 升级 / 网关升级。
9. 电压管理。
CAN 网关可以接收任何 CAN 总线(还有 LIN 总线)传来的不同传输速率网络信号,把这些信号按一定的标准处理后,广播到整车网络去,如果有 ECU 订阅(接收)了这个信号,则 ECU 将解析信号并做相应的处理。
整车所有 ECU 基本是以毫秒级或者微妙级的速度在源源不断的发送并接收信号,所以网关需要处理并转发广播的信号是非常多的且必须要很快处理完的。
实例一、仪表显示发动机转速
发动机的转速信号, 先从 PCAN 的 ECM(发动机引擎控制模块)节点发出,CAN 网关收到后,网关处理后广播以 GW_ 开头的 ECM 信号到其他 4 条 CAN 总线上去。
用 Vehicle Spy 3 CAN 工具查看可以看到以下的信号内容:ECAN 上的仪表(IPK)节点订阅了发动机转速信号,则会将这个转速信号解析,并显示到仪表盘去;由于以上信号发送频率太快,比如上图的 9.94ms/ 次,则你就会看到仪表盘上的转速指针一直在不停地偏动。
简略发送图如下:
实例二、安全带未扣紧,仪表端报警
安全带未扣紧需要两个条件:
1. 车速大于 5
2. 安全带扣未扣(即无电压信号)
车速一般是 PCAN 上的 ECM(发动机引擎控制模块)节点负责信号管理的。安全带扣这个设备是 BCAN 上的 BCM(负责天窗、车窗、安全带扣、雨刮等车身零部件设备…) 节点负责信号管理的。
即网关收到 PCAN 上的 ECM 节点发出来的车速信号,并收到了 BCAN 上的 BCM 发出来的安全带扣电压值为异常值(比如 0),CAN 网关统一处理后转发并广播以 GW_ 开头的信号帧,ECAN 上的仪表(IPK)节点订阅(接收)了 GW_ 开头的相关安全带未扣信号帧, 则会解析报警并显示到仪表盘去。
如果安全带扣一直未扣紧,则 CAN 网关将一直发送 GW_ 开头的相关安全带信号帧,其信号值是安全带未扣紧,所以车主会听到一直报警。
直到安全带扣上,CAN 网关继续发送安全带相关的信号,只是这个时候的信号值是安全带已扣紧,报警将立马消失。
总结
以上只是两个简易的案例,实际上,整车所有 ECU 基本是以毫秒级或者微妙级的速度在源源不断的发送并接收信号,所以网关需要处理并转发广播的信号是非常多的且必须要很快处理完的。