ECU应用层软件入门的三部曲之1 广博

文摘   2024-10-21 07:28   上海  
本文内容将是你首次接触到如此完整且系统地梳理ECU应用层软件入门的资料。虽然设置付费,但你可以看到60%以上的内容,如果觉得不错想看完欢迎付费。

昨天一大早看到刷到张教授的一个回答,讲的是做学问上的几个建议:
  • 一个是广,一个是专;

  • 再一个是,不要小看基础的东西;

  • 另外就是,希望年轻人胆子再大一些。

source: 如何找到愿意为之付出一生的研究事业?

非常认同张教授的观点,虽然从事的是汽车ECU软件开发,但其实做工程应用也是一样的道理。那就借此契机就来分享一些ECU应用层软件入门的个人想法。


对于大多数人接触到的汽车研发内容,相对于通讯诊断类话题,ECU应用层软件开发(ASW, Application Software)的内容非常少。这是因为:
  • ECU应用层软件开发有一定的独特性,不同的产品有不同的调性。
  • ECU应用层软件开发有极强的实践性,虽然理论是基础,但是解决实际的工程应用问题占了很大的比重。

  • ECU应用层软件内容有一定的神秘性,很多控制的策略或算法经过一批又一批人的实践经验积累,行内人都不能很快领悟到其中的精妙之处,行外人更无机会接触。
就如前段时间有人咨询我变速箱控制相关专业问题:离合器滞回特性控制,离合器扭矩相和惯性相阶段的控制等。这让我想起我刚入行时的场景,期待同行能三言两语告诉我答案,但总是等不来想要的答案,因为这很多产品的应用层软件控制策略确实不可能三言两语就能讲清楚。
但是这个话题分层次来讲,还是可以讲到个入门层级,入门之后就看个人修行了,本文我就来输出几点个人对于ECU应用层软件的基本认识。
1 ECU应用层软件是什么
关于ECU应用层软件的定义,大致可以这么描述:ECU应用层软件(Application Software, ASW)是汽车电子控制单元(ECU)软件架构中的关键部分,它专注于实现特定的控制逻辑和功能,直接对应于汽车的各种控制需求。这一层的软件由多个“软件组件”(Software Component, SWC)构成,每个组件封装了特定的控制算法或功能,如发动机管理、变速箱控制、制动系统控制等。这些组件通过定义好的接口(端口)相互交互,响应来自传感器和整车通讯的输入数据,并控制执行器的动作,以确保汽车在不同工况下的性能和安全。

也可以这么讲:ECU应用层软件偏向于解决车辆的实际驾驶工况和应用场景问题,以及通过精妙的控制算法或策略实现零部件的精准控制。
ECU应用层软件一般从底层软件获取来自传感器或CAN通讯的输入数据,通过自身复杂而有效的策略和算法计算或决策出控制目标,输出给底层软件最终去驱动执行器。
比如整车控制器(VCU)的应用层软件会根据当前油门或制动,坡度,车速等数据,识别出车辆现在处于什么工况,再根据工况的特性,是加速还是减速,是急加速还是急减速等特性,计算出电机的目标转速和目标扭矩;而电机控制(MCU)的应用层软件会基于电机特性,采用特定的电机控制算法,通过一系列复杂的计算,最终确定目标电流或电压,从而驱动电机,以此精准控制电机运行。
目前ECU应用层软件的主流开发方式是基于模型的设计,即采用Simulink建模,然后自动生成代码的方式进行开发。

source: 必须得会的汽车ECU研发基础—应用层软件介绍5

具体的实现过程是:

  • 先根据详细设计方案搭建模型,再基于开发工具所提供自动生成代码配置,将所有模型自动生成C代码;
  • 生成的ECU应用层软件代码和底层代码一起编译,生成s19或Hex格式可执行文件;
  • 最终通过刷写工具将s19或Hex刷写到ECU相应的Flash,启动ECU运行,就可以执行相应的功能。

以上就是ECU应用层软件的基本概念或认识,再入门这个方向之前,结合个人多年的从业经验,我也认为要做ECU应用层软件开发,应该要:广博而精深,重视理论基础和勇敢地实践

本文重点聊广博

2 广博而精深
我向来觉得从事ECU应用层软件开发工作,在技术层面,既要精深也需要广博。
精深在你需要不断琢磨你所负责模块或软件组件,不断思考你所开发的控制逻辑和算法,不断通过实践去雕琢控制性能。

广博在你需要建立起:

  • 你所负责的模块与其他模块或软件组件的逻辑关系。
  • 你所负责的模块与整个ECU软件的联系,不仅是应用层软件,还可以扩展到底层软件。
  • 你所负责的模块与整个ECU系统,甚至与整车功能(其他ECU)的联系。

当然这不是一时就能做到的,但是如果决定了从事这个方向,首先最好有这样的意识,一直以这样的思路,随着时间和经验的累积,做同一件事情,视野和感受是全然不同的。

个人公众号其实之前就分享很多这样的文章,比如最近卡恩的撰写针对电机控制的文章,即:电机控制方向的核心是什么?下面再来汇总一下:

3 整车功能视角下的应用软件开发
从研发流程来说,整车功能开发于ECU应用层软件开发似乎有点远,因为整车功能起源于VTS,经过SSTS,CTS和SRS层层分解,最后才到ECU应用层软件需求SWRS。
但是从整车功能角度来说,两者关系极其密切,可以这样理解应用层软件就是将功能逻辑和功能应用场景的具化落地
以之前提到的充电功能为例:

一方面对于充电功能逻辑的实现,在功能开发层面,描述的一个事件发生的结果,紧接着引起预期的另一个事件发生而产生结果,进而继续以此循环来实现目标的功能。

而应用层软件就是针对每一个具体的事件,就比如下图的枪连接状态识别,应用层软件根据采集到的枪连接信号,可能一个电压值,也可能是一个实际的电阻值,然后通过具体的逻辑来识别枪的连接状态,比如什么情况下是已连接,什么情况下是未连接,这些都是根据具体的一个个信号以一定的逻辑或算法,最终得到该事件的结果。

另一方面对于应用场景的实现,比如针对充电信息需要在不同的地方显示:车辆大屏和手机APP等,需要显示具体的信号,像充电功率,充电时间和SOC等。

可能这个例子还不够清楚,可以以车辆的驾驶状态和行为为例,根据油门踏板信号的数值及其变化率,可以识别车辆是地板油还是加速等状态,再结合车速信号,进一步确定是超车还是减速等行为,以此识别出不同的应用场景,进而决定采取更合理的控制方法。

因此,从整车功能角度,ECU应用层软件就是其具体的落地实现。所以不难理解,如果能很好地理解整车功能,那么做ECU应用层软件的人会更加清晰自己在干什么。

更多整车功能开发内容,有兴趣可参考:一文了解整车功能开发 (qq.com)

4 ECU系统视角下的应用软件开发
接下来从ECU系统视角来看ECU应用层软件。
首先关注品功能,比如电机控制控制电机的转速和转矩,BMS管理电池系统,变速箱控制实现起步换挡倒车。以自动变速箱为例,为了实现这些功能,这就要求自动变速箱系统包括以下几个组成部分:
  • 机械部分,离合器,换挡执行机构(同步器)和电液系统。
  • 机电部分,包括传感器(压力,温度,转速和位置等)和执行器(电磁阀)。
  • 控制器(ECU)部分,包括控制器的硬件和软件,其中软件包括底层软件(BSW+Bootloader)和应用层软件ASW。

此时要实现这些功能的工作原理是:在ECU硬件和底层软件的支持下,ECU应用层软件结合输入的传感器信号和CAN信号,结合离合器和同步器等零部件特性,结合变速箱起步换挡控制原理,结合电磁阀和液压系统特性,计算出离合器和同步器的控制命令,驱动相应的电磁阀动作,通过电液系统最终将作用离合器和同步器上,实现离合器的分离或接合控制和同步器的位置控制。

也就是说首先要掌握好产品功能、组成和工作原理,然后聚焦到ECU,ECU软硬件,以此知道ECU应用层软件的输入、控制和输出与ECU硬件的关系。
总结下来无外乎这么几个点:
  • 输入部分,主要指传感器、电源类和通讯类的输入。
  • 输出部分,主要指执行器的驱动控制,包括功率器件类,电磁阀和执行电机。
  • 控制部分,主要指ECU板端的微控制器(MCU或DSP),包括IO、通讯,诊断、存储和电源管理等内容。

谦益行
分享汽车研发日常,助力你我共同成长。
 最新文章