用户故事

ATB Technologies采用TI的C2000单片机代码生成技术,将电机控制器开发时间缩短了50%

挑战

开发控制软件以最大限度地提高永磁同步电机的效率和性能

解决方案

使用基于模型设计的MathWorks工具对目标处理器上的控制系统进行建模、模拟和实现

结果

  • 开发时间减半
  • 设计评估简化
  • 加速目标验证和部署

MathWorks工具使我们能够在多个开发阶段验证设计的质量,并在短时间内生产出高质量的组件。”

Markus Schertler, ATB科技
ATB Technologies永磁同步电机。

当ATB Technologies的工程师为燃料电池汽车开发高性能压缩机时,他们必须满足客户的严格要求。压缩机的电动驱动电机必须提供高扭矩、快速加速和最高20000转/分钟的转速。为了满足这些要求,他们选择了一种无刷永磁同步电机(PMSM)进行设计。

为了最大化PMSM的性能和效率,工程师们使用了MathWorks工具进行基于模型的设计,开发了复杂的控制算法,包括三相矢量控制、磁场定向控制(FOC)和磁场弱化技术。团队已经采用了增量式的基于模型的设计——在这个项目中,将生产代码生成添加到已经为早期验证使用了建模和设计仿真的过程中。

ATB Technologies的开发工程师Markus Schertler说:“在过去的项目中,金宝app我们在手工编码实现之前模拟并验证了我们的Simulink设计。“在过渡到自动代码生成之后,质量和模块化都更好了,迭代也更快了,所以我们可以快速地从第一个原型转向最终系列。”

挑战

ATB Technologies需要提供一个完整的压缩机单元,包括电机控制软件、电子、电机和其他机械部件。为了使系统的动力、能量密度和效率最大化,这些部件必须完美地协同工作。

这个项目太复杂了,无法在团队的标准手工编码控制软件的时间表内完成。“手工编码需要花费大量时间,而且总是存在漏洞。手工编码也使我们很难向客户证明我们正在满足他们的要求,包括符合某些MISRA C标准,”ATB技术公司的开发工程师Georg Staffler说。

ATB Technologies需要一个开发环境来支持早期的控制策略验证,为其选择的目标处理器家族生成代码,以及在整个项目中快速的设计迭代。

解决方案

ATB Technologies使用基于模型设计的MathWorks工具在TI C2000™微控制器单元(MCU)上设计、模拟、验证和部署控制系统软件。

使用仿真软件金宝app®,该团队开发了一个驱动装置的植物模型,包括在实验室中测量的物理参数。使用Simu金宝applink和statflow®,他们开发了控制器的初始模型。然后,他们在Simulink中对控制器和设备模型进行闭环仿真,以评估控制策略的可行性。金宝app

在优化控制器模型时,该团队使用Signal Processing Toolbox™设计了降噪滤波器,并使用fixed-point Designer检查了有问题的定点操作

在通过桌面仿真验证模型后,ATB Technologies使用了Embedded Coder®从模型生成代码,并部署到TI C2000 MCU。他们还为车载外设和嵌入式编码器的调度程序生成设备驱动程序。

在Embedded Coder中使用RTDX通道,团队使用Simulink测试工具验证代码在MCU上运行。金宝app该团队使用RTDX记录信号,然后在MATLAB中进行频谱分析®调整过滤器和补充设计文档。

因为控制器是在实际电机可用之前设计的,所以最初的测试是使用具有类似电子器件的可比电机进行的。后来的测试包括了生产电子设备,最后的测试是在生产电机和电子设备上进行的。在每次迭代中,团队都会在Simulink中优化设计,并使用Embedded Coder重新生成代码。金宝app

ATB Technologies按时向客户交付了压缩机电机,目前该电机已经生产出来,并嵌入到目前在路上行驶的燃料电池汽车中。

结果

  • 开发时间减半.Schertler说:“考虑到处理器家族中的迁移,自动生成代码使我们完成压缩器项目的速度比使用基于模型的设计但使用手工编码的类似项目快两倍。”代码生成导致了更少的错误,更好的质量和更快的迭代,并且它支持模块化方法,促进了模型在项目之间的重用。

  • 设计评估简化.Schertler指出:“通过在Simu金宝applink和statflow中的模型,我们可以向我们的汽车客户证明,我们的设计符合他们的要求。“这些模型还提高了内部设计审查的效率,因为它们比代码更容易理解。”

  • 加速目标验证和部署.“嵌入式编码器使我们能够轻松验证我们的实时实现。例如,我们可以看到一个单独的过滤器工作,并检查我们使用的参数是否正确。我们还使用Embedded Coder生成设备驱动程序和调度程序,然后将代码下载到目标程序,从而节省了大量时间。”