ATB Technologies 针对 TI C2000 MCU 生成代码,将电机控制器的开发时间缩短了一半
挑战
开发控制软件,最大程度实现永磁同步马达的效 率和性能
解决方案
使用 MathWorks 基于模型的设计工具,对控 制系统进行建模和仿真,并将其实现在目标处 理器上
结果
- 开发时间缩短了一半
- 设计检查得到简化
- 加快了目标验证和部署
ATB Technologies 的工程师们在开发适用于燃料电池动力车辆的高性能压缩机时,必须按照客户的严格要求交付项目。此类压缩机的电机必须扭矩高、加速快,并且速度最高可达到 20,000 rpm。为了满足这些要求,他们为设计选择了无刷永磁同步电机 (PMSM)。
为了最大程度实现 PMSM 的性能和效率,工程师们使用 MathWorks 的基于模型的设计工具开发复杂的控制算法,这些算法包含三相矢量控制、磁场定向控制 (FOC) 和磁场弱化技术。该团队已开始在此项目中逐步采用基于模型的设计 — 通过采用产品代码生成技术使得建模和仿真的流程可以进行早期验证。
ATB Technologies 开发工程师 Markus Schertler 说:“在以前的项目中,我们在对实现进行手工编码之前,先要对我们的 Simulink 设计进行仿真和验证。在采用自动代码生成后,代码质量和模块化特征都得到改善,并且实现了更快的迭代,因此我们可以从最初的原型快速推进到最终的系列。”
挑战
ATB Technologies 需要交付完整的压缩机组,包括电机控制软件、电子元件、电机及其他机械元件。要想最大程度实现系统动力、能量密度和效率,这些元件必须能够完美地配合。
该项目太过复杂,因此如果团队对控制软件使用手工编码的标准做法,将无法在紧迫的时限内完成项目。ATB Technologies 开发工程师 Georg Staffler 说:“手工编码不仅耗费大量时间,而且总是会有 bug。使用手工编码也难以向我们的客户证明我们满足了他们的要求,包括符合特定的 MISRA C 标准。”
ATB Technologies 需要的开发环境应能支持控制策略的早期验证、符合其所选目标处理器系列的代码生成以及整个项目期间的快速设计迭代。
解决方案
ATB Technologies 使用 MathWorks 的基于模型的设计工具,对控制系统软件进行设计、仿真和验证,并将其部署到 TI C2000™ 微控制器单元 (MCU)。
该团队使用 Simulink® 开发了一种驱动对象模型,其中包含在实验室测得的物理参数。他们还使用 Simulink 和 Stateflow® 开发了一个控制器初始模型。随后,他们在 Simulink 中运行控制器和对象模型的闭环仿真,以评估控制策略的可行性。
在对控制器模型进行优化时,该团队使用 Signal Processing Toolbox™ 设计了降噪滤波器,并使用 Fixed-Point Designer™ 检查有问题的定点操作。
在通过桌面仿真验证模型之后,ATB Technologies 使用 Embedded Coder® 从模型生成代码并将其下载到 TI C2000 MCU。他们还使用 Embedded Coder 为板载外围设备生成了设备驱动程序和调度程序。
通过使用 Embedded Coder 中的 RTDX 通道,团队使用 Simulink 测试工具验证代码在 MCU 上的运行。该团队使用 RTDX 记录信号,随后在 MATLAB® 中执行频谱分析来调整滤波器和增补设计文档。
因为控制器是在实际电机可用之前设计的,所以可以使用具有类似电子元件的功能相当的电机执行初始测试。后期测试包含了产品化电子元件,而最终测试则是针对产品化电机和电子元件。在每个迭代期间,团队都会在 Simulink 中优化设计,并使用 Embedded Coder 重新生成代码。
ATB Technologies 按时向客户交付了压缩机电机,这种电机目前已经投产,并已安装到如今马路上奔驰的燃料电池动力汽车上。
结果
- 开发时间缩短了一半. Schertler 说:“考虑到处理器系列的迁移,自动生成代码使我们完成该压缩机项目的速度比应用基于模型的设计但使用手动编码的类似项目快了一倍。代码生成中的 bug 更少、质量更高并且迭代更快,而且实现了一种模块化方法,方便在项目间重复使用模型。”
- 设计检查得到简化. Schertler 说:“借助 Simulink 和 Stateflow 中的模型,我们可以向汽车客户证明我们的设计满足了他们的要求。这些模型还使得内部设计检查更加高效,因为它们比代码更加直观易懂。”
- 加快了目标验证和部署. Schertler 说:“Embedded Coder 使我们可以轻松地验证实时实现。例如,我们可以查看单个滤波器的工作情况,并检查我们是否使用了正确的参数。另外,通过使用 Embedded Coder 生成设备驱动程序和计划程序,并在随后将代码下载到我们的目标,让我们节省了大量时间。”