戴姆勒为梅赛德斯奔驰卡车设计巡航控制器

“MathWorks的建模和代码生成工具使我们能够快速无缝地实现设计和测试迭代,并使我们能够在仅仅18个月的时间内发布我们的产品。”

挑战

为新的目标ECU设计和实现模块化巡航控制软件

解决方案

采用MathWorks提供的基于模型设计的开发工具,重新设计了巡航控制系统,系统经过设计、测试,最终完成在ECU上的软件实现

结果

  • 更紧凑、高效的代码
  • 更高的测试效率
  • 更快的开发速度

梅赛德斯奔驰卡车

巡航控制系统能够自动控制车速。该系统负责许多复杂和相互关联的控制功能,并且需要大量的分析和设计,以理解和解决功能间耦合和集成问题。卡车的巡航控制比乘用车的速度控制复杂很多,因为其提供了更多的功能以及由此增加的功能间耦合问题。

采戴姆勒工程师为梅赛德斯奔驰商用车重新设计了巡航控制系统,包括重型卡车、运输车以及长途客车。使用MathWorks提供的基于模型设计的工具,他们仅在18个月内即完成系统的设计、测试,以及在ECU上的软件实现。

“MathWorks的产品对于该项目的成功至关重要”,戴姆勒卡车产品创新中心项目经理Mario Wünsche说到,“MathWorks的工具使我们能够在整个项目开发过程中,在统一的平台上实现快速原型、仿真和测试,无需手工编码或者学习新的工具。”

挑战

戴姆勒该项目团队由系统工程师和软件工程师组成,虽然已经开发了该应用的C代码功能模块,但是现在需要在一个新的目标ECU上重新设计并实现该模块功能。从一开始项目开发周期就被控制在18个月内。基于以往经验,项目团队认为采用传统的开发流程不可能在要求的时间内完成开发。

项目的目标是创建一个开发架构的模块化应用,以便将来的项目能够复用。由于多个团队会同步进行该项目开发,因此他们还需要彼此共享成果。

复杂的巡航控制软件能够控制驱动和刹车扭矩,调节车间距和限速。系统控制器和道路限速器的输入包括巡航控制操纵杆,油门,踏板,CAN总线信号,以及车速、车距和加速度。如此多输入多输出的系统设计本身已经充满挑战,戴姆勒还需要确保所设计的系统能够运行在一个存储和计算资源均有限的定点微处理器上。

解决方案

戴姆勒采用了基于模型的设计流程,使用的工具包括MATLAB®,Simulink®和Embedded Coder®等。MathWorks咨询工程师帮助他们开发了建模指南和模型架构,以便所设计的算法能够生成最优化的C代码。

戴姆勒项目团队首先在Simulink和Stateflow®中搭建系统模型。该复杂的设计模型包括3900个模块,140个输入信号,40个输出信号和340个参数。他们采用Concurrent Version System(CVS)作为版本控制工具以使得各团队能够并行开发各子系统。

整个开发过程中,工程师们使用交互式的,自动化的测试工具,基于一个带有预先定义测试用例和控制接口的测试数据库,对所设计的系统不断进行测试。将Simulink闭环仿真模型和运行在目标微控制器上的产品级代码(由Embedded Coder从模型生成)通过CAN总线进行通信, 工程师们进行了处理器在环(PIL,processor-in-the-loop)测试。由此,戴姆勒(的工程师们)能够快速地验证Simulink的仿真结果和PIL测试结果是否一致。

完成测试后,工程师们采用Fixed-Point Designer™ 、Simulink Coder™和Embedded Coder为巡航控制系统自动生成定点代码。Fixed-Point Designer帮助工程师们自动确定Simulink模型中绝大部分模块参数的定标和数据类型。 Embedded Coder使得工程师们能够生成满足戴姆勒内部质量和编码标准的产品级代码。此外,自定义存储类型功能允许工程师们能够定义和控制不同版本产品中的数据类型。

代码经过在目标ECU上测试后,工程师们在硬件在环(HIL,Hardware-in-the-loop)模拟器上继续测试了目标ECU,该模拟器由一个运行在虚拟机环境系统(VME Systems)的车辆模型和所有其他的实物车辆ECU组成。车辆模型运行在实时环境中,使得团队就像在真实的车辆上采集计算所有的物理参数一样。

结果

  • 更紧凑、 高效的代码 相比之前手工代码版本的巡航控制系统,采用Embedded Coder和Simulink Coder自动生成的代码,RAM占用率降低了约16%。

  • 更高的测试效率 在桌面(开发)电脑上而不是在车辆上调试控制软件,使得戴姆勒项目团队减少了解决软件问题的时间和成本。

  • 更快的开发速度 整个项目,包括系统的分析、重构、建模和测试,仅仅用了18个月。如果没有使用MathWorks提供的涵盖仿真、产品级代码生成和PIL测试等功能的工具,几乎不可能在截止时间前完成项目开发。