乐于分享
好东西不私藏

在电力电子设计里,“软件工程师”究竟负责哪一层?

在电力电子设计里,“软件工程师”究竟负责哪一层?

在电力电子系统中,很多人都会困惑一个问题:硬件工程师、软件工程师,到底是怎么分工的?
尤其是在真实项目里,你会发现一个很有意思的现象:
很多被称为“软件工程师”的人,日常工作并不是写 UI、做系统架构,而是天天在调DSP控制、数字控制和各种控制算法
这显然和我们在互联网或通用软件行业里理解的“软件工程师”,并不是同一类角色。
如果只用“硬件 / 软件”来划分电力电子系统,
其实很容易把一个本来是分层设计的系统,误读成两个岗位的对立。

一、电力电子系统,其实是一个“分层系统”

从工程视角看,一个典型的电力电子系统,至少可以抽象为三层:
  • 物理能量层:电压、电流、功率真实流动的地方
  • 实时控制层:控制算法、PWM、采样、保护等实时逻辑
  • 系统管理层:通信、配置、监控、升级与系统维护
硬件工程师、固件工程师和软件工程师,本质上正是分别对这三层负责。

二、硬件工程师:负责系统“能不能真实存在”

硬件工程师面对的,是电力电子系统中最不可回避的一层:真实的物理世界。
他们关心的问题通常非常具体、也非常现实:
  • 这个拓扑在功率等级上是否成立?
  • 器件在电压、电流、温度上能不能扛得住?
  • PCB 布局是否足够干净,寄生参数是否可控?
  • 系统能否稳定运行,并且具备量产可行性?
从系统角度看,
硬件工程师解决的是:这个系统能不能被真正做出来,并且长期“活下来”。

三、固件工程师(数字控制):负责系统“如何被实时控制”

在电力电子系统中,
大量被称为“软件工程师”的角色,其实承担的是固件与数字控制相关的工作。
他们的核心工作往往包括:
  • 在DSP/ MCU上实现控制算法
  • PWM 的生成、同步与更新
  • ADC 的采样、对齐与时序管理
  • 状态机、保护逻辑与异常处理
他们确实在写代码,但这些代码并不是“业务逻辑”,而是控制系统本身的一部分
从系统层级上看,这类工程师更接近于:
控制工程师+固件工程师
而不是传统意义上负责系统架构、数据管理的软件工程师。

四、软件工程师:负责系统“如何被使用和管理”

真正意义上的软件工程师,关注点已经在控制之外:
  • 通信协议
  • 参数配置
  • 系统状态管理
  • 升级、日志、监控
他们不直接决定PWM 波形是否干净,但决定了系统是否好用、可维护、可规模化部署

五、为什么这些角色在现实中经常被混在一起?

首先,电力电子本身就是一个强耦合系统
控制算法离不开硬件特性,
硬件设计也必须服务控制目标,
软件则需要理解整个系统的运行状态。
其次,在很多实际项目中,尤其是小团队里,一个工程师往往同时覆盖多个系统层级
但即便如此,角色可以重叠,系统层级不能混淆。
否则,问题一旦出现,就很容易在沟通中“各说各话”

结语:不要用“写不写代码”来区分角色

在电力电子系统中,代码只是工具,系统层级才是本质
  • 硬件工程师,负责系统的物理可实现性
  • 固件/ 数字控制工程师,负责系统的实时行为与稳定性
  • 软件工程师,负责系统的管理、交互与规模化
真正成熟的系统,不是靠某一个角色“全能”,而是清楚自己在为哪一层负责。
PS: 本文的讨论基于典型电力电子系统,不同公司对岗位命名可能有所不同。
相关内容可见:
嵌入式设备中,电气/硬件工程师到底在做什么?
嵌入式系统中,固件工程师到底在做什么?
嵌入式系统中,软件工程师到底在做什么?
从嵌入式到物联网:硬件、固件和软件是如何配合的?