接上一个帖子:电机驱动开发交流之三:软件部分的组成说明 https://bbs.eeworld.com.cn/thread-1155647-1-1.html
每个工程师需要对自己的工作做准确的定位,我们再看一下工程师的分类标准
1、核心工程师,是各个方案公司和原厂的技术核心,负责底层驱动程序,以及不同产品的控制算法,程序架构,生产测试等等。对产品的技术总负责。
也就是说写完整个程序并且开发出产品的工程师才是软件核心工程师。如果不是自己写的除非对底层、驱动层、算法有深入的理解。否则只是公司的核心技术人员,而不是核心工程师。
2、应用开发工程师,是在核心工程师的程序基础上,调整性能参数,编写实现电机位置、速度、力矩控制的程序,以及功能、安全保护等的程序。对产品的功能和性能负责。
在电机可以高效率运动后,就可以交给应用开发工程师实现产品了。主要任务是调整电流环和速度环的PID参数,调整负载的运动规划参数,达到产品要求。大部分的产品开发人员都是在做应用开发工作。
3、生产测试维工程师,是在应用开发工程师程序的基础上,调整部分参数,编写人机接口程序,以及产品的工作逻辑,完成产品的生产测试和售后服务等。
产品的多种型号往往来自于相同的电机和机械结构、负载,但是不同的人机界面,如声音、闪灯和按钮等。这部分是生产测试维护工程师的工作之一。另一部分是维修工作,如:生产线上由于电机的偏差导致产品性能出现偏差而不合格,生产维护工程师需要重新调整该产品的电流、速度PID参数,使整体达到要求,进而提高产品生产的合格率。
- 工程师是解决工程问题的,但不能反复遇到相同的问题。工程问题来源于产品开发过程中理论化——工程化——实用化的过程。
例如,park和ipark运算的公式中用到三角函数sin(θ),工程化中,c语言的编译器有sin(θ)的函数,直接调用就可以,但是会占用过多资源,降低计算效率。MCU的资源主要包括存储资源:flash、RAM;影响计算效率的部分:内核、晶振、硬件、计算量。所以对于通用的M0、M3在保证计算精度的基础上,用查表完成计算,具体可以参考ST2.0的开源代码;对于有DSP内核的,如Ti、凌欧的某些系列芯片,直接调用指令实现即可。所以实用化更多的是针对系统特点,在软件部分做的优化。
- 工程师的结论要以合理的方法采集的数据为证明——“实事求是”
- 工程经验来源于自己的悟性和长时间的反复迭代——“一万小时定律”
- 技术和方法是解决客户需求问题的手段,手段越多越灵活。但是每种方法都有自己的适用范围,当我们开心地赞叹某种方法的效果时,一定要冷静的思考一下什么情况下这种方法效果会不好,为什么。如果不确定,那么我们对这种方法的认识还是片面的。