基于FPGA的系统提高电机控制性能

描述

作者:Andrei Cozma and Eric Cigan

电机广泛用于工业、汽车和商业应用,由驱动器控制,驱动器改变电输入功率以控制扭矩、速度和位置。高性能电机驱动器可以提高效率并提供更快、更准确的控制。先进的电机控制系统结合了控制算法、工业网络和用户界面,因此它们需要额外的处理能力来实时执行所有任务。多芯片架构通常用于实现现代电机控制系统:数字信号处理器(DSP)执行电机控制算法,FPGA实现高速I/O和网络协议,微处理器处理执行控制。

随着片上系统 (SoC) 器件的出现,例如 Xilinx Zynq 全可编程 SoC,它结合了 CPU 的多功能性和 FPGA 的处理能力,设计人员能够将电机控制功能和附加处理任务整合到单个器件中。控制算法、网络和其他处理密集型任务被卸载到可编程逻辑中,而监控、系统监控和诊断、用户界面和调试则由处理单元处理。可编程逻辑可以包括多个并联运行的控制内核,以实现多轴机器或多个控制系统。在单个芯片上集成完整的控制器可以使硬件设计更简单、更可靠、更便宜。

近年来,软件建模和仿真工具(如 MathWorks 的 Simulink)使基于模型的设计能够演变为从模型创建到实现的完整设计流程。®®2基于模型的设计改变了工程师和科学家的工作方式,正在将设计任务从实验室和现场转移到桌面。现在,可以对整个系统(包括工厂和控制器)进行建模,使工程师能够在现场部署控制器之前调整控制器的行为。这降低了损坏的风险,加快了系统集成,并减少了对设备可用性的依赖。控制模型完成后,Simulink 环境可以将其自动转换为控制系统运行的 C 和 HDL 代码,从而节省时间并避免手动编码错误。通过将系统模型与快速原型设计环境相关联,可以观察控制器在实际条件下的运行方式,从而进一步降低风险。

Xilinx 的 Zynq SoC 用于实现控制器,MathWorks 的 Simulink 用于基于模型的设计和自动代码生成,ADI公司的智能驱动器套件用于驱动系统的快速原型设计,从而实现更高的电机控制性能的完整开发环境。

赛灵思 FPGA 和 SoC 电机控制解决方案

先进的电机控制系统必须执行控制、通信和用户界面任务的组合,每个任务都有不同的处理带宽要求和实时限制。选择用于实现此类控制系统的硬件平台必须具有稳健性和可扩展性,同时允许未来的系统改进和扩展。Zynq 全可编程 SoC 通过将高性能处理系统与可编程逻辑相结合来满足这些要求,如图 1 所示。这种组合提供了卓越的并行处理能力、实时性能、快速计算和多功能连接。该 SoC 集成了两个 Xilinx 模数转换器 (XADC),用于监控系统或外部模拟传感器。

soc

图1.赛灵思 Zynq SoC 框图。

Zynq 的处理端由双核 ARM Cortex-A9 处理器、霓虹灯协处理器和加速软件执行的浮点扩展组成。该处理系统可处理非常适合软件实施的监控、运动控制、系统管理、用户界面和远程维护功能等任务。可以部署嵌入式 Linux 或实时操作系统以利用系统的功能。无需配置可编程逻辑即可使用独立处理器。这允许软件开发人员与设计FPGA结构的硬件工程师并行编写代码。

在可编程逻辑方面,该器件具有多达 444,000 个逻辑单元和 2200 个 DSP 切片,可提供大量处理带宽。FPGA 架构具有可扩展性,因此用户可以选择具有 28,000 个逻辑单元的小型器件,也可以选择高端器件,后者可以应对最具挑战性的信号处理应用。五个 AMBA-4 AXI 高速互连将可编程逻辑与处理系统紧密耦合,提供相当于 3000 多个引脚的有效带宽。可编程逻辑适用于实现时间关键型、处理密集型任务,如实时工业以太网协议,并且可以容纳多个并联运行的多轴机器或多个控制系统的控制内核。

Xilinx 全可编程 SoC 解决方案和平台可满足当今磁场定向控制 (FOC) 等复杂控制算法和再生脉冲频率调制器等复杂调制方案所带来的关键时序和性能要求3由Xilinx和Qdesys设计。

使用 MathWorks 的 Simulink 进行基于模型的设计

Simulink 是一种用于多域仿真和基于模型的设计的框图环境,非常适合仿真包含控制算法和工厂模型的系统。电机控制算法调节速度、扭矩和其他参数,通常用于精确定位。在进行昂贵的硬件测试之前,使用仿真评估控制算法是确定电机控制设计的适用性并减少算法开发的时间和成本的有效方法。图2描述了设计电机控制算法的高效工作流程:

构建精确的控制器和工厂模型,通常来自电机、驱动电子设备、传感器和负载库

模拟系统行为以验证控制器是否按预期运行

生成用于实时测试和实施的 C 代码和 HDL

使用原型硬件测试控制算法

一旦通过原型硬件上的仿真和测试证明控制系统令人满意,将控制器部署到最终生产系统上

soc

图2.电机控制算法设计的工作流程。

MathWorks 产品(包括 Control System Toolbox、SimPowerSystems ™ 和 Simscape™)提供行业标准算法和应用程序,用于系统地分析、设计和调整线性控制系统,以及用于对跨越机械、电气、™液压和其他物理领域的系统进行建模和仿真的组件库和分析工具。这些工具提供了创建高保真工厂和控制器模型的方法,这些模型可以在进入物理实施之前验证控制系统的行为和性能。仿真环境是验证功能极端情况和极端操作条件的理想场所,以确保控制器为此类情况做好准备,并且其实际操作对设备和操作人员都是安全的。

一旦使用嵌入式编码器和HDL编码器工具在仿真环境中对控制系统进行了全面验证,就可以将其转换为C代码和HDL,并部署到原型硬件上进行测试,然后部署到最终生产系统中。此时,指定了软件和硬件实现,例如定点和定时行为要求。自动代码生成有助于减少从概念到实际系统实现所需的时间,消除编码错误,并确保实际实现与模型匹配。图 3 描述了在 Simulink 中对电机控制器进行建模并将其传输到最终生产系统所需的实际步骤。

soc

图3.从模拟到生产的路径。

第一步是在 Simulink 中对控制器和工厂进行建模和仿真。在此阶段,控制器算法被划分为将在软件中实现的块和将在可编程逻辑中实现的块。分区和仿真完成后,使用嵌入式编码器和 HDL 编码器将控制器模型转换为 C 代码和 HDL。基于 Zynq 的原型系统可验证控制算法的性能,并帮助在进入生产阶段之前进一步调整控制器模型。在生产阶段,自动生成的C代码和HDL被集成到复杂的生产系统框架中。该工作流程确保一旦控制算法进入生产阶段,它就会得到充分的验证和测试,从而为系统的鲁棒性提供高度的信心。

使用ADI公司智能驱动器套件进行快速原型设计

选择正确的原型硬件是设计过程中的重要一步。ADI公司的智能驱动器套件可实现快速、高效的原型设计。安富利Zynq-7000全可编程SoC ARM双核Cortex-A9 + 28 nm可编程逻辑与最新一代ADI公司的高精度数据转换器和数字隔离相结合,安富利Zynq-7000全可编程SoC/ADI智能驱动器套件可实现高性能电机控制和双千兆以太网工业网络连接。该套件配有安富利ZedBoard 7020基板和ADI公司的AD-FMCMOTCON1-EBZ模块,这是一个完整的驱动系统,可为多种电机类型提供高效控制。此外,该套件还可以通过ADI公司的AD-DYNO1-EBZ测功机驱动系统进行扩展,该系统是一种动态可调负载,可用于测试实时电机控制性能。AD-FMCMOTCON1-EBZ模块由控制器和驱动板组成,如图4所示。

soc

图4.AD-FMCMOTCON1-EBZ框图。

该控制器板是一款混合信号 FPGA 夹层卡 (FMC),设计用于连接任何具有低引脚数 (LPC) 或高引脚数 (HPC) FMC 连接器的 Xilinx FPGA 或 SoC 平台。它的特点是:

使用隔离式ADC测量电流和电压

隔离式赛灵思 XADC 接口

完全隔离的数字控制和反馈信号

霍尔、差分霍尔、编码器和旋转变压器接口

2 Gb 以太网 PHY,支持高速工业通信协议,如 EtherCAT、ProfiNET、Ethernet/IP 或 Powerlink

FMC信号电压自适应接口,可在所有FMC电压电平上无缝运行

隔离是任何电机控制系统的一个关键方面,需要保护控制器和用户。控制器板上模拟和数字信号的完全隔离可确保FPGA平台始终受到保护,免受电机驱动侧可能出现的危险电压的影响。

驱动板包含驱动电机所需的所有电力电子设备以及电流和电压检测和保护电路。该板具有以下特点:

驱动 12V 至 48V 范围内的 BLDC(无刷直流)/PMSM(永磁同步电机)/有刷直流/步进电机,最大电流为 18A

动态制动功能以及集成的过流和反向电压保护

使用隔离式ADC进行相电流测量;可编程增益放大器最大化电流测量输入范围

向控制器板提供直流母线电压、相电流和总电流反馈信号

集成 BEMF 过零检测,用于永磁同步电机或 BLDC 电机的无传感器控制

测功机是一种动态可调负载,可用于测试实时电机控制性能,由两个通过刚性连接直接耦合的 BLDC 电机组成。其中一个 BLDC 电机充当负载,由测功机的嵌入式控制系统控制;第二个电机由ADI智能驱动套件驱动,如图5所示。该系统配备了一个用户界面,显示有关负载电流和速度的信息,允许设置不同的负载曲线。外部控制可以通过使用模拟发现USB示波器直接从MATLAB使用MathWorks仪器控制工具箱进行负载信号捕获和控制来实现。 ™®

soc

图5.测功机驱动系统。

任何电机控制系统的性能都受到电机电流和电压测量质量的极大影响。通过使用高性能模拟信号调理元件和ADC,ADI智能驱动套件可提供精确的电流和电压测量。测量路径在控制器和驱动板之间划分,如图6所示。

soc

图6.相电流信号链。

通过测量分流电阻两端的电压来检测相电流。两种可能的测量路径旨在获得最佳测量精度,具体取决于ADC是否靠近分流电阻。当ADC靠近分流电阻时,信号路径非常短,不易发生噪声耦合。分流电阻上的小差分电压由隔离式Σ-Δ调制器AD7401直接测量,无需额外的接口和信号调理电路。当ADC远离分流电阻时,信号路径很长,容易产生噪声耦合,特别是电源开关噪声和电机噪声。必须特别注意确保ADC和分流电阻之间的PCB走线和信号调理电路得到适当屏蔽。分流电阻上的小差分电压通过差动放大器AD8207放大到驱动板上,该差动放大器靠近分流电阻以避免噪声耦合。信号从±125 mV满量程输入范围放大到±2.5 V范围,以最大限度地降低耦合噪声的影响。放大后的信号使用可编程增益仪表放大器(PGIA)AD8251经过另一个放大级,确保ADC始终接收到适当调整以适应输入范围的输入信号。放大的模拟信号通过连接器到达控制器板。该连接器包括对每个模拟信号的屏蔽,以减轻噪声耦合。来自驱动板的模拟信号使用运算放大器ADA4084-2移回AD7401输入范围。

电流和电压反馈信号链中最重要的部分是二阶隔离式Σ-Δ调制器AD7401A。这款高性能 ADC 具有无失码的 16 位分辨率、13.3 有效位数 (ENOB) 和 83dB SNR。2线数字接口包括一个20 MHz时钟输入和一个1位数字比特流输出。ADC输出使用sinc重建3数字滤波器。数据手册中提供了16位输出和78 kHz采样速率的滤波器模型和HDL实现方案。输出分辨率和采样率可以通过改变滤波器模型和抽取来控制。虽然 78kHz 采样速率对于许多应用来说可能已经足够好了,但在某些情况下需要更高的采样率。在这些情况下,滤波器组(如图7所示)可用于将系统的采样速率提高到10 MSPS,处理真正的16位数据。滤波器组包含 n 个 sinc。3采样时钟延迟 T 倍数的滤波器,即 sinc。3滤波器传播时间除以 n。数据选择器以等于T的周期输出ADC代码。

soc

图7.过滤器组。

相电流测量也可以由 Zynq XADC 执行。XADC信号测量链使用常规测量链的整个路径,并在AD7401 Σ-Δ调制器之后添加一个Sallen-Key模拟重建滤波器。该滤波器使用AD8646运算放大器在控制器板上实现,如图8所示。隔离式Σ-Δ调制器和模拟重建滤波器的组合提供了一种方便、低成本的方法,可以在不影响测量质量的情况下实现XADC输入信号的模拟隔离。

soc

图8.XADC 信号测量链。

ADI公司的智能驱动套件随附一套Simulink控制器模型、完整的Xilinx Vivado框架和ADI Linux基础设施,允许用户完成设计电机控制系统所需的所有步骤,从仿真开始,经过原型设计,最后到生产系统实施。

两种控制器型号(六步控制器和 PMSM 磁场定向控制器)可用于启动设计过程。图 9 显示了这两个控制器的顶级视图。六步控制器实现了用于 BLDC 电机的梯形控制器;FOC 控制器提供用于集成控制系统的 FOC 内核。

soc

图9.同步控制器模型。

在仿真阶段创建工厂和控制器模型,并对整个系统的行为进行仿真,以验证控制器是否按预期运行。控制器模型被划分为将在 C 代码和 HDL 中实现的组件,并指定了时序、定点实现、采样速率和循环时间等约束,以确保控制器模型的行为与硬件实现中的行为相同。图 10 显示了六步控制器在软件和 HDL 之间的分区。

soc

图 10.C 代码和 HDL 中的控制器分区。

一旦控制器在仿真中得到充分验证,下一步就是在硬件平台上对其进行原型设计。Zynq SoC 引导式工作流程从 Simulink 模型生成 C 代码和 HDL,该模型划分为面向 ARM 内核和可编程逻辑的子系统。通过此工作流,HDL 编码器生成面向可编程逻辑的 HDL,而嵌入式编码器生成面向 ARM 的 C 代码。MathWorks Zynq 支持包支持生成 ARM 可执行文件,该可执行文件由模型的算法 C 代码组成,该代码与 AXI 总线接口,以及由来自模型的 HDL 代码组成的比特流生成,该模型与可编程逻辑引脚和 AXI 总线接口。图11显示了控制器实现以及与ADI智能驱动硬件的关系。

soc

图 11.原型系统上的控制器实现。

一旦将比特流和可执行文件加载到硬件中,就可以开始控制器的操作测试。硬件在环 (HIL) 测试是使用 Simulink 和运行开源 Linux 操作系统的嵌入式系统之间的以太网链路执行的。 可以在 Simulink 中捕获轴速度等电机参数,并与仿真结果进行比较,以确保物理系统实现与模型匹配。控制算法测试完成后,控制器可以转移到生产系统。

ADI公司与智能驱动器套件一起提供了完整的Vivado框架和Linux基础架构,可用于原型设计和最终生产。图 12 显示了支持智能驱动器套件的 Zynq 基础架构。此高级图表显示了 ADI 参考设计如何在 Xilinx Zynq SoC 上进行分区。可编程逻辑实现IP核,用于与ADC、位置传感器和电机驱动级接口。HDL编码器生成的HDL表示电机控制算法,集成到ADI公司的IP中。所有 IP 都具有用于配置和控制的低速 AXI-Lite 接口,以及允许它们通过 DMA 通道将实时数据传输到软件级别的高速 AXI-Streaming 接口。高速以太网接口可以使用 ARM 处理系统的硬 MAC 外设或可编程逻辑中的 Xilinx 以太网 IP 来实现。

ARM Cortex A9处理系统运行由ADI公司提供的Ubuntu Linux。这包括与ADI公司智能驱动硬件接口所需的Linux IIO驱动程序、用于监测和控制的IIO示波器(示波器)用户空间应用程序、允许对TCP进行实时数据采集和系统控制的libiio服务器、在远程计算机上运行的客户端,以及包含嵌入式编码器生成的C代码的可选用户应用程序。

soc

图 12.ADI Linux 基础架构。

所有ADI Linux驱动程序都基于Linux工业I/O(IIO)子系统,该子系统现在包含在所有主线Linux内核中。IIO Scope是由ADI公司开发的开源Linux应用,运行在Xilinx Zynq内部的双ARM Cortex A9s上,能够显示从连接到Xilinx Zynq平台的任何ADI公司FMC卡获取的实时数据。数据可以显示在时域、频域或星座图中。支持不同的流行文件格式,例如逗号分隔值或 .mat Matlab 文件,以保存捕获的数据以供进一步分析。IIO示波器提供图形用户界面,用于更改或回读ADI公司FMC卡的配置。

libiio服务器允许对TCP以及远程计算机上运行的客户端进行实时数据采集和系统控制。服务器在 Linux 下的嵌入式目标上运行,并通过 TCP 管理目标和远程客户端之间的实时数据交换。IIO 客户端可作为系统对象集成到本机 MATLAB 和 Simulink 应用程序中。HDMI输出用于在显示器上显示Linux接口,而键盘和鼠标可以通过USB 2.0端口连接到系统。

ADI为智能驱动器套件提供的Linux软件和HDL基础设施,以及MathWorks和Xilinx提供的工具,是电机控制应用原型设计的理想选择。它们还包含可集成到最终控制系统中的生产就绪组件,从而有助于减少从概念到生产所需的时间和成本。

结论

本文阐述了支持FPGA的现代电机控制系统的要求和趋势,以及MathWorks、Xilinx和ADI公司为满足这些限制并帮助推动更高效、更精确的电机控制解决方案而推向市场的工具和系统。通过将 MathWorks 基于模型的设计和自动代码生成工具与功能强大的 Xilinx Zynq SoC 以及 ADI 公司的隔离、电源、信号调理和测量解决方案相结合,电机驱动系统的设计、验证、测试和实施可以比以往更加有效,从而提高电机控制性能并缩短上市时间。ADI公司的智能驱动器套件与安富利Zynq-7000全可编程SoC配合使用,为使用MathWorks的Simulink设计的电机控制算法提供了出色的原型设计环境。智能驱动器套件附带一组参考设计4旨在为任何想要评估系统并帮助启动任何新电机控制项目的人提供一个起点。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分