在汽车控制器中,例如ECU、VCU、TCU、甚至是ADAS控制器在开发应用层功能时,虽然被控对象大不相同,但是控制思想、算法、技巧总有相通之处.对于功能开发工程师在开发过程中对这些控制算法和技巧如何使用或者如何选择,个人认为没有最好的算法和技巧只有最适合的算法和技巧,只要能够现实功能需求就行. 下面为大家就简单说明这些内容,如有不同勿喷.
- 控制思想: 在设计某一个功能中,开发人员为了更好的实现功能的开发总会想到各种各样的方法,有的开发人员是根据自己已经掌握的方法或者在以往的经验中用到的方法去实现功能,有的开发人员则是会想一些独特的方法去实现功能,但是这些方法无法用特定的公式去描述,只是一种控制思维方式,所以这里叫作控制思想.不管是什么方法,开发人员的目前的一致的,就是要使我们的功能满足设计和实车需求.例如:
- 模糊控制
- 鲁棒控制
- 模型预测控制
- 自适应控制
- 自学习控制
- 等
2.算法:相对于控制思想而言,有些控制方法目前已经有固定的公式去表示,而且不需要开发工程师去创新,我们只需要掌握其原理在开发过程中进行套用即可.提前学习这些会提高我们的开发效率和质量.例如:
- PID控制
- 卡尔曼滤波
- 低通滤波器
- 高通滤波器
- 上升沿触发
- 下降沿触发
- 等
3.技巧:相信大多数开发工程师在开发过程中遇到的问题,不是没有一个好的控制思想或者算法而是各种各样的低级错误,这些错误有可能是个人的疏忽也有可能是我们在开发过程中没有意识到这些问题的严重性.这些错误对功能和系统而言都是致命的,所以我们要在开发过程中进来避免这些问题的发生.在实际工程中如何衡量一个好的工程师不仅仅需要掌握控制思想和算法而更是要在在开发过程尽可能减少甚至避免错误的发生,这些解决和避免错误的能力往往是在工程实践体会到的.例如:
- PID控制中对I调节的限制
- 在除法计算中对除0的保护
- 输出信号的初始化问题
- 信号的实际限制问题
- 等