Simulink模型到汽车控制器:基于模型开发的完整路径

一辆智能电动汽车的"灵魂",通常写在300万行以上的嵌入式代码里。但如果每一行代码都要工程师手写,开发周期会从18个月变成……永远完成不了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


一个真实的问题

2023年,某头部OEM的BMS(电池管理系统)团队遇到了一个经典的困境。

他们需要为新一代纯电平台开发一套SOC(荷电状态)估算算法。手写代码团队说:6个月。模型团队说:3个月,还能提前做HIL验证。

最终,后者在8周内完成了从算法设计到生成生产代码的全部流程。关键在于一个字:模型

不是PPT里的模型。是Simulink里的,能直接跑仿真、直接生成C代码、直接烧录到NXP S32K3芯片上的模型。

这个故事不是个例。它是整个汽车嵌入式开发行业正在经历的范式转移。


01 | 为什么汽车行业需要"基于模型"?

传统的汽车ECU开发流程,在过去20年里几乎没变过:

需求文档 → 手写C代码 → 硬件测试 → 发现问题 → 改需求 → 改代码 → 再测试……

这个模式有三个致命问题。

第一个问题:慢。

一套车载控制系统少则几十万行代码,多则百万行。手写、逐行调试、逐功能测试,一辆高端电动汽车可能有上百个ECU,按传统方式根本排不过来。

第二个问题:割裂。

需求是Word文档,设计是Visio流程图,实现是C代码,测试是Excel用例。这四个东西之间的关系,全靠人的记忆力维系。

一个工程师改了一行代码,没有人知道对应的需求文档是否需要更新。一个需求变化了,没有人知道影响哪几个ECU模块。

第三个问题:安全。

ISO 26262功能安全标准要求从需求到代码的端到端可追溯。手写代码的模式下,要建立这种追溯关系,需要投入额外的30%-50%工作量。

这三个问题,指向同一个答案:将开发的核心载体,从文档和代码,转移到模型。

这就是基于模型的设计(Model-Based Design,MBD)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


02 | 从Simulink模型到控制器:四步走

MBD并不是什么玄学。它是一套工程方法论。落实到工具链上,核心就是四个步骤。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第一步:建模

工程师在Simulink中搭建控制系统的图形化模型。

这不是画流程图。这是用数学模块来描述物理系统的行为:积分器、传递函数、状态机、PID控制器、查表……

比如一个简单的温度控制系统,可以用三个模块完成:

  • 温度传感器模型(输入信号处理)
  • 控制器算法(PID逻辑)
  • 执行器模型(PWM输出)

这个阶段的核心产出不是"图纸",而是一个可执行的规格说明——它本身就能跑仿真,能验证逻辑正确性。

第二步:配置

模型搭建好了,要让它变成能在芯片上运行的代码,需要进行一系列配置。

最关键的三项配置:

配置项 说明
目标硬件平台 指定MCU型号,如 NXP MPC5744P、Infineon TC3xx、STM32
代码生成策略 选择优化方向:代码紧凑性 vs 执行效率
代码标准 通常遵循 MISRA C:2012,满足功能安全要求

Embedded Coder 是完成这一步的核心工具。它负责将Simulink模型"翻译"成符合硬件特性的嵌入式C代码。

第三步:生成代码

点击Generate Code按钮,Embedded Coder开始工作。

它生成的不只是算法代码:

  • 算法C源代码(高度优化,可读性不输手写代码)
  • ARXML描述文件(对AUTOSAR体系而言,这比C代码更重要)
  • 代码与模型的追溯映射关系

在实际项目里,生成一个中等复杂度的控制模块(比如200个模块的Simulink模型),耗时大约3-5分钟。生成代码量约8000-15000行。

如果手写同等质量的代码,一个资深嵌入式工程师需要2-3周。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第四步:验证

生成代码不等于可以直接上车。

MBD定义了一套"4环验证"体系:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. MIL(模型在环):模型层面验证功能正确性
  2. SIL(软件在环):验证生成的C代码行为与模型一致
  3. PIL(处理器在环):在实际MCU上验证执行正确性
  4. HIL(硬件在环):连接真实ECU硬件,在虚拟整车环境中验证

每一环都在做同一件事:确保模型→代码→硬件三者之间的行为完全一致。


03 | AUTOSAR:当Simulink遇见行业标准

如果MBD只是把Simulink模型变成C代码,那它充其量只是一个"自动化的手写代码工具"。

MBD真正的价值,在于它和AUTOSAR标准的深度绑定。

AUTOSAR解决的是什么问题?

一辆车上的ECU来自不同供应商:博世提供ESP、大陆提供仪表、安波福提供网关……每个ECU的软件架构、通信协议、接口定义都不同。

AUTOSAR就是为所有ECU制定的"普通话"标准。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它的核心架构分四层:

层次 作用 通俗理解
应用层(ASW) SWC(软件组件)存放控制算法 工程师的主战场
运行时环境(RTE) 负责SWC之间的通信 系统的"邮政局"
基础软件层(BSW) 标准化服务:CAN/UDS/NVM/OS 后勤保障
微控制器抽象层(MCAL) 屏蔽不同MCU硬件差异 硬件的适配器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Simulink + AUTOSAR 的工作方式:

在Simulink中,使用AUTOSAR Blockset可以直接创建SWC(软件组件)。工程师在模型中定义:

  • Sender-Receiver接口(信号传递)
  • Client-Server接口(函数调用)
  • Runnable(可运行实体,即算法代码的执行单元)
  • 触发方式(周期触发/事件触发)

然后一键生成:

  • 符合AUTOSAR规范的C代码
  • AUTOSAR标准描述文件(ARXML)

这意味着什么?

同一个SWC模型,可以部署到不同OEM、不同车型、不同MCU平台上——一次建模,到处部署

极氪在这方面走在了前列。他们与MathWorks合作,构建了一整套"集成化模型开发工具链",将MBD融入SOA(面向服务的架构)平台,实现从模型到AUTOSAR SWC的端到端自动交付。他们的SOMOC工具(基于MATLAB App Designer开发)就是专门用于维护这一体系中的软件架构。


04 | PowerECU:一个完整的MBD落地案例

理论讲完了,来看一个真实的落地案例。

PowerECU是国内一家专注于氢能源/新能源控制器开发的平台,他们基于Simulink开发了一套完整的MBD工具链——PowerECU_MBDToolbox。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个工具箱做了三件关键的事:

第一件事:提供硬件接口模块。

工程师拖拽一个ADC模块、一个PWM模块、一个CAN模块到模型中,这些模块直接对应PowerECU控制器物理管脚。不再需要写底层驱动代码。

第二件事:深度适配芯片平台。

支持NXP MPC5744P(PowerPC双核200MHz)和华大HC32F4A0(ARM Cortex-M4)两种主流芯片。生成的代码直接针对芯片架构做优化。

第三件事:一键编译下载。

生成的C代码,无需手动集成,一键编译、链接、下载到硬件控制器。整个流程下来:

建模 → 配置 → 生成代码 → 编译下载,零手动编码。

配套的PowerCAL标定工具(基于CCP协议)支持参数可视化调节和监控,与CANape、INCA无缝集成,形成完整的开发-标定闭环。

这个案例说明,MBD不是大厂的专利。只要有合适的工具链支撑,从Tier 1到中小型控制器开发团队,都能走通从模型到控制器的全流程。


05 | 值得警惕的几件事

MBD很好,但不是银弹。

第一,模型质量决定了代码质量。

"垃圾进,垃圾出"这句话在MBD中体现得淋漓尽致。模型不正确,生成的代码也是错的。建模规范必须严格执行——MathWorks的MAAB(MathWorks Automotive Advisory Board)建模规范值得认真阅读。

第二,学习曲线是真实的。

从手写C切换到MBD,工程师不仅要学Simulink操作,还要理解自动代码生成的配置逻辑、AUTOSAR的接口规范、MIL/SIL/PIL的测试方法论。团队通常需要3-6个月的适应期。

第三,硬件兼容性要提前摸底。

不是所有MCU都能完美支持Embedded Coder代码生成。在选择硬件平台时,需要确认目标芯片是否有对应的Embedded Coder支持包,或者是否有类似PowerECU_MBDToolbox这样的定制化方案。

第四,工具链依赖是一把双刃剑。

依赖MATLAB/Simulink意味着License成本和版本兼容性问题。一些团队选择在模型层面保持工具中立,只将Simulink作为"前端",后端代码生成则使用开源方案——但这需要更高的技术储备。


总结

从Simulink模型到汽车控制器,MBD给出了一个清晰的答案:

用模型取代文档作为设计核心,用自动化取代手写作为实现方式,用四环验证取代试错作为质量保障。

这不是未来趋势。极氪在做、PowerECU在做、博世和大陆在做。它已经在发生。

如果你的团队还在用手写C代码开发ECU控制算法,不妨问自己一个问题:

“如果模型生成代码的效率和可靠性都优于手写,我为什么还要坚持手写?”

MBD不是要淘汰工程师,而是要淘汰重复劳动。


参考资料:

  1. MATLAB/Simulink R2026a Agentic AI 工作流
  2. 基于模型的PowerECU自动生成代码技术
  3. 基于Matlab/Simulink的AUTOSAR模型生成实战
  4. 极氪的"软件工厂"方法论 - MathWorks
  5. Model-Based Development in Automotive - CS Electrical & Electronics
  6. MATLAB Simulink代码生成:从模型到嵌入式实现
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐