3、发动机建模:汽油机与柴油机特性曲线、均值模型与查表法、节气门与喷油控制
发动机建模这件事,说实话,是整车控制算法里最「接地气」的一环。你想想看,无论你上层策略写得再漂亮,最终执行指令的,还是那个烧油、进气、喷火的铁疙瘩。我这些年调过的车,十有八九的问题都出在模型和实物的偏差上。所以这一章,咱们就好好聊聊发动机建模的几个核心手段。
3.1 汽油机与柴油机的特性曲线
先说说特性曲线。这东西说白了就是发动机的「体检报告」。我习惯把发动机看作一个黑箱,输入是转速和负荷,输出就是扭矩、油耗、排放。特性曲线就是把这些输入输出关系画成图。
汽油机的典型特性曲线:
- 外特性曲线:油门全开时,扭矩随转速的变化。注意,汽油机的最大扭矩通常出现在中低转速区域,大概3000-4000rpm。我遇到过不少新手,以为转速越高扭矩越大,结果标定时把换挡点设得过高,油耗直接崩了。
- 万有特性曲线:等油耗率曲线。你会看到一条「甜甜圈」形状的等高线图,最内圈就是经济区。做混动策略时,我经常盯着这个图看——让发动机尽量工作在「甜甜圈」中心,能省不少油。
柴油机的特性曲线:
- 柴油机跟汽油机不一样。它的扭矩曲线更平缓,最大扭矩区间更宽。说白了,柴油机天生就是干粗活的。
- 柴油机的万有特性曲线,经济区更偏向低转速、高负荷区域。这也是为什么重型卡车都用柴油机——跑高速巡航时,发动机正好落在经济区。
重要提醒:特性曲线是台架试验测出来的,但实车运行时,进气温度、海拔、燃油品质都会让曲线「漂移」。我建议你在标定时留出至少10%的余量,别把曲线用得太极限。
3.2 均值模型与查表法
接下来是建模方法。我个人最常用的两种:均值模型和查表法。它们各有各的脾气。
均值模型
均值模型,说白了就是把发动机的进气、喷油、燃烧过程,用微分方程描述出来。它不关心每个气缸里具体发生了什么,只看整体的「平均效果」。
举个例子,进气歧管压力动态方程:
d(P_man)/dt = (R * T_man / V_man) * (m_dot_thr - m_dot_cyl)
其中:
P_man:进气歧管压力m_dot_thr:节气门处空气质量流量m_dot_cyl:进入气缸的空气质量流量
这个模型的好处是实时性好,适合做控制器的内部模型。但缺点也很明显——它需要标定不少参数,比如充气效率、容积效率。我曾经在一个项目里,光标定这些参数就花了两周,因为发动机的进排气相位一变,参数就得重新调。
查表法
查表法就简单粗暴多了。你把台架试验测到的数据,做成一张张二维或三维表格。控制时直接查表,线性插值就完事了。
比如节气门角度到进气量的映射表:
| 节气门角度 (°) | 转速 1000 rpm | 转速 2000 rpm | 转速 3000 rpm |
|---|---|---|---|
| 10 | 12.5 | 18.3 | 22.1 |
| 20 | 25.0 | 36.7 | 44.2 |
| 30 | 37.5 | 55.0 | 66.3 |
我的经验:查表法虽然简单,但表格的「分辨率」很关键。我曾经见过一个团队,表格只取了10个转速点、8个负荷点,结果在插值区间里扭矩波动特别大。我建议至少取20×15个点,关键区域(比如怠速、最大扭矩区)还要加密。
3.3 节气门与喷油控制
好了,模型建好了,怎么用?这就涉及到两个最基础的控制对象:节气门和喷油器。
节气门控制
汽油机的节气门,说白了就是一个「空气阀门」。驾驶员踩油门,ECU根据踏板位置计算目标进气量,然后控制节气门电机转动。
这里有个坑:节气门响应有延迟。电机转动需要时间,进气歧管充气也需要时间。如果你直接让节气门一步到位,进气量会超调,导致发动机喘振。
我常用的做法是加一个「速率限制器」:
// 伪代码示例
float target_angle = calc_target_angle(pedal_pos);
float rate_limit = 50.0; // 度/秒
if (target_angle > current_angle + rate_limit * dt) {
target_angle = current_angle + rate_limit * dt;
} else if (target_angle < current_angle - rate_limit * dt) {
target_angle = current_angle - rate_limit * dt;
}
actuate_throttle(target_angle);
嗯,这里要注意:速率限制值不能太小,否则驾驶员会觉得「油门响应慢」;也不能太大,否则超调。我一般根据台架试验的阶跃响应曲线来标定这个值。
喷油控制
喷油控制的核心,就是算准「喷多少油」和「什么时候喷」。
喷油量计算:
- 基本喷油量 = 进气量 / 目标空燃比
- 汽油机理论空燃比是14.7:1,柴油机则更稀,一般在18:1到25:1之间。
- 实际控制时还要加各种修正:水温修正、进气温度修正、海拔修正……
喷油时刻:
- 汽油机一般是进气冲程喷油,让燃油和空气充分混合。
- 柴油机则是压缩冲程末期喷油,靠压燃。
- 喷油时刻对排放影响很大。喷早了,NOx升高;喷晚了,颗粒物增多。
避坑指南:我曾经在一个项目中,忽略了喷油器的「死区时间」。喷油器开启和关闭都有延迟,尤其在低负荷时,喷油脉宽本身就短,死区时间占比很大。结果怠速时空燃比控制不准,发动机抖得厉害。后来我在喷油脉宽计算中加了一个死区补偿,问题才解决。
3.4 小结
这一章的内容,说白了就是三件事:
- 特性曲线:看懂发动机的「脾气」,知道它什么时候省油、什么时候有劲。
- 建模方法:均值模型适合做控制,查表法适合做标定,两者结合效果最好。
- 执行器控制:节气门要防超调,喷油器要补死区。
我个人觉得,发动机建模没有「最好」的方法,只有「最合适」的方法。关键是你得清楚自己的应用场景——是做实时控制,还是做离线仿真?是标定量产车,还是做原型验证?想清楚这些,再选模型,事半功倍。
下一章,咱们聊聊变速箱建模。那个东西,比发动机还「拧巴」。