Xilinx官方开源FOC电机控制工程解析
以下文章来源于OpenFPGA,作者碎碎思
近年来,随着嵌入式控制与功率电子的融合,基于 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) 模块。
正交编码器接口(QEI)
FOC
空间矢量脉宽调制(SVPWM)
脉冲宽度调制发生器(PWM发生器)
Gate Driver
数据监控系统
这些模块用于监控来自电机和直流电源的数据。
ADC采样控制
电机A、B、C相及直流链路的电流和电压模数转换器(ADC)接口
Unicode 直接二进制 (USB) 到二进制补码 (BTC) 的转换
双极偏移二进制 (BOB) 到 BTC 的转换
数据处理系统
该模块控制ADC接口,并决定何时对ADC进行采样。它还执行基本滤波、数据缩放,并将其格式化为Q-Scale格式。
ADC中心
时间敏感网络(TSN)系统
该系统支持基于流量整形协议的以太网流量传输。流量可以是机器人系统中不同节点之间或各种工业现场设备之间需要传递的控制信息。这些系统的要求是流量必须具有确定性。
TSN IP
AXI 多通道 DMA (MCDMA)
时间感知直接内存访问(TADMA)
测试 PMOD 控制器
1-Wire 总线主机
此接口可用于读取外部 1-Wire 设备,例如温度传感器。
平台软件架构
本节介绍设计中涉及的软件组件及其相互关系。
该软件栈提供了一个全面的库,可以通过各种用户界面进行交互,并通过 Kria Drive SOM 板高效地驱动电机。
下图展示了顶层架构以及各种软件组件的排列方式:

内核
Ubuntu Linux 内核
hwmon硬件监控内核框架
Drivers:
xilinx_adc_hub模数转换器 (ADC) 集线器的 IIO 驱动程序
hls_qei_axi:QEI传感器的IIO驱动程序
hsl_foc_periodic:基于传感器的场定向控制器的 IIO 驱动程序
hls_pwm_gen:PWM发生器的IIO驱动程序
hsl_svpwm_duty:SVPWM 的 IIO 驱动程序
amd_axi_w1:AMD 1Wire 可编程逻辑总线驱动程序

中间件
IIO 框架和 libiio 库
通用UIO框架
CANopen库
应用程序和库
电机控制库(包含自定义电机控制IP的UIO驱动程序)

Bokeh仪表盘
CANopen 服务器

lm-sensors:Linux 监控传感器实用程序包
核心亮点
1. 矢量控制全栈支持
这个库实现了电机控制系统中最关键的 矢量控制算法(FOC),包括:
电流环与速度环控制
PWM 信号生成
参数配置与实时调试
CANopen / CLI / Dashboard 等多种控制接口支持
扭矩控制
转矩控制采用闭环控制,旨在维持指定的转矩值。在这种运行模式下,q矢量提供电机的有效转矩输出,d矢量提供平行于转子的力。d矢量代表直接或非旋转力矢量,在非弱磁控制场景中,其值围绕零设定点进行控制。

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

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

2. 可视化 Dashboard 与实时监控
项目支持用 Python/UI Dashboard 实时监控:

电机电流波形

速度响应

PID 调整效果



3. 多种部署方式
Dashboard 应用:终端 UI 实时调试界面
Command Line(CLI)应用:控制与输出反馈
CANopen 应用:集成总线通信协议支持
4. 工程级构建与组件化
这个库使用 CMake 配置构建,支持:
Lib 安装到系统目录
带测试(BUILD_TEST)模块编译
Dashboard / CLI / CANopen 子应用自由开关
5. 与硬件联调示例
官方文档里提供了 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)开源项目,我们后期再一起学习~
梦金指南网


