一个是广,一个是专;
再一个是,不要小看基础的东西;
另外就是,希望年轻人胆子再大一些。
非常认同张教授的观点,虽然从事的是汽车ECU软件开发,但其实做工程应用也是一样的道理。那就借此契机就来分享一些ECU应用层软件入门的个人想法。
ECU应用层软件开发有一定的独特性,不同的产品有不同的调性。 ECU应用层软件开发有极强的实践性,虽然理论是基础,但是解决实际的工程应用问题占了很大的比重。
ECU应用层软件内容有一定的神秘性,很多控制的策略或算法经过一批又一批人的实践经验积累,行内人都不能很快领悟到其中的精妙之处,行外人更无机会接触。
source: 必须得会的汽车ECU研发基础—应用层软件介绍5
以上就是ECU应用层软件的基本概念或认识,再入门这个方向之前,结合个人多年的从业经验,我也认为要做ECU应用层软件开发,应该要:广博而精深,重视理论基础和勇敢地实践。
本文重点聊广博。
广博在你需要建立起:
你所负责的模块与其他模块或软件组件的逻辑关系。 你所负责的模块与整个ECU软件的联系,不仅是应用层软件,还可以扩展到底层软件。 你所负责的模块与整个ECU系统,甚至与整车功能(其他ECU)的联系。
当然这不是一时就能做到的,但是如果决定了从事这个方向,首先最好有这样的意识,一直以这样的思路,随着时间和经验的累积,做同一件事情,视野和感受是全然不同的。
个人公众号其实之前就分享很多这样的文章,比如最近卡恩的撰写针对电机控制的文章,即:电机控制方向的核心是什么?下面再来汇总一下:
一方面对于充电功能逻辑的实现,在功能开发层面,描述的一个事件发生的结果,紧接着引起预期的另一个事件发生而产生结果,进而继续以此循环来实现目标的功能。
而应用层软件就是针对每一个具体的事件,就比如下图的枪连接状态识别,应用层软件根据采集到的枪连接信号,可能一个电压值,也可能是一个实际的电阻值,然后通过具体的逻辑来识别枪的连接状态,比如什么情况下是已连接,什么情况下是未连接,这些都是根据具体的一个个信号以一定的逻辑或算法,最终得到该事件的结果。
另一方面对于应用场景的实现,比如针对充电信息需要在不同的地方显示:车辆大屏和手机APP等,需要显示具体的信号,像充电功率,充电时间和SOC等。
可能这个例子还不够清楚,可以以车辆的驾驶状态和行为为例,根据油门踏板信号的数值及其变化率,可以识别车辆是地板油还是加速等状态,再结合车速信号,进一步确定是超车还是减速等行为,以此识别出不同的应用场景,进而决定采取更合理的控制方法。
因此,从整车功能角度,ECU应用层软件就是其具体的落地实现。所以不难理解,如果能很好地理解整车功能,那么做ECU应用层软件的人会更加清晰自己在干什么。
更多整车功能开发内容,有兴趣可参考:一文了解整车功能开发 (qq.com)
机械部分,离合器,换挡执行机构(同步器)和电液系统。 机电部分,包括传感器(压力,温度,转速和位置等)和执行器(电磁阀)。 控制器(ECU)部分,包括控制器的硬件和软件,其中软件包括底层软件(BSW+Bootloader)和应用层软件ASW。
此时要实现这些功能的工作原理是:在ECU硬件和底层软件的支持下,ECU应用层软件结合输入的传感器信号和CAN信号,结合离合器和同步器等零部件特性,结合变速箱起步换挡控制原理,结合电磁阀和液压系统特性,计算出离合器和同步器的控制命令,驱动相应的电磁阀动作,通过电液系统最终将作用离合器和同步器上,实现离合器的分离或接合控制和同步器的位置控制。
输入部分,主要指传感器、电源类和通讯类的输入。 输出部分,主要指执行器的驱动控制,包括功率器件类,电磁阀和执行电机。 控制部分,主要指ECU板端的微控制器(MCU或DSP),包括IO、通讯,诊断、存储和电源管理等内容。