1. 电动车电驱系统中的振动挑战
在电动车动力总成系统中,电机控制器作为"大脑"般的存在,其控制策略直接影响着整车驾驶品质。我们团队在多个量产项目中发现,当电机工作在特定转速区间时,传动系统会出现明显的扭转振动现象。这种振动不仅会产生令人不适的噪音,长期作用下还会加速机械部件的疲劳损坏。

1.1 振动产生的机理分析
通过实测数据采集和频谱分析,我们发现振动主要来源于两个方面的耦合作用:
- 电磁激励:电机转矩脉动包含6倍于基频的谐波分量(由三相逆变器开关特性导致)
- 机械谐振:传动轴系存在20-50Hz范围内的固有频率,当电磁激励频率与机械固有频率重合时,就会引发共振
传统被动式解决方案(如增加阻尼器)虽然简单,但会带来额外的重量和能量损耗。相比之下,主动阻尼控制通过软件算法实现振动抑制,具有明显的成本和性能优势。
2. 主动阻尼控制的核心原理
2.1 控制策略框架设计
主动阻尼控制的核心思想是通过实时检测系统振动状态,动态调整电机输出转矩来抵消振动能量。我们采用的闭环控制架构包含三个关键环节:
- 状态观测:通过电机编码器信号提取转速波动分量
- 振动提取:使用数字滤波器分离出谐振频带信号
- 转矩补偿:根据振动相位和幅值生成补偿转矩
重要提示:补偿转矩的相位必须与原始振动相差180度才能实现有效抵消,这需要精确控制算法延时。
2.2 二质量模型的数学建模
为验证控制算法有效性,我们首先在Matlab/Simulink中建立了传动系统二质量模型:
code复制% 参数定义(基于某量产车型实测数据)
J_motor = 0.02; % 电机惯量 [kg·m²]
J_wheel = 1.5; % 车轮等效惯量
K_shaft = 800; % 传动轴刚度 [Nm/rad]
C_damp = 0.5; % 固有阻尼 [Nm·s/rad]
% 状态空间方程
A = [0 1 0 0;
-K/J_motor -C_damp/J_motor K/J_motor C_damp/J_motor;
0 0 0 1;
K/J_wheel C_damp/J_wheel -K/J_wheel -C_damp/J_wheel];
B = [0; 1/J_motor; 0; -1/J_wheel];
C = [1 0 0 0]; % 观测电机转速
D = 0;
sys = ss(A,B,C,D);
通过bode图分析可以发现,该系统在32Hz处存在明显的谐振峰,与实车测试结果高度吻合(误差<5%)。
3. 关键算法实现细节
3.1 巴特沃斯高通滤波器设计
为准确提取振动分量,我们采用4阶巴特沃斯高通滤波器:
matlab复制fs = 2000; % 采样频率 [Hz]
fc = 10; % 截止频率 [Hz]
[b,a] = butter(4, fc/(fs/2), 'high');
% 零相位滤波实现(避免相位失真)
filtered_speed = filtfilt(b, a, raw_speed);
滤波器参数选择依据:
- 截止频率需低于最低谐振频率(本项目为20Hz)
- 采用零相位滤波保持振动信号的时域特征
- 4阶设计在阻带衰减和计算复杂度间取得平衡
3.2 转矩补偿算法优化
基础补偿算法:
c复制// 实时控制代码示例(简化版)
float vibration_compensation(float speed_error) {
static float prev_error[2] = {0};
float comp_torque;
// 二阶补偿器(相位补偿+增益调节)
comp_torque = 1.2*speed_error - 0.8*prev_error[0] + 0.3*prev_error[1];
// 更新历史数据
prev_error[1] = prev_error[0];
prev_error[0] = speed_error;
return comp_torque * Kp; // Kp为补偿增益
}
实际项目中我们还增加了以下改进:
- 自适应增益调节(根据转速自动调整Kp)
- 死区处理(微小振动不触发补偿)
- 转矩变化率限制(保护机械部件)
4. 工程实现中的挑战与解决方案
4.1 延迟补偿技术
控制环路中存在约300μs的系统延迟(包括采样、计算和PWM更新),这会导致补偿转矩相位滞后。我们采用Smith预估器进行补偿:
code复制T_delay = 0.0003; % 实测延迟时间
[num,den] = pade(T_delay,2); % 二阶Pade近似
delay_sys = tf(num,den);
4.2 参数鲁棒性测试
在不同温度和负载条件下,传动系统刚度会有±15%的变化。我们通过蒙特卡洛仿真验证了控制算法的适应性:
| 参数变化 | 振动抑制率 | 稳定性裕度 |
|---|---|---|
| +15%刚度 | 82% | 45° |
| 标称值 | 89% | 50° |
| -15%刚度 | 85% | 48° |
4.3 量产验证数据
在某车型上的实测结果对比:
| 指标 | 无控制 | 主动阻尼 | 改善率 |
|---|---|---|---|
| 振动加速度RMS | 0.8m/s² | 0.15m/s² | 81% |
| 车内噪音 | 45dB | 38dB | 15% |
| 电机效率 | 92% | 93.5% | +1.5% |
5. 进阶优化方向
5.1 基于MTPA的集成控制
将阻尼控制与最大转矩电流比(MTPA)控制相结合,在抑制振动的同时优化效率:
c复制void torque_control_loop() {
torque_cmd = get_driver_demand();
vibration = get_vibration_level();
if (vibration > threshold) {
comp_torque = damping_control();
torque_cmd += comp_torque;
}
id_iq = mtpa_calculate(torque_cmd);
set_inverter_output(id_iq);
}
5.2 机器学习参数自整定
采集不同工况下的最优控制参数,训练神经网络模型实现实时参数调整:
- 输入层:转速、负载扭矩、温度
- 隐藏层:3层全连接(32节点/层)
- 输出层:Kp、Ki、相位补偿量
测试表明该方法可将振动抑制率再提升5-8%。
6. 开发工具链建议
基于我们的项目经验,推荐以下开发流程:
-
建模阶段:
- Matlab/Simulink(系统建模)
- PLECS(功率器件损耗分析)
-
算法开发:
- Python(快速原型验证)
- C代码生成(Embedded Coder)
-
硬件测试:
- dSPACE MicroAutoBox(快速控制原型)
- CANape(参数标定)
经验分享:在模型在环(MIL)阶段就要考虑代码生成的需求,避免使用Simulink中不易转换为C的模块(如复杂的数学运算块)。