2、伺服控制基础:伺服系统组成、三环控制(电流环、速度环、位置环)原理、常用控制算法(PID、前馈、陷波)简介

伺服控制是运动控制领域的核心,也是FPGA硬件加速最典型的应用场景之一。在进入FPGA实现细节之前,必须先建立对伺服系统整体架构和算法原理的清晰认知。本章将系统梳理伺服系统的物理组成、三环控制的结构与整定逻辑,以及PID、前馈、陷波三类常用算法的工程定位。理解这些基础,后续的硬件加速设计才能有的放矢——知道哪些计算需要并行化、哪些数据流需要低延迟、哪些资源需要做定点化处理。

伺服控制系统三环架构与FPGA加速映射 位置环(外环) 输入:位置指令 反馈:编码器位置 输出:速度指令 速度环(中环) 输入:速度指令 反馈:编码器微分 输出:电流指令 电流环(内环) 输入:电流指令 反馈:相电流采样 输出:PWM占空比 伺服电机 + 负载 + 编码器 + 驱动器功率级 位置/速度反馈(编码器) FPGA 硬件加速区域(本章课程核心) 编码器解码 QEP / BISS / 增量 ADC采样 相电流 / 母线电压 三环算法 PID + 前馈 + 陷波 PWM生成 SVPWM / 死区补偿 通信 EtherCAT 关键设计要点: • 电流环采样率:10kHz~20kHz(PWM载波同步),延迟要求 < 50μs • 速度环带宽:100Hz~1kHz,位置环带宽:10Hz~100Hz(由机械刚度决定) • FPGA并行流水线可实现三环同时计算,延迟比MCU串行执行降低 5~10 倍

2.1 伺服系统的物理组成与信号链路

伺服系统(Servo System)的本质是一个闭环控制系统,其目标是让机械输出(位置、速度、力矩)精确跟随指令输入。一个完整的伺服系统由控制器、驱动器、电机、反馈传感器和机械负载五大部分组成。在工业自动化场景中,控制器通常为PLC或运动控制卡,驱动器为伺服驱动器,电机为永磁同步电机(PMSM)或直流无刷电机(BLDC),反馈传感器为增量式编码器或值编码器。

从信号流的角度看,伺服系统存在两条关键链路:指令链路和反馈链路。指令链路从控制器发出位置指令开始,经过三环调节后生成PWM信号驱动功率级,最终转化为电机转矩;反馈链路则从编码器/电流传感器采集信号,经过解码和调理后回送到各环的输入端。这两条链路的延迟直接决定了系统的动态响应能力,也是FPGA加速的核心价值所在。

组成部件 功能定位 关键参数/接口 FPGA交互方式
控制器(上位) 生成运动轨迹、位置指令 周期1ms~10ms,EtherCAT/PROFINET SPI/UDP/EtherCAT从站
伺服驱动器 三环运算、PWM生成、保护逻辑 电流环周期50μs~100μs FPGA核心控制单元
伺服电机 电能→机械能转换 极对数、额定转矩、反电动势系数 UVW三相输出
编码器 位置/速度反馈 分辨率17bit~23bit,更新率≥10kHz QEP解码/BISS-C/EnDat
电流传感器 相电流采样 带宽≥100kHz,精度≥12bit ADC接口(SPI/并行)
工程经验:在FPGA设计中,编码器解码和ADC采样通常使用硬件逻辑并行处理,不占用CPU资源。例如,BISS-C协议编码器在FPGA中通过状态机实现,单次读取延迟可控制在1μs以内,而MCU软件模拟方式通常需要5~10μs。这个差距在高速高精度场景(如半导体设备、机器人关节)中至关重要。

2.2 三环控制原理与整定逻辑

三环控制是伺服系统的核心架构,从内到外依次为电流环、速度环、位置环。每一环都是一个独立的闭环控制器,外环的输出作为内环的指令输入。这种嵌套结构的核心思想是:逐层约束、逐层加速——内环响应最快,处理电气量;外环响应较慢,处理机械量。

2.2.1 电流环(最内环)

电流环控制的是电机三相绕组的电流,直接决定电磁转矩。在PMSM控制中,通常采用FOC(磁场定向控制)策略,将三相静止坐标系下的电流通过Clark变换和Park变换转换到旋转dq坐标系,实现转矩电流(iq)和励磁电流(id)的解耦控制。电流环的PI控制器输出为dq轴电压指令,再经过逆Park变换和SVPWM调制生成三相PWM波。

电流环的带宽通常设计为PWM载波频率的1/10~1/20。例如,当PWM频率为10kHz时,电流环带宽约为500Hz~1kHz。电流环的采样必须与PWM载波同步,在载波谷底或峰顶触发ADC采样,以避免开关噪声干扰。

2.2.2 速度环(中间环)

速度环的输入是位置环输出的速度指令,反馈来自编码器位置信号的微分(或专用测速发电机)。速度环的PI控制器输出为电流指令(即iq指令)。速度环需要处理编码器量化噪声带来的微分抖动,通常需要加入低通滤波或观测器(如龙贝格观测器)来平滑速度估计。

速度环带宽一般为电流环带宽的1/5~1/10,典型值在100Hz~500Hz。速度环的整定直接影响系统的抗负载扰动能力和速度平稳性。

2.2.3 位置环(最外环)

位置环的输入是上位控制器发出的位置指令,反馈来自编码器的位置。位置环通常采用P(比例)控制或PD控制,输出为速度指令。位置环带宽受限于机械系统的固有频率,一般在10Hz~100Hz。位置环增益(Kp)设置过高会导致机械振动和超调。

控制环 采样周期 典型带宽 控制器类型 主要挑战
电流环 50μs~100μs 500Hz~2kHz PI(dq轴解耦) 延迟敏感、PWM同步
速度环 100μs~1ms 100Hz~500Hz PI + 低通滤波 微分噪声、负载扰动
位置环 1ms~10ms 10Hz~100Hz P / PD 机械谐振、超调
常见误区:初学者常将三环的采样周期统一设置,或试图用同一个控制器同时完成三环运算。实际上,三环的带宽必须逐层拉开(至少3~5倍差距),否则会出现环间耦合振荡。例如,如果速度环带宽接近电流环带宽,速度环的调节动作会直接激励电流环的振荡,导致系统啸叫或失稳。

2.3 常用控制算法:PID、前馈与陷波

在三环控制的基础上,实际工程中还需要引入多种辅助算法来提升性能。PID是最基础的反馈控制器,前馈用于提高跟踪精度,陷波器用于抑制机械谐振。

2.3.1 PID控制器

PID控制器由比例(P)、积分(I)、微分(D)三部分组成。在伺服系统中,电流环和速度环通常使用PI控制器(微分项会放大噪声,较少使用),位置环使用P或PD控制器。数字PID的实现公式为:

// 位置式PID(增量式更常用)
u[k] = Kp * e[k] + Ki * Σe[i] + Kd * (e[k] - e[k-1])

// 增量式PID(FPGA中推荐)
Δu[k] = Kp * (e[k] - e[k-1]) + Ki * e[k] + Kd * (e[k] - 2*e[k-1] + e[k-2])

在FPGA中实现PID时,需要特别注意积分饱和(windup)问题。当输出达到限幅值时,积分项应停止累加,否则会导致系统恢复响应变慢。工程上通常采用条件积分法或反算积分法来处理。

2.3.2 前馈控制

前馈控制是一种开环补偿策略,它直接根据指令的变化率(速度前馈)或变化加速度(加速度前馈)提前施加控制量,以减小反馈控制的滞后。在位置环中,典型的前馈公式为:

速度前馈:Vff = Kff_v * dP_ref/dt
加速度前馈:Aff = Kff_a * d²P_ref/dt²
最终速度指令 = 位置环输出 + Vff + Aff

前馈系数通常通过实验整定:先关闭前馈,记录跟踪误差;然后逐步增大前馈系数,观察误差减小的效果。前馈不会影响系统稳定性,但能显著提高轨迹跟踪精度。

2.3.3 陷波滤波器

机械系统(如丝杠、皮带、减速机)存在固有谐振频率,当控制带宽接近该频率时,会激发机械振荡。陷波滤波器(Notch Filter)在谐振频率处产生一个深度衰减的凹口,从而抑制谐振。数字陷波器的传递函数为:

H(z) = (1 - 2*cos(ω0)*z⁻¹ + z⁻²) / (1 - 2*r*cos(ω0)*z⁻¹ + r²*z⁻²)

其中 ω0 = 2π*f0/fs(f0为谐振频率,fs为采样率)
r 为陷波深度系数(0 < r < 1,越小陷波越深)
FPGA实现建议:陷波滤波器在FPGA中通常以二阶IIR滤波器形式实现,需要3个乘法器和4个加法器。由于谐振频率可能随负载变化,建议将滤波器系数存储在寄存器中,由上位机动态更新。在流水线设计中,IIR滤波器的反馈回路会限制时钟频率,可采用转置直接II型结构来优化时序。

2.4 案例拆解:三环整定与FPGA加速效果

下面通过一个实际的伺服驱动器开发案例,展示三环控制从理论到工程落地的完整过程。

项目背景:某机器人关节模组需要开发一款高动态响应伺服驱动器,电机为400W PMSM(极对数4),编码器为17bit值编码器(BISS-C协议),PWM频率10kHz,要求电流环带宽≥1kHz,速度环带宽≥200Hz,位置环带宽≥30Hz。

初始现象:在MCU(STM32H750,主频480MHz)上实现三环控制,电流环实际执行周期为80μs(受限于ADC读取和FOC计算),速度环周期为400μs,位置环周期为2ms。实测电流环带宽仅约600Hz,速度环带宽约120Hz,无法满足设计要求。同时,在高速运行时出现明显的机械谐振(约2.3kHz),导致噪声和振动。

分析判断过程:

  1. 电流环延迟主要来自ADC采样(SPI读取约3μs)、FOC变换(约15μs)和PI运算(约5μs),加上任务调度开销,总延迟约80μs。根据带宽公式 BW ≈ 1/(2π*T_delay),80μs延迟对应约2kHz理论带宽,但实际受限于采样保持和PWM更新延迟,仅达到600Hz。
  2. 速度环微分噪声明显,编码器在低速时量化误差导致速度波动,需要增加低通滤波,但滤波又引入了额外相位延迟。
  3. 2.3kHz的机械谐振频率接近速度环带宽的10倍,但电流环的PWM谐波(10kHz的边带)可能激励该谐振。

FPGA改造方案:

  1. 将三环全部迁移到FPGA(Xilinx Artix-7 XC7A35T)中实现,MCU仅负责通信和参数管理。
  2. 电流环采用全流水线设计:ADC采样(并行SPI接口,1μs)→ Clark/Park变换(组合逻辑+流水线,2μs)→ PI运算(3个时钟周期,0.3μs)→ 逆Park+SVPWM(2μs)。总延迟约5μs,电流环周期稳定在50μs(与PWM载波同步)。
  3. 速度环使用M/T测速法,编码器计数在FPGA中并行处理,速度更新周期100μs,并加入一阶低通滤波(截止频率500Hz)。
  4. 在电流环输出前加入2.3kHz数字陷波器,衰减深度-20dB,品质因数Q=5。

结果对比:

性能指标 MCU实现 FPGA实现 提升幅度
电流环周期 80μs 50μs 1.6倍
电流环带宽 600Hz 1.2kHz 2倍
速度环带宽 120Hz 250Hz 2.1倍
位置环带宽 25Hz 35Hz 1.4倍
谐振抑制 无法处理 衰减-18dB 有效抑制

风险与代价:FPGA开发周期比MCU长(约3周 vs 1周),调试难度更高,需要掌握硬件描述语言和时序分析。此外,FPGA的定点化运算需要仔细处理数据位宽,避免溢出和精度损失。在本案例中,电流环PI采用Q15格式(16位定点),速度环采用Q12格式,位置环采用Q20格式,经过仿真验证精度满足要求。

复盘经验:三环控制的性能瓶颈往往不在算法本身,而在数据通路延迟。FPGA的核心优势在于将ADC读取、坐标变换、PI运算、PWM更新等环节通过流水线并行化,将总延迟从微秒级压缩到纳秒级。同时,FPGA的确定性时序(无中断延迟、无任务调度抖动)对于伺服控制至关重要。

2.5 常见误区与设计要点总结

误区一:认为三环控制只是三个PID的简单串联。实际上,三环之间存在复杂的耦合关系,尤其是电流环的dq轴解耦、速度环的负载扰动补偿、位置环的轨迹规划,都需要针对具体机械系统进行专门设计。
误区二:在FPGA中直接照搬MCU的浮点算法。FPGA中浮点运算消耗大量DSP资源且延迟高,应优先使用定点化设计。定点化需要根据信号的动态范围确定Q格式,并通过仿真验证精度。
误区三:忽略PWM更新延迟。PWM占空比更新通常需要等待当前载波周期结束,这会产生0.5~1个PWM周期的延迟。在FPGA设计中,可以通过提前计算下一周期的占空比来补偿该延迟,或者使用PWM模块的"影子寄存器"功能。
设计要点清单:
  • 电流环采样必须与PWM载波同步,建议在载波谷底触发ADC
  • 速度估计需要权衡噪声和延迟,M/T测速法在低速时精度更高
  • 位置环增益设置需考虑机械刚度,避免激发谐振
  • 前馈系数应通过实验整定,先速度前馈后加速度前馈
  • 陷波器参数需在线可调,以应对负载变化引起的谐振频率漂移
  • FPGA中所有控制环路应使用统一的时钟域,避免跨时钟域问题