MATLAB/Simulink汽车电动助力转向模型EPS模型
模型包括整车二自由度模型,eps模型,上下转向柱模型,包括建模方程,整车参数,匹配计算,模型,使用说明
电动助力转向系统控制系统
电动助力转向系统被控系统
逻辑门限值控制算法
控制策略
软件在环仿真测试
文章目录
MATLAB/Simulink汽车电动助力转向(EPS)系统模型文档
1. 系统概述
本项目包含基于MATLAB/Simulink的完整电动助力转向(EPS)系统模型,包括:
- 整车二自由度动力学模型
- EPS执行机构模型
- 转向柱传动模型
- 控制系统设计
- 基于逻辑门限值的控制策略
- 模型验证与仿真测试
2. 系统建模
2.1 整车二自由度模型
2.1.1 运动方程
整车二自由度模型描述车辆的横摆运动和侧向运动:
m*(v' + u*r) = Fyf + Fyr
Iz*r' = a*Fyf - b*Fyr
其中:
- m: 车辆质量 (kg)
- v: 侧向速度 (m/s)
- u: 纵向速度 (m/s)
- r: 横摆角速度 (rad/s)
- Fyf, Fyr: 前后轮侧向力 (N)
- Iz: 绕z轴转动惯量 (kg·m²)
- a: 前轮距质心距离 (m)
- b: 后轮距质心距离 (m)
2.2 EPS执行机构模型
EPS系统执行机构的动力学方程:
J_m * θ_m'' + B_m * θ_m' = K_t * I_a - T_out * N_g
V_a = R_a * I_a + L_a * I_a' + K_b * θ_m'
T_assist = K_motor * θ_m_error + B_damper * θ_m_error'
其中:
- J_m: 电机转动惯量
- θ_m: 电机转角
- B_m: 电机阻尼系数
- K_t: 电机扭矩常数
- I_a: 电枢电流
- T_out: 输出扭矩
- N_g: 减速比
- V_a: 电枢电压
- R_a: 电枢电阻
- L_a: 电感
- K_b: 反电动势常数
- T_assist: 助力扭矩
- K_motor: 助力刚度系数
- B_damper: 阻尼系数
2.3 转向柱传动模型
转向柱模型包括扭转刚度和阻尼特性:
T_handwheel = T_input + K_stiffness * (θ_column_upper - θ_column_lower) + B_damping * (θ_column_upper' - θ_column_lower')
其中:
- T_handwheel: 方向盘扭矩
- T_input: 输入扭矩
- K_stiffness: 扭转刚度系数
- B_damping: 扭转阻尼系数
- θ_column_upper: 上转向柱角度
- θ_column_lower: 下转向柱角度
3. 整车参数
参数 | 符号 | 数值 | 单位 |
---|---|---|---|
车辆质量 | m | 1500 | kg |
绕z轴转动惯量 | Iz | 2700 | kg·m² |
前轮距质心距离 | a | 1.2 | m |
后轮距质心距离 | b | 1.4 | m |
轮距 | t | 1.5 | m |
转向系统传动比 | i_s | 20 | - |
轮胎侧偏刚度(前) | C_f | 150000 | N/rad |
轮胎侧偏刚度(后) | C_r | 180000 | N/rad |
电机转动惯量 | J_m | 0.05 | kg·m² |
电机阻尼系数 | B_m | 0.1 | N·m·s/rad |
电机扭矩常数 | K_t | 0.5 | N·m/A |
电枢电阻 | R_a | 0.5 | Ω |
电感 | L_a | 0.01 | H |
反电动势常数 | K_b | 0.5 | V·s/rad |
减速比 | N_g | 50 | - |
助力刚度系数 | K_motor | 3 | N·m/rad |
阻尼系数 | B_damper | 0.5 | N·m·s/rad |
扭转刚度系数 | K_stiffness | 500 | N·m/rad |
扭转阻尼系数 | B_damping | 10 | N·m·s/rad |
4. 控制系统设计
4.1 控制策略 - 逻辑门限值控制算法
逻辑门限值控制是一种常用在EPS系统中的控制方法,其基本原理是根据车速和方向盘扭矩来决定助力大小。
4.1.1 控制逻辑
- 扭矩检测:通过扭矩传感器检测方向盘扭矩
- 车速输入:获取当前车辆速度
- 助力计算:
- 当车速低于低速门限值时,提供最大助力
- 当车速高于高速门限值时,提供最小助力
- 在中间速度范围内,按线性或非线性规律减少助力
- 方向判断:根据扭矩方向确定助力方向
4.1.2 助力特性曲线
function [assist_torque] = assist_control(hand_torque, vehicle_speed)
% 参数设置
low_speed = 10; % 低速门限(km/h)
high_speed = 60; % 高速门限(km/h)
max_assist = 3; % 最大助力(Nm)
min_assist = 0.5; % 最小助力(Nm)
% 归一化处理
normalized_torque = abs(hand_torque) / 5; % 假设最大手力矩为5Nm
% 计算助力增益
if vehicle_speed <= low_speed
gain = 1;
elseif vehicle_speed >= high_speed
gain = 0;
else
gain = 1 - (vehicle_speed - low_speed) / (high_speed - low_speed);
end
% 计算最终助力
assist_torque = (min_assist + (max_assist - min_assist) * normalized_torque * gain) ...
* sign(hand_torque);
end
5. Simulink模型结构
整个Simulink模型由以下几个主要部分组成:
- 驾驶员模型:模拟方向盘输入
- EPS控制系统:实现上述控制算法
- EPS执行机构模型:电机、减速机构等
- 整车动力学模型:二自由度车辆模型
- 轮胎模型:简化轮胎-地面相互作用
- 传感器模块:模拟各种传感器信号
- 可视化模块:显示关键变量
6. 模型匹配计算
6.1 助力特性匹配
助力特性需要与整车参数匹配,确保在不同车速下提供合适的转向助力:
Assist Ratio = (Max Hand Wheel Torque at Parking) / (Max Assist Torque)
通常选择助力比在3:1到5:1之间,以保证良好的"路感"和轻便性。
6.2 电机选型计算
电机功率需求计算:
P_motor = (T_assist_max * ω_motor) / η
其中:
- T_assist_max: 最大助力扭矩
- ω_motor: 电机角速度
- η: 传动效率
7. 使用说明
7.1 模型运行步骤
- 打开MATLAB并设置工作目录
- 加载
eps_model.slx
文件 - 检查并配置仿真参数(步长、仿真时间等)
- 设置初始条件和输入信号
- 点击"Run"按钮开始仿真
- 观察Scope或使用To Workspace模块记录数据
7.2 参数调整建议
- 对于不同的整车质量,需调整轮胎侧偏刚度和电机参数
- 不同的转向系统传动比会影响助力特性,需重新调整控制参数
- 实际应用中应考虑更多非线性因素如摩擦、间隙等
8. 软件在环仿真测试(SIL)
8.1 测试场景设计
- 静态助力测试:固定车速,变化方向盘扭矩
- 动态响应测试:阶跃方向盘输入,观察响应
- 车速相关测试:不同车速下的助力效果
- 正弦扫频测试:评估系统频率响应特性
- 极限工况测试:高速急转向等极端情况
8.2 测试代码示例
% 初始化测试参数
test_duration = 10; % 测试时长(s)
sample_time = 0.01; % 采样时间(s)
time = 0:sample_time:test_duration;
% 定义测试输入信号
steering_angle_input = zeros(size(time));
vehicle_speed_input = 30 * ones(size(time)); % 恒定车速30km/h
% 在某个时间段施加方向盘扭矩
for i = 1:length(time)
if time(i) >= 2 && time(i) <= 5
steering_angle_input(i) = 2 * sin(2*pi*(i-2)*sample_time); % 2秒到5秒施加输入
else
steering_angle_input(i) = 0;
end
end
% 存储原始参数
original_params = get_param('eps_model', 'ObjectParameters');
% 设置快速仿真模式
set_param('eps_model', 'SimulationMode', 'rapid');
% 创建测试循环
for test_case = 1:length(time)
% 设置输入
assignin('base', 'handwheel_angle', steering_angle_input(test_case));
assignin('base', 'vehicle_speed', vehicle_speed_input(test_case));
% 运行仿真
sim('eps_model');
% 存储结果
results.time(test_case) = time(test_case);
results.assist_torque(test_case) = out.assistTorque;
results.handwheel_torque(test_case) = out.handwheelTorque;
results.actual_angle(test_case) = out.steeringAngle;
end
% 恢复原始参数
set_param('eps_model', original_params);
% 结果分析
figure;
subplot(2,1,1);
plot(results.time, results.assist_torque, 'b', ...
results.time, results.handwheel_torque, 'r');
legend('Assist Torque', 'Handwheel Torque');
xlabel('Time (s)');
ylabel('Torque (Nm)');
title('Steering Torque Response');
subplot(2,1,2);
plot(results.time, results.actual_angle);
xlabel('Time (s)');
ylabel('Steering Angle (rad)');
title('Steering Angle Response');
9. 总结
本项目提供了一个完整的EPS系统建模与控制方案,包含了从机械系统建模到电子控制系统的完整设计。模型可以用于研究EPS系统性能、优化控制算法以及进行软件在环测试。实际应用中可能需要进一步考虑更复杂的整车动力学模型、轮胎模型以及更高级的控制算法(如PID控制、模糊控制、自适应控制等)。
。
MATLAB 脚本实现
function [motor_current] = eps_control_system(Td)
% 输入参数:Td - 驾驶员输入方向盘力矩
% 计算绝对值
u1 = abs(Td);
% 判断u1是否小于1
if u1 < 1
Td2 = 0;
else
Td2 = u1;
end
% 判断u1是否大于7
if u1 > 7
Td1 = 7;
else
Td1 = u1;
end
% 计算电机电流
a = 1; % 假设a的值为1,实际应用中需要根据具体情况进行调整
b = 1; % 假设b的值为1,实际应用中需要根据具体情况进行调整
K = 1; % 假设K的值为1,实际应用中需要根据具体情况进行调整
Ka = 1; % 假设Ka的值为1,实际应用中需要根据具体情况进行调整
G_eta = 1; % 假设G_eta的值为1,实际应用中需要根据具体情况进行调整
% 计算中间变量
u_squared = u1^2;
term1 = K * (a + b) / 2;
term2 = K * (a - b) / 2 * cos(2 * u_squared);
term3 = K * a * Td2^2 * b * Td1;
% 计算最终电机电流
motor_current = (term1 + term2 + term3) / (Ka * G_eta);
end
使用说明
- 函数定义:
eps_control_system
函数接收驾驶员输入的方向盘力矩Td
作为输入参数。 - 计算绝对值:使用
abs
函数计算Td
的绝对值u1
。 - 条件判断:
- 如果
u1
小于 1,则Td2
设为 0;否则Td2
等于u1
。 - 如果
u1
大于 7,则Td1
设为 7;否则Td1
等于u1
。
- 如果
- 计算电机电流:
- 定义一些常数
a
,b
,K
,Ka
,G_eta
(在实际应用中需要根据具体情况调整)。 - 计算中间变量
u_squared
、term1
、term2
和term3
。 - 最终计算电机电流
motor_current
。
- 定义一些常数
注意事项
- 上述代码中的常数
a
,b
,K
,Ka
,G_eta
是假设值,在实际应用中需要根据EPS系统的具体参数进行调整。