1. ADRC控制算法在电机控制中的核心价值
自抗扰控制器(Active Disturbance Rejection Control, ADRC)作为一种新型控制策略,近年来在电机控制领域展现出显著优势。其核心思想是将系统内部动态和外部扰动统一视为"总扰动",通过扩张状态观测器(ESO)进行实时估计并补偿。这种设计理念使得ADRC对电机这类存在强耦合、非线性和时变特性的被控对象具有天然适应性。
在电机控制场景中,ADRC主要解决三类典型问题:
- 参数敏感性:传统PID对电机参数变化敏感,而ADRC通过扰动观测补偿可降低这种依赖
- 抗扰动能力:负载突变、电网波动等外部干扰可被ESO实时观测并抵消
- 非线性补偿:死区效应、磁饱和等非线性因素可通过自抗扰机制处理
2. 直流电机ADRC控制实现详解
2.1 控制架构设计
直流电机ADRC控制采用单环结构,主要包含三个核心组件:
- 跟踪微分器(TD):安排过渡过程,提取理想微分信号
- 扩张状态观测器(ESO):实时估计系统状态和总扰动
- 非线性状态误差反馈(NLSEF):生成最终控制量
典型控制框图如下:
code复制[给定信号r] → [TD] → [v1,v2]
↘
[电机输出y] → [ESO] → [z1,z2] → [NLSEF] → [控制量u] → [被控对象]
2.2 关键算法实现
以MATLAB代码为例,核心控制器实现如下:
matlab复制function [u, v1, z] = ADRC_Controller(y, r, h)
persistent TD1 TD2 ESO1 ESO2
if isempty(TD1)
% 初始化状态变量
TD1 = 0; TD2 = 0;
ESO1 = 0; ESO2 = 0;
end
% TD参数设置
r0 = 100; % 快速因子
h0 = h; % 滤波因子
% 跟踪微分器实现
v1 = TD1 + h*TD2;
TD2 = TD2 + h*fhan(TD1 - r, TD2, r0, h0);
% ESO参数设置
beta01 = 100; % 观测器带宽
beta02 = 200;
b0 = 0.5; % 控制增益
% ESO实现
e = ESO1 - y;
ESO1 = ESO1 + h*(ESO2 - beta01*e);
ESO2 = ESO2 + h*(-beta02*e + b0*u);
% 非线性控制律
kp = 50; % 比例增益
e1 = v1 - ESO1;
u = (kp*e1 - ESO2)/b0;
% 状态更新
TD1 = v1;
end
2.3 参数整定经验
-
TD参数调节:
- 快速因子r0决定跟踪速度,但过大会引起超调
- 通常先设r0为系统带宽的5-10倍
- h0建议取采样周期的0.5-1倍
-
ESO参数设计:
- 观测器带宽β01和β02需满足β01≈3ωc, β02≈5ωc²(ωc为期望带宽)
- 实际调试时可先设β01=100, β02=200作为起点
- b0的准确度直接影响扰动补偿效果,可通过阶跃响应测试校准
-
控制律参数:
- kp取值与系统惯性相关,惯量越大kp应越小
- 建议从临界稳定值(通过根轨迹法确定)的0.6倍开始调整
调试技巧:先调ESO确保扰动观测准确,再调控制律参数优化动态性能。观测器输出z2应能准确跟踪实际扰动变化。
3. 永磁同步电机双环ADRC控制
3.1 速度环设计要点
速度环ADRC主要对抗负载转矩扰动,其特殊设计包括:
- 抗饱和处理:在NLSEF后加入积分抗饱和环节
- 速度平滑:TD中增加加速度限制
- 参数自适应:根据转速自动调整ESO带宽
典型速度环ADRC参数:
c复制// 速度环参数示例(3000rpm额定转速)
float v_r0 = 50.0; // TD快速因子
float v_beta1 = 30.0; // ESO带宽1
float v_beta2 = 300.0;// ESO带宽2
float v_kp = 15.0; // 比例增益
float v_b0 = 0.2; // 控制增益
3.2 电流环关键技术
电流环需处理逆变器非线性、电阻变化等问题,关键技术点:
- 延时补偿:
c复制// 一拍延时补偿实现
void Delay_Compensation(float *i_ref) {
static float last_ref = 0;
float delta = (*i_ref - last_ref) * 1.5; // 补偿系数
*i_ref = last_ref + delta;
last_ref = *i_ref;
}
-
参数在线辨识:
- 母线电压波动时需实时更新b0
- 采用递推最小二乘法(RLS)进行参数估计
-
谐波抑制:
- 在ESO后增加谐振控制器
- 针对5/7次谐波设置陷波器
3.3 双环协同设计
速度环与电流环的配合需要特别注意:
-
带宽匹配原则:
- 电流环带宽 ≥ 10倍速度环带宽
- 典型设置:速度环50Hz,电流环500Hz-1kHz
-
接口处理:
- 速度环输出需经过rate limiter
- 限幅值根据电机最大允许电流设定
- 增加前馈补偿提升响应速度
-
过零处理:
- 采用软化函数避免微分爆炸
- 转速接近零时切换控制模式
4. 工程实践中的典型问题解决方案
4.1 高频噪声抑制
问题现象:PWM开关频率附近出现振荡
解决方法:
- 在ESO输出端增加二阶低通滤波器
matlab复制% 二阶Butterworth滤波器设计 fc = 0.2 * Fsw; % 截止频率取开关频率的20% [b,a] = butter(2, fc/(Fs/2)); z2_filtered = filter(b, a, z2); - 调整TD的滤波因子h0
- 在控制量输出端增加RC吸收电路
4.2 参数漂移处理
当电机温升导致电阻变化时:
- 建立参数变化表进行离线补偿
- 设计参数观测器在线更新:
c复制// 电阻在线估计示例 void Rs_Estimation(float u, float i, float *Rs) { static float sum_err = 0; float err = u - (*Rs)*i - L*di/dt; sum_err += err * Ts; *Rs = Kp*err + Ki*sum_err; }
4.3 启动策略优化
针对不同负载惯量的启动方案:
- 小惯量系统:直接阶跃启动
- 大惯量系统:
- 采用S曲线加速
- 初始阶段降低ESO带宽
- 逐步增大控制增益
5. 仿真与实机调试技巧
5.1 Simulink建模要点
- 离散化处理:
- 控制器和电机模型采用相同步长
- 使用零阶保持器(ZOH)离散连续模型
- 延时建模:
- 增加1.5个采样周期的纯延时环节
- 模拟实际系统的计算和PWM延时
- 噪声注入:
- 在电流采样通道加入0.5%-1%的Gauss噪声
- 模拟实际传感器噪声
5.2 实机调试步骤
- 开环测试:
- 验证ESO的扰动观测能力
- 校准b0参数(使估计扰动与实际扰动匹配)
- 闭环调试:
- 先调电流环,再调速度环
- 从低带宽开始逐步提高
- 抗扰测试:
- 突加负载观察恢复时间
- 电网波动测试(±15%电压变化)
5.3 性能评估指标
- 动态指标:
- 上升时间(10%-90%)
- 调节时间(±2%误差带)
- 超调量
- 稳态指标:
- 转速波动率
- 电流THD
- 鲁棒性指标:
- 参数变化±20%时的性能衰减
- 抗负载扰动能力
在实际项目中,ADRC参数的最终优化往往需要结合遗传算法等智能优化方法。一个典型的参数优化流程包括:建立评价函数→确定参数范围→离线优化→在线微调。记住,好的控制效果=80%的算法设计+20%的精细调试。