1. 永磁同步电机控制的技术背景
永磁同步电机(PMSM)作为现代工业驱动领域的核心部件,其高性能控制一直是电气传动领域的研究热点。与传统感应电机相比,PMSM具有功率密度高、效率优异、动态响应快等显著优势,特别适合需要精密调速的场合,如数控机床、电动汽车、航空航天等高端应用场景。
但在实际运行中,PMSM面临着多重挑战:参数摄动(如绕组电阻随温度变化)、负载扰动(机械负载突变)、未建模动态(高频谐波效应)等问题都会显著影响控制性能。传统的PID控制虽然结构简单,但在应对这些复杂扰动时往往力不从心——积分环节会导致相位滞后,微分环节又容易放大噪声,这种固有矛盾使得PID在动态性能与抗扰能力之间难以兼顾。
2. 自抗扰控制(ADRC)的核心思想
2.1 从PID到ADRC的进化路径
自抗扰控制器(Active Disturbance Rejection Control, ADRC)由韩京清教授提出,其设计哲学是"将一切不确定性视为可观测、可补偿的总扰动"。与PID的误差反馈思路不同,ADRC通过扩张状态观测器(ESO)实时估计系统内外部的总和扰动(包括模型不确定性、外部干扰、未建模动态等),并在控制律中主动补偿这些扰动,从而实现近似"不变性"控制。
这种思路类似于经验丰富的驾驶员应对侧风干扰——不是等车辆偏离车道后再修正(如PID那样),而是通过手感预判风力的影响,提前调整方向盘角度抵消风压。ADRC的ESO就相当于这种"手感"的数学实现。
2.2 ADRC的三阶架构解析
典型的三阶ADRC包含三个核心组件:
-
跟踪微分器(TD):为参考信号安排过渡过程,避免阶跃输入引起的超调。例如将转速指令从0到1000rpm的跳变转化为平滑的S曲线,其数学表达为:
math复制\begin{cases} v_1(k+1) = v_1(k) + h \cdot v_2(k) \\ v_2(k+1) = v_2(k) + h \cdot fhan(v_1(k)-r(k), v_2(k), r_0, h_0) \end{cases}其中
fhan()为最速综合函数,r_0决定跟踪速度。 -
扩张状态观测器(ESO):将系统总扰动扩张为新的状态变量进行观测。对于PMSM的d轴电流环,其ESO可设计为:
math复制\begin{cases} e = z_1 - y \\ \dot{z}_1 = z_2 - \beta_{01}e \\ \dot{z}_2 = z_3 - \beta_{02}e + b_0u \\ \dot{z}_3 = -\beta_{03}e \end{cases}其中
z_3就是对总扰动的实时估计值。 -
非线性状态误差反馈(NLSEF):采用非线性组合生成控制量。常用形式为:
math复制u_0 = k_1 fal(e_1, \alpha_1, \delta) + k_2 fal(e_2, \alpha_2, \delta)函数
fal()通过参数α调节非线性强度,在小误差区增强灵敏度,在大误差区避免饱和。
3. PMSM的ADRC具体实现方案
3.1 双闭环控制结构设计
针对PMSM的矢量控制框架,我们采用电流-转速双闭环ADRC结构:
code复制[转速ADRC] → [电流ADRC(d轴)] → [SVPWM] → [逆变器]
↑
[电流ADRC(q轴)] ← [弱磁控制]
其中转速环ADRC输出q轴电流参考值,d轴电流参考根据弱磁策略给定。每个ADRC模块都独立配置ESO,形成分布式扰动观测网络。
3.2 参数整定经验法则
通过大量实验总结出PMSM-ADRC的调参规律:
-
ESO带宽:与采样频率的关系应满足
ω_o ≤ 0.2ω_s(ω_s为采样角频率),通常取控制带宽的3~5倍。例如当电流环期望带宽为500Hz时:python复制beta_01 = 3 * 2*pi*500 # 约9420 beta_02 = 3 * beta_01 # 约28260 beta_03 = beta_01**2 # 约8.87e7 -
NLSEF非线性参数:推荐取值区间:
- α₁, α₂ ∈ [0.5, 0.8](增强小误差段增益)
- δ = 0.01~0.1(线性区间宽度)
- k₁, k₂通过带宽法初步计算后微调
-
TD速度因子:与系统响应速度匹配,过快会引入高频噪声。对于额定转速3000rpm的电机:
math复制r_0 = \frac{N_{rated}}{60T_s} \times 10\% = \frac{3000}{60 \times 0.0001} \times 0.1 = 500
4. 实测问题与解决方案
4.1 观测器发散现象
在负载突变时,ESO可能出现估计值漂移。根本原因是离散化误差积累,解决方法包括:
- 采用预测-校正离散化方法(如Tustin变换)
- 增加泄漏项:修改ESO最后一行为
ż₃ = -β₀₃e - εz₃ - 限制扰动变化率:
z₃(k) = sat(z₃(k), Δ_max)
4.2 高频噪声放大
ADRC的微分特性可能放大测量噪声。实测有效的滤波方案:
-
在ESO输入端加入二阶低通滤波:
matlab复制G_f(s) = \frac{ω_f^2}{s^2 + 2ξω_f s + ω_f^2}取ξ=0.707, ω_f=5~10倍控制带宽
-
采用非线性跟踪微分器预处理反馈信号:
math复制
\dot{v}_1 = v_2 \dot{v}_2 = -R^2(v_1-y) - 2Rv_2其中R决定滤波强度
4.3 参数失配鲁棒性测试
人为设置±50%的定子电阻误差和±30%的电感误差,对比PID与ADRC的性能:
| 指标 | PID控制 | ADRC控制 |
|---|---|---|
| 转速超调量 | 12.3% | 4.1% |
| 恢复时间(ms) | 28.5 | 9.2 |
| 转矩波动(%) | 8.7 | 3.2 |
5. 进阶优化方向
5.1 自适应带宽调整
根据运行状态动态调节ESO带宽:
c复制if (|e| > e_th) {
ω_o = ω_o_base * (1 + K_adapt*|e|);
} else {
ω_o = ω_o_base;
}
这种机制在突加负载时自动提高观测器响应速度,在稳态时降低噪声敏感度。
5.2 基于神经网络的扰动预测
用LSTM网络学习扰动变化规律,作为ESO的前馈补偿:
code复制[ESO估计值] + [LSTM预测值] → [总扰动补偿]
实测显示可减少约40%的扰动估计滞后。
5.3 参数自整定策略
结合粒子群算法(PSO)离线优化参数:
-
定义适应度函数:
math复制J = w_1 \cdot t_s + w_2 \cdot OS + w_3 \cdot \Delta T包含调节时间、超调量和转矩波动
-
设计约束条件:
math复制|u(t)| ≤ U_{max}, \quad |du/dt| ≤ S_{max} -
通过200代迭代获得的典型参数集:
python复制params_opt = { 'beta': [12500, 37500, 1.56e8], 'alpha': [0.65, 0.55], 'delta': 0.03 }
6. 工程实施要点
6.1 离散化实现技巧
采用零阶保持器离散化时,ESO的离散形式应写为:
matlab复制z1 = z1 + Ts*(z2 - beta01*e);
z2 = z2 + Ts*(z3 - beta02*e + b0*u);
z3 = z3 - Ts*beta03*e;
其中采样时间Ts的选择需满足:
math复制T_s ≤ \frac{1}{10 \cdot max(ω_c, ω_o)}
6.2 定点数优化
为适应DSP的定点运算,需进行标幺化处理:
- 将状态变量归一化到[-1,1]区间:
math复制z_{1,pu} = \frac{z_1}{Z_{1,max}} - 系数转换为Q格式:
c复制#define BETA01_Q15 (int16_t)(9420 * 32767 / 10000) // Q15格式
6.3 实时性保障措施
在STM32F407上的实测资源占用:
| 模块 | 执行时间(μs) | 内存占用(bytes) |
|---|---|---|
| 转速环ADRC | 18.7 | 120 |
| 电流环ADRC | 9.2 | 80 |
| 总开销 | <30 | <256 |
关键优化手段:
- 使用查表法实现
fal()函数 - 将矩阵运算展开为标量方程
- 采用DSP库的Q15乘法指令