MATLAB/Simulink汽车电动助力转向模型EPS模型

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. 整车参数

参数符号数值单位
车辆质量m1500kg
绕z轴转动惯量Iz2700kg·m²
前轮距质心距离a1.2m
后轮距质心距离b1.4m
轮距t1.5m
转向系统传动比i_s20-
轮胎侧偏刚度(前)C_f150000N/rad
轮胎侧偏刚度(后)C_r180000N/rad
电机转动惯量J_m0.05kg·m²
电机阻尼系数B_m0.1N·m·s/rad
电机扭矩常数K_t0.5N·m/A
电枢电阻R_a0.5Ω
电感L_a0.01H
反电动势常数K_b0.5V·s/rad
减速比N_g50-
助力刚度系数K_motor3N·m/rad
阻尼系数B_damper0.5N·m·s/rad
扭转刚度系数K_stiffness500N·m/rad
扭转阻尼系数B_damping10N·m·s/rad

4. 控制系统设计

4.1 控制策略 - 逻辑门限值控制算法

逻辑门限值控制是一种常用在EPS系统中的控制方法,其基本原理是根据车速和方向盘扭矩来决定助力大小。

4.1.1 控制逻辑
  1. 扭矩检测:通过扭矩传感器检测方向盘扭矩
  2. 车速输入:获取当前车辆速度
  3. 助力计算
    • 当车速低于低速门限值时,提供最大助力
    • 当车速高于高速门限值时,提供最小助力
    • 在中间速度范围内,按线性或非线性规律减少助力
  4. 方向判断:根据扭矩方向确定助力方向
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模型由以下几个主要部分组成:

  1. 驾驶员模型:模拟方向盘输入
  2. EPS控制系统:实现上述控制算法
  3. EPS执行机构模型:电机、减速机构等
  4. 整车动力学模型:二自由度车辆模型
  5. 轮胎模型:简化轮胎-地面相互作用
  6. 传感器模块:模拟各种传感器信号
  7. 可视化模块:显示关键变量

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 模型运行步骤

  1. 打开MATLAB并设置工作目录
  2. 加载eps_model.slx文件
  3. 检查并配置仿真参数(步长、仿真时间等)
  4. 设置初始条件和输入信号
  5. 点击"Run"按钮开始仿真
  6. 观察Scope或使用To Workspace模块记录数据

7.2 参数调整建议

  • 对于不同的整车质量,需调整轮胎侧偏刚度和电机参数
  • 不同的转向系统传动比会影响助力特性,需重新调整控制参数
  • 实际应用中应考虑更多非线性因素如摩擦、间隙等

8. 软件在环仿真测试(SIL)

8.1 测试场景设计

  1. 静态助力测试:固定车速,变化方向盘扭矩
  2. 动态响应测试:阶跃方向盘输入,观察响应
  3. 车速相关测试:不同车速下的助力效果
  4. 正弦扫频测试:评估系统频率响应特性
  5. 极限工况测试:高速急转向等极端情况

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

使用说明

  1. 函数定义eps_control_system 函数接收驾驶员输入的方向盘力矩 Td 作为输入参数。
  2. 计算绝对值:使用 abs 函数计算 Td 的绝对值 u1
  3. 条件判断
    • 如果 u1 小于 1,则 Td2 设为 0;否则 Td2 等于 u1
    • 如果 u1 大于 7,则 Td1 设为 7;否则 Td1 等于 u1
  4. 计算电机电流
    • 定义一些常数 a, b, K, Ka, G_eta(在实际应用中需要根据具体情况调整)。
    • 计算中间变量 u_squaredterm1term2term3
    • 最终计算电机电流 motor_current

注意事项

  • 上述代码中的常数 a, b, K, Ka, G_eta 是假设值,在实际应用中需要根据EPS系统的具体参数进行调整。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值