第三章 被控对象模型:发动机模型、变速箱模型、车辆动力学模型、驾驶员模型
做TCU的HIL测试,说白了就是给变速箱控制器搭一个虚拟的舞台。这个舞台上的演员,就是被控对象模型。我这些年调试过不少项目,发现很多新手容易忽略一个问题:模型精度不够,测试结果就是自欺欺人。
今天咱们就聊聊这四个核心模型——发动机、变速箱、车辆动力学、驾驶员。它们怎么搭?要注意什么?我踩过哪些坑?
3.1 发动机模型:动力源头不能马虎
发动机模型是TCU的“上游”。你想想看,TCU要决定换挡时机,首先得知道发动机能输出多少扭矩。
模型核心要素:
- 扭矩输出特性:基于节气门开度和转速的查表模型。我习惯用二维MAP图,横轴是转速,纵轴是节气门开度,输出是扭矩。
- 转速动态响应:发动机转动惯量 + 扭矩平衡方程。说白了就是J·dω/dt = T_eng - T_load。
- 怠速控制:PID闭环,目标怠速转速通常设在750-850rpm。
- 限扭与保护:超速断油、过热保护等逻辑。
避坑指南:
我曾经在某个项目中,发动机模型只做了稳态MAP,结果TCU在急加速工况下频繁误判。后来加了动态响应时间常数,问题才解决。记住:发动机扭矩响应有延迟,一般50-200ms不等,这个必须模拟出来。
一个简化的发动机模型代码示例(Simulink风格):
% 发动机扭矩计算
function T_eng = EngineTorque(alpha, w_eng)
% alpha: 节气门开度 [0-100%]
% w_eng: 发动机转速 [rad/s]
% 查表得到稳态扭矩
T_steady = interp2(alpha_map, w_map, torque_map, alpha, w_eng);
% 一阶滞后滤波,模拟动态响应
tau = 0.1; % 时间常数 100ms
T_eng = T_steady * (1 - exp(-dt/tau));
end
3.2 变速箱模型:核心执行机构
变速箱模型是TCU直接控制的对象。这里我重点讲自动变速箱(AT)和双离合变速箱(DCT),因为CVT和AMT相对简单一些。
模型包含:
- 离合器/制动器模型:液压执行机构 + 摩擦片动态。关键参数是结合压力、滑摩速度、摩擦系数。
- 齿轮传动模型:速比、传动效率、转动惯量折算。
- 液压系统模型:油泵、电磁阀、油路压力响应。嗯,这里要注意,液压响应时间一般在20-80ms。
- 换挡逻辑模型:同步器动作、换挡时序。
我的个人习惯:
做DCT模型时,我习惯把两个离合器的状态机分开建模。一个离合器结合,另一个准备。这样能清晰模拟预挂挡和扭矩交接过程。有一次客户抱怨换挡顿挫,查了半天发现是模型里离合器滑摩时间常数设错了,从50ms改成80ms就对了。
变速箱速比示例表:
| 挡位 | 速比 | 传动效率 | 最大输入扭矩(Nm) |
|---|---|---|---|
| 1挡 | 4.71 | 0.95 | 450 |
| 2挡 | 3.14 | 0.96 | 450 |
| 3挡 | 2.10 | 0.97 | 400 |
| 4挡 | 1.67 | 0.97 | 350 |
| 5挡 | 1.28 | 0.98 | 300 |
| 6挡 | 1.00 | 0.98 | 280 |
3.3 车辆动力学模型:整车响应
车辆动力学模型把发动机和变速箱的输出,变成车速和加速度。说白了就是牛顿第二定律在车上的应用。
关键方程:
F_drive = T_wheel / r_wheel % 驱动力
F_resist = F_roll + F_aero + F_grade % 阻力
m * a = F_drive - F_resist % 加速度
模型参数:
- 整车质量:包括乘员和货物,一般1200-2500kg。
- 滚动阻力系数:0.01-0.02,取决于轮胎和路面。
- 空气阻力系数:Cd值,轿车0.25-0.35。
- 迎风面积:A,轿车约2.0-2.5m²。
- 坡度阻力:m·g·sin(θ),θ是道路坡度。
注意:
我曾经在测试中忽略了旋转质量的等效惯量,结果加速性能仿真偏差达到15%。后来在模型中加入了飞轮、半轴、车轮的转动惯量折算,精度才上来。你想想看,一个20kg的飞轮在加速时相当于增加了多少等效质量?
3.4 驾驶员模型:测试场景的指挥官
驾驶员模型决定了测试场景。没有它,TCU就不知道什么时候该加速、什么时候该刹车。
驾驶员模型类型:
- 标准循环驾驶员:NEDC、WLTC、CLTC等法规循环。说白了就是按给定车速曲线跑。
- 自适应巡航驾驶员:PID跟踪目标车速,带前车距离控制。
- 激进型驾驶员:急加速、急刹车、频繁换道。用于极限工况测试。
- 坡道起步驾驶员:模拟坡道起步、坡道辅助功能测试。
一个简单的PID驾驶员模型:
% 驾驶员油门/刹车控制
error = v_target - v_actual;
accel_pedal = Kp * error + Ki * integral(error) + Kd * derivative(error);
% 限幅处理
if accel_pedal > 0
throttle = min(accel_pedal, 100); % 油门开度 0-100%
brake = 0;
else
throttle = 0;
brake = min(-accel_pedal, 100); % 刹车压力 0-100%
end
避坑指南:
我曾经用标准循环驾驶员做换挡逻辑测试,结果发现TCU在某个特定工况下频繁换挡。后来把驾驶员模型的PID参数调松一点,让车速有±2km/h的波动,反而暴露了TCU的换挡振荡问题。所以我的建议是:不要用完美跟踪的驾驶员模型,要加入合理的驾驶波动。
3.5 四个模型的集成与接口
这四个模型不是孤立的。它们通过信号线连接,形成一个闭环系统。
信号流:
- 驾驶员 → 发动机:油门踏板开度
- 驾驶员 → 变速箱:换挡请求(手动模式)
- 发动机 → 变速箱:发动机转速、扭矩
- 变速箱 → 车辆动力学:输出轴扭矩、转速
- 车辆动力学 → 发动机:车速(用于巡航控制)
- 车辆动力学 → 驾驶员:实际车速
集成测试要点:
- 信号类型匹配:模拟信号、CAN信号、PWM信号要一一对应。
- 时序同步:模型步长一般1-10ms,HIL系统要保证实时性。
- 故障注入接口:每个模型都要预留故障注入点,比如传感器失效、执行器卡滞。
我的经验:
做集成测试时,我习惯先跑一个简单的“怠速-起步-换挡-停车”循环。如果这个基本场景都跑不通,就别谈复杂工况了。有一次我发现模型集成后车速震荡,查了三天才发现是发动机模型和变速箱模型的扭矩信号单位不一致——一个用Nm,一个用N·m,小数点差了一位。
好了,这一章的内容就到这里。四个模型各有各的脾气,但组合起来就是TCU测试的完整舞台。下一章咱们聊聊测试用例设计,到时候我会分享一些实际项目中的测试场景。