1.汽车里面的ECU
众所周知,汽车是由各个零部件构成,像电池包 电机 底盘 转向 车灯这些都属于汽车重要的零部件,每个零部件要实现自身功能以及零部件之间的协作,就需要有专门的"大脑",这个大脑在汽车上被称统称为电子控制单元(ECU),而一辆车上ECU又可以根据零部件功能不同被区分命名,比如电池包的ECU叫(电池管理系统)BMS,底盘中的ABS(防止抱死系统),并不是每个零部件中只有一个ECU,有些零部件往往由多个ECU控制。
所以对于整车系统而言它的工作就是控制各个ECU正常协作,从另一个角度来说,整车系统和ECU的关系对应的是整车厂和一级供应商(Tier1)的关系,像博世 CATL这样直接给整车厂供给零部件的厂商被称为一级供应商Tier1(供应商的供应商被称为二级供应商Tier2),对于大部分车企来说,零部件包括ECU往往都是供应商自己独立生产,然后提供给整车厂,整车厂会通过设计 组装测试以及质量控制等一系列流程将来自不同厂商的零部件资源整合在一起,最后把汽车推向市场。
2.ECU的核心MCU
ECU是汽车零部件的控制单元,又被称为"行车电脑",它的核心是单芯片微控制器MCU,也就是我们常说的单片机,它的角色和电脑中的CPU类似,相较于CPU,MCU结构更简单 算力不强,但优点是成本低 且稳定性强,适合电力电子监控系统的嵌入式开发,最常见的STM32就是一款比较简单的MCU。
之所以说MCU是ECU的核心,是因为MCU是可编程的,用户可以通过编写程序运行在MCU中,MCU执行程序指令,可以实现外部电路的控制,实现不同零部件的功能,举个简单的例子:
MCU内部有个程序,可以控制在第一个引脚输出高低电平信号(0、1),如果把这个引脚直接接到控制风扇灯的电路上,那就能实现风扇的开关的控制,同样地,如果把这个引脚接到一个LED控制的外围电路上,那么就能实现LED开关的控制,此时如果我们程序内部再做一个定时循环调用,就能控制LED达到闪烁的效果。
也就是说汽车上不同零部件的ECU用到的MCU芯片可能一样的,但是通过编程以及不同的外部电路设计,再加上不同的电气组件,就可以实现不一样的功能,而MCU就是程序运行的载体以及零部件控制的核心。
当然除了MCU之外,根据ECU使用场景和功能定义,还需要有其他复杂驱动芯片的支持和协同,比如整个ECU的供电需要SBC芯片支持,CAN通讯需要CAN的收发器芯片将CAN信号差分发送到总线,有对压力敏感的ECU系统,需要实时监控压力,通常会配置BPS芯片,如果是对时间有要求的ECU还需要配置额外的RTC芯片,加上其它的外围电路,整个系统的骨架才算完整。
简单理解:MCU +复杂驱动芯片 + 其它外围电路 = ECU
现在我们可以看看一个ECU是如何实现一个最基本功能的:
汽车电池包的ECU(BMS)有一个很常见的需求,那就是根据电池包大电压和电流计算出电池当前容量(SOC)。
早期传统的实现方法:
1.MCU的一个引脚配合外围电路采集电池包的电压值 另一个引脚采集电流值
2.在SOC算法中在需要电压值的位置,通过调用驱动函数直接获得
3.最后将计算好SOC值通过外部信号接口(路径1)实时发送给整车
这种方案有一个问题,当我们硬件一旦有变更的时候,会变得很麻烦,比如一家做电池包的供应商,给OEM1提供了上述的方案,这个时候OEM2也来找他们做,但是OEM2要求使用另外一款MCU,同时要求传将计算好的SOC值通过路径2发送,这个时候,获取电压和电流的方式变了,数据传输的方式变了,此时需要针对新的MCU重新修改代码,可能两个信号修改起来不麻烦,事实上,SOC计算所需要的信号以及复杂度远远不止这么多,随着,实际上,供应商来说计算SOC的算法并没改变,但是因为这两个变更点,就需要对代码大范围修改甚至重新来过,而恰恰算法最耗时间的部分也是最容易出错的位置。
因此比较理想的做法是,将SOC算法独立出来,建立一个中间“人”的角色,需要电流、电压值直接找他要,发送SOC数据的时候,直接拜托这个“人”转发,当我们硬件发生改变时只需要对采集方式和路径做出调整,然后让这个中间“人”知道,对于SOC算法来说,不会产生任何影响,这样的话,SOC算法就可以直接复用了,大大提高代码的可移植性。
这个中间人的角色就是RTE层,采集方式和发送路径由BSW层实现,SOC算法在ASW中实现,外围电路和MCU是整个系统的硬件基础。
这就构成AUTOSAR基本架构:
ASW:Application Layer
RTE:Runtime Environment
BSW:Basic Software
BSW最底层:MCU:Microcootroller
Autosar(Automotive Open System Architecture)汽车开放架构,定义了独立于硬件的分层软件架构,实现了软硬件的解耦工作,提高ASW的复用性,这样做为行业带来了很大的灵活性,首先对供应商来说,因为主要的逻辑软件可以复用移植,面对新客户可以快速交付,同时因为ASW不需要变更,软件的可靠性也大大增加,此外,所用供应商都遵守相同的架构,不同ECU的信息交互和可替代性大大增强。