
近年来,随着嵌入式控制与功率电子的融合,基于 FPGA/SoC 的电机控制越来越受到关注。特别是 矢量控制(Field Oriented Control, FOC),它是高性能电机驱动(如 BLDC / PMSM)中的核心算法。为了帮助开发者更快落地这一领域,Xilinx 官方维护了一个开源库——FOC Motor Control Library。

该库不仅提供了完整的电机控制应用,还带有工具链支持、Dashboard 界面与实际部署示例,是 FPGA/SoC 从控制算法到实际系统的桥梁。

🎯 项目名称:FOC Motor Control Library
📍 来源:Xilinx 官方 GitHub 开源仓库(MIT 许可)
📦 适用平台:Kria KD240 / Zynq 系列 FPGA/SoC 平台
🛠 编程语言:HLS、C++、Python、CMake 等
📈 应用方向:基于 Kria / Zynq 平台的电机控制系统(矢量控制、PWM 输出、PID 环、Dashboard 控制界面等)

从总体上看,该设计由电机控制系统、数据监控系统、数据处理系统和通信系统组成。
这些模块用于控制电机的速度和方向。除栅极驱动器外,其余模块均为来自 AMD Vitis™ 电机控制库的高级综合 (HLS) 模块。
这些模块用于监控来自电机和直流电源的数据。
该模块控制ADC接口,并决定何时对ADC进行采样。它还执行基本滤波、数据缩放,并将其格式化为Q-Scale格式。

该系统支持基于流量整形协议的以太网流量传输。流量可以是机器人系统中不同节点之间或各种工业现场设备之间需要传递的控制信息。这些系统的要求是流量必须具有确定性。
此接口可用于读取外部 1-Wire 设备,例如温度传感器。
本节介绍设计中涉及的软件组件及其相互关系。
该软件栈提供了一个全面的库,可以通过各种用户界面进行交互,并通过 Kria Drive SOM 板高效地驱动电机。
下图展示了顶层架构以及各种软件组件的排列方式:

Ubuntu Linux 内核
Drivers:



这个库实现了电机控制系统中最关键的 矢量控制算法(FOC),包括:
转矩控制采用闭环控制,旨在维持指定的转矩值。在这种运行模式下,q矢量提供电机的有效转矩输出,d矢量提供平行于转子的力。d矢量代表直接或非旋转力矢量,在非弱磁控制场景中,其值围绕零设定点进行控制。

恒速控制是通过PI控制器实现的,该控制器调节电机扭矩以保持指定的电机速度。

下面框图显示了带传感器的 FOC 应用程序的实现。

项目支持用 Python/UI Dashboard 实时监控:






这个库使用 CMake 配置构建,支持:
官方文档里提供了 KD240 平台的部署与调试示例,支持用浏览器访问控制界面进行参数配置与运行监控。
示例界面特点:
✔ 支持 Bokeh Server 控制板载电机
✔ 参数文件可灵活更换
✔ 一键启动电机控制系统并实时可视化反馈
官方HLS电机控制相关开源库
https://docs.xilinx.com/r/en-US/Vitis_Libraries/motor_control/index.html
APP库
https://github.com/Xilinx/foc-motor-ctrl
官方文档
https://xilinx.github.io/kria-apps-docs/kd240/foc-motor-ctrl/0_5/build/html/docs/app_deployment.html
官方控制硬件
https://xilinx.github.io/kria-apps-docs/kd240/build/html/index.html
Xilinx 的 FOC Motor Control Library 是一个真正工程级的开源电机控制框架。它不仅覆盖了 FOC 控制算法核心,还集成了监控、参数配置、不同运行模式和跨平台支持。
官方还有一个机器人堆栈 (KRS)开源项目,我们后期再一起学习~
- -THE END- -