你热爱 F1 的速度与激情么?你知道还有专门针对大学生的方程式比赛么?它就是中国大学生方程式系列赛事(简称 FSC,http://www.formulastudent.com.cn),目前主要包括燃油、电动、无人方程式和巴哈四个赛项。
MathWorks 从 2011 年起开始支持 FSC,包括为参赛队伍提供免费的 MATLAB 和 Simulink 软件,设立专项奖 ,以及提供丰富的学习资源和赛前培训。 2025 年 MathWorks 将继续在 FSC 中设立 “MATLAB 建模与仿真奖” ,具体奖项设置及软件申请详情请参看组委会公告。
2024年MATLAB建模与仿真奖颁奖(上图)和2025年FSC CAE培训MATLAB专场(下图)
今天,MathWorks 很荣幸地邀请到来自 AMZ Racing方程式学生车队的 Joel Flückiger 和 Lucas Gibson,分享电机控制器设计,及其助力车队创造电动汽车加速的新世界纪录。下面是他们的分享:
AMZ Racing 是谁
AMZ Racing(https://www.amzracing.ch/en) 成立于 2006 年,旨在激励下一代工程师,挑战电动赛车的极限,并为 ETH Zürich(苏黎世联邦理工学院)和 HSLU(卢塞恩应用科学与艺术大学)的学生提供共同学习和创新的理想环境。
AMZ 每年从头开始造车参加大学生方程式的国际比赛。在比赛中,赛车的性能、设计和财务规划都会得到全面评估,队员们可以与来自世界各地大学的年轻工程师们汇聚一堂、分享想法并互相推动以打造出最好的赛车!
2016 年,AMZ 以自制的学生方程式赛车 “grimsel” 创造了电动汽车最快加速的世界纪录:百公里加速只需1.513 秒。六年后,来自斯图加特大学的 GreenTeam 方程式学生车队将这一时间缩短了 0.052 秒。
AMZ 决定再次将其原型赛车推向极限!他们花费一年时间不断优化赛车的传动系统、空气动力学和电气系统等,终于在 2023 年 9 月 1 日重新夺回了世界纪录,达到百公里加速仅需 0.956 秒。
本文将重点关注汽车的逆变器设计,也就是电机控制算法及实现:如何制定目标和为什么需要为逆变器软件定制解决方案;期间所面临的各种困难,以及如何解决;未来可能采取的设计步骤,以持续改进控制器的整体设计。
再次打破世界纪录
为了在 2023 年夏天再次打破世界纪录,在巨大的时间压力下,我们专注于以下目标:
图1
最大化 100 km/h时的性能:我们在前几代逆变器上看到了改进的潜力。为了最大化性能,我们决定从头开始重新设计电机控制器,以确保彻底了解其实现和调优,并重用现有逆变器软件的其他接口。这种方法节省了调试电子控制单元 (ECU) 和赛车过程中所花费的时间。
我们首先使用数学模型定义了逆变器的设计,然后通过模拟电动原型赛车的物理模型,确定了扭矩灵敏度,设定了前轴 20 Nm 和后轮 40 Nm 的目标。为了在 1.2 秒内达到 100 公里/小时,原型车需要大约 200 kW 的功率。另外,因为我们的电机设计小巧轻便,高达 28,000 RPM的稳定控制至关重要。
保证团队成员的未来可及性:AMZ 创立的初衷是为学生提供一个打破界限、探索新想法并通过各种挑战提高技能的空间。我们强调知识的传承,因此控制器除了要能快速打破新百公里加速纪录,还需能被未来学生所使用和改进。
识别错误并保护硬件:大部分开发工作与通过仿真及测试实现高效错误检测和硬件保护有关。我们用 MATLAB® 和 Simulink® 设计了一个定制化的模型以精确模拟控制设定点、实现测试模式和模块化构建。该方法也同时确保了这个系统能被未来 AMZ 学生轻松理解和改进。
方法论
下图展示了我们所采用的方法概况,本文将深入探讨其中的逆变器、电机和电机控制器建模,及硬件实现部分。
图2
逆变器软件概述
为了帮助大家理解我们在设计控制器时所采用的方法,首先介绍一下 AMZ 逆变器软件的大概结构。该软件运行在 Zynq7000 片上系统(SoC)模块上,该模块具有 ARM® 双核 Cortex™-A9 和现场可编程门阵列 (FPGA)。
我们可以选择在处理器上使用 C 代码实现标准任务,比如:与 ECU 的以太网通信、高级故障检查和数据记录。另外,较慢的速度控制回路和弱磁计算也是在处理器上执行。我们为打破世界纪录所设计的电流控制器是在FPGA 上实现的,其运行频率比速度控制器大约高五倍。
图 3
FPGA 设计是个极为复杂的话题且很容易让人感到困惑。它的设计是通过硬件描述语言(HDL)来实现的,而其与制造商提供的编程语言和工具链有很大的不同。对于 Zynq 来说,这就涉及到 AMD 的设计流程。
AMD Vitis Model Composer 是 AMD 提供的工具之一。它允许用户使用 AMD 的模块库在 Simulink® 中构建模型,然后该模型将自动生成用于 FPGA 设计的IP模块。我们选择这种方法是因为我们之前的逆变器控制算法就是这样实现的,并且我们有能力再高效地构建出一个新模型。然而,有限的 AMD 库限制了我们仅能使用 AMD 模块重新构建黄金参考模型并生成代码。或者,我们还可以使用 HDL Coder(https://ww2.mathworks.cn/products/hdl-coder.html),从而可以完全在 Simulink® 环境中进行控制器的开发与测试,详见下文。
图 4
电机控制
现在进入有趣的部分:电机控制器。磁场定向控制(FOC)是一种控制算法,常用于工业中控制永磁同步电机(PMSM)等。它依赖于坐标变换(包括Clarke变换和Park变换),将三相定子电流转换为与转子磁通对齐的 d-q 坐标系。FOC 具有稳定的控制性能和确定性的开关特性,非常适用于再次打破世界纪录及未来学生方程式竞赛的AMZ 逆变器中。
下图展示了FOC 的工作原理。更多了解 FOC,可参考这个视频系列(https://ww2.mathworks.cn/videos/series/field-oriented-control-with-simulink.html)。
图 5:FOC 工作原理框图 [1]
此前,AMZ 逆变器上实现的控制算法是直接转矩控制(DTC)的改进版本。与使用 PI 控制器来控制定子电流的直轴分量(id)和交轴分量(iq)从而调节电机性能的FOC不同,DTC 使用滞环控制(也称为bang-bang控制)直接控制电机转矩和磁通。与和 FOC 类似,DTC 也可以进行弱磁控制,即为了达到更高的转子速度牺牲理想的转矩条件。DTC控制器中实际电流控制的实现比 FOC 更为简单(滞环控制vs. PI 控制),对参考值有非常动态的响应;然而,它带来了半导体模块开关特性高度不可预测和更高的转矩波动,这是我们在最终的电机控制中想要避免的。
牵引控制
为实现最佳牵引控制,我们希望能获取干净且延迟极低的车速测量值,为此使用了配备额外惯性测量单元(IMU)的 Kistler SF-Motion,并通过 Speedgoat 单元上的卡尔曼滤波器以 500 Hz 的频率更新速度信号。通过简单计算,为了最大化加速度,我们运用已有的轮胎相关知识进行了测试,以有效管理目标轮胎滑移率。 最终,三个信号从 ECU 传输到逆变器:一个用于转矩参考,两个用于定义电机的允许速度范围。这种设置允许电机在指定扭矩参考内运行,只需要将电机速度保持在这个范围内(对应于轮胎滑移率)。当电机速度超出此范围表明轮胎滑移过多时,会触发逆变器从转矩控制切换到速度控制,以频带限制作为参考。
Simulink 模型概述
在确定电机控制策略后,我们开始在 Simulink® 中构建一个黄金参考模型,为进一步开发并在硬件上部署控制器奠定基础。
黄金参考模型是一种计算效率高、旨在高层次上验证基本功能的模型。它使得我们能够快速获得仿真结果,并通过简单地定义想要跟踪的设定点,然后检查仿真结果来轻松验证模型。尽管构建该模型并非是在 FPGA 上生成代码和部署的必要步骤,但我们将其视为开发过程中的必要环节。只有在对黄金参考模型的性能感到满意后,我们才开始着手实现用于 HDL 代码生成的版本,这为我们节省了非常多的调试时间。
我们的 Simulink® 模型主要由三部分组成:一是 FOC 电机控制模型(黄金参考),实现了标准的矢量控制策略;二是可视化模块,用于在运行仿真时跟踪所有我们感兴趣的变量;三是硬件模型,用于闭合控制器的反馈回路。硬件组件是使用 Simscape™ (https://ww2.mathworks.cn/products/simscape.html)中提供的模块构建的。 Simscape™使我们能够在 Simulink® 环境中快速创建物理系统的模型。
三相逆变器模型由简单的Simscape™模块所构成,如 MOSFET、电阻、电容和电压源等。硬件模型中的其他组件还包括电池、PMSM和编码器等。
图 6:逆变器子系统
图 7:电机、逆变器和电池子系统
图 8:电机控制器子系统
硬件实现
我们在从模型生成 HDL 代码时遇到了一些挑战。为了将电机控制器部署到 AMD FPGA 上,我们使用了 AMD Vitis Model Composer。
这个工具链可将 Simulink® 中的概念设计转换为可在 FPGA 上部署的功能性硬件。Simulink® 用户友好的图形界面极大地简化了设计过程,可以通过相互连接的模块直观地对系统架构进行建模。然后,根据目标 FPGA 规范和综合偏好微调 Model Composer 的设置。之后,Model Composer 可将 Simulink® 模型转换为 HDL 代码,为在目标 FPGA 设备上的综合与实现做好准备。
为确保电机控制器的最终 “硬件” 或 “AMD” 版本能够按预期运行,我们首先将 FOC的 Simulink® 模型划分为多个子系统,然后逐步地将每个子系统替换为 AMD 子系统。在这个迭代式重构黄金参考模型的过程中,Simulink® 变体子系统功能(https://ww2.mathworks.cn/help/simulink/slref/variantsubsystemvariantmode...)显得尤为重要。这个功能使我们能够在每次Simulink® 仿真运行前,可以灵活地选择编译其中的哪个模,从而方便我们在迭代过程中,可以在替换某个子系统为其 AMD 变体后,快速地验证控制器的行为是否保持一致。
图 9:Simulink® 模块组成的模型
图 10:带有 AMD 模块的 Simulink® 模型
正因为 Simulink 与其 AMD黄金模型变体之间的无缝切换,我们可以在每次为某个子系统创建其 AMD 变体后尽快地发现微小的错误。然而,如果我们不这样逐一验证子系统的 AMD 变体,而是在构建完整的 AMD FOC 模型后才进行仿真结果的比对,这些微小的错误将很难被快速发现。
最后,在为整个控制器生成 HDL 代码时,我们只需在一个模型中连接所有的 AMD 变体子系统,并验证最终的 AMD 控制器版本是否表现出与黄金参考控制器相同的行为就可以了。
整个过程中,我们发现模型编译器模块与其他 Simulink®工具之间的接口是很棘手的,而使用 MATLAB 和 Simulink 提供的 HDL Coder 可以显著降低将 HDL 设计匹配到其黄金参考模型的难度。这是因为 HDL Coder 在仿真模型时比 AMD Vitis Model Composer 要快得多,同时HDL Coder 与 Simulink® 模型完全兼容,所以不需要先对接变体子系统。
性能测试 - 调试和数据
我们从验证控制方案末端的桥臂时序(BLT)开始在硬件上测试新控制器。这时,确认硬件上插入死区时间的准确性至关重要。如果高侧栅极和低侧栅极同时导通,且未被硬件保护阻止,可能会导致灾难性的故障。我们是通过将硬编码的正弦波注入到 PWM 载波中,并使用 AMD 提供的集成逻辑分析仪分析生成的开关模式来进行验证的(图 11)。
图 11:在开关频率为 50 千赫兹、占空比为 50% 且死区时间为 350 纳秒条件下进行死区时间验证。
PWM 载波频率设定为 50 kHz,该频率来源于 PMSM 提供的最大转速 28,000 转/分钟。将转速乘以磁极对的数量再除以 60可以得出正弦 PWM 所需的最高正弦波频率。依照经验法则,载波频率最好比参考信号快 10 倍,同时我们引入两倍的安全系数,以确保输出正弦波形干净,最终得到的开关频率约为 50 kHz(图 12)。
图 12:正弦电压参考与 PWM 载波波形的交点(上)产生开关状态(下)。
在确认调制器和死区时间插入的完整性后,我们需要验证用于控制交轴和直轴电流的 PI 控制器。控制器的功能通过施加固定的电流阶跃值并观察逆变器的输出响应来评估。我们对 id 和 iq 分别进行了 5 A 和 10 A 的电流阶跃测试(图 13)。
图 13:PI 控制器在 10 A 阶跃下的交轴电流阶跃响应。
成功验证电流阶跃后,我们在 ARM 核上实现了弱磁和速度控制器。速度控制器是用 C 语言实现的一个简单 PI 控制器,运行频率大约为 10 kHz。这样,我们就可以在测试台上运行各种测试配置文件,比如用特定转矩驱动一个电机,并将另一个控制器设置为相反方向的特定速度值。图14表明控制器的成功实现。
图 14:速度控制器在机械参考速度为 3000 rpm时的阶跃响应(上)和测量的交轴电流及其有关内部电流控制回路信息的参考值(下)。
我们希望确保在不同功率设定点下正确计算并施加所需的交轴和直轴电流。为了在调试期间尽量降低风险,我们在较低电压下进行了大部分测试,然后才检查更高功率点的性能。
图 15:在 100 V直流母线电压和 5000 rpm机械参考速度下对弱磁运行进行验证。
在完成弱磁、电流 PI 控制器、正弦PWM和BLT验证后,我们开始逐步增加负载和功率,以检查硬件是否存在任何未估的限制。我们对各项增益进行了调谐以达理想的动态响应。通过设置 10,500 rpm的参考阶跃,控制器施加了测试台可用的最大转矩 21.5 Nm。该测试的成功表明了控制器能够充分利用可用的最大转矩,并提供稳健的控制性能。
图 16:控制器在 21.5 Nm 时的性能。
最后一步是评估控制器在最高速度下的表现。用黄金参考 Simulink® 模型进行仿真以预测产生的相电流正弦波。为此,我们将一个简单的rpm斜坡信号输入到速度控制器(omega controller)。该斜坡信号从零转速开始,逐渐增加到 28000 rpm,并在该速度下保持三秒,然后返回零转速。
测试完成后,我们将硬件上的电流测量结果与 Simulink® 中黄金参考模型的仿真结果进行比较后,可以确认黄金参考 Simulink® 模型和为 FOC 控制算法设计开发的仿真模型的准确性。使用这些工具以及对硬件相对真实的模拟使我们可以粗略估算出应该采用的 PI 控制器增益,从而在赛道测试阶段节省了宝贵的时间。
图 17:FOC 仿真结果(上)与硬件测试结果(下)的比较。
我们对已实施方法的看法
在这一部分,我们首先根据经验列出与 AMD 开发相关的一些挑战:
需要熟练掌握 Model Composer、Vivado 和 Vitis。
缺乏 FPGA 开发经验。
综合和实现所需的时间可能会阻碍开发进度。
针对这些挑战,使用HDL Coder 的工作流程被提议作为一种用于编程 AMD Zynq 系统级芯片可行的替代方案。它能够通过从 MATLAB® 函数、Simulink® 模型和 Stateflow 流图,生成可移植、可综合的 Verilog®、System Verilog 和 VHDL® 代码,从而实现对 FPGAs、SoCs 和 ASICs 的高级设计。
从 AMD 转向 HDL Coder 展现出未来简化工作流程和部署过程的乐观前景。尽管还存在诸如兼容性之类的挑战,但拥有统一代码库以及可直接编程到 AMD 系统级芯片的优势,基于HDL Coder的工作流程无疑成为未来代码开发中一个极好的选择。
图 18:使用 HDL Coder 实现软件和固件的可能方案。
我们现在的工作:牵引控制硬件在环仿真
电力电子系统建模使得建立用于牵引控制的硬件在环 (HIL) 仿真环境成为可能,包括使用一个电机来模拟牵引力,及另一个电机来代表轮胎的反扭矩。
事实证明这种设置特别有价值,它提供了无需汽车、测试团队或赛道的控制器预调校能力,有助于我们创造新的电动汽车加速世界纪录!为了实时执行车辆模型并为逆变器提供参考信号,可以使用 Speedgoat 高性能计算单元。以 200 Hz的频率运行车辆模型是不仅是可行的,而且足够快,可以准确地表示轮胎在20 Hz 频率下的最大相关动态特性。
在实现过程中,电力电子硬件和电机控制软件必须由逆变器之间的以太网通信所取代。此外,由于这种反馈是在测试台上实现的,就不再需要机械模型及其相关的轮胎反扭矩。图 19 展示了上述 Simulink® 实现的概况。
图 19:在 Speedgoat 性能计算单元上运行硬件在环仿真的可能实现方式。
参考文献
1. Bida VM, Samokhvalov DV, Al-Mahturi FS. PMSM vector control techniques—A survey. In2018 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering (EIConRus) 2018 Jan 29 (pp. 577-581). IEEE.
文章来源:MATLAB