Четыре ошибки, которых никто не видел
Заводские таблицы лежали в базе с меткой «проверено», а подписи их осей были угаданы по размеру таблицы. Разбор того, как это вышло и чем кончилось.
Заводская калибровка мотоцикла – это таблицы в памяти блока управления. Сколько воздуха входит в цилиндр на каждых оборотах и каждой нагрузке, какой угол опережения ставить, какую смесь держать. Эти таблицы – лучший источник данных, какой вообще бывает: их составил производитель, проверил на стенде и отвечает за них гарантией.
Достать их можно: программа MasterTune, которой настройщики правят прошивки, умеет копировать таблицу в буфер обмена. Вставляешь в текстовый файл и получаешь вот это:
76,0 76,0 74,0 73,5 73,0 72,0 68,0 66,5 65,0 66,0
79,0 78,0 76,0 74,5 73,0 73,0 70,0 69,5 69,0 69,0
Голая сетка чисел. Ни подписей, ни осей, ни единицы измерения. По такому файлу нельзя понять даже того, по какой величине идут строки – по оборотам, по секундам или по чему-то ещё.
Как мы решили эту задачу неправильно
Первая версия импортёра смотрела на размер таблицы и подставляла оси из списка, зашитого в код. Таблица 21×14 – значит, обороты от 750 до 7000 и дроссель от 0 до 100 %. Таблица 17×15 – значит, вот такая сетка разрежения.
Раскладки в этот список попадали со скриншотов, которые снимали выборочно: для знакомого размера скриншот не снимали вовсе. Зачем, если размер уже известен.
Всё сходилось. Данные легли в базу с меткой «проверено».
Что нашлось, когда проверили
Проверка была простая: открыть скриншоты, которые всё это время лежали рядом с текстами, и сверить оси глазами. Из шести раскладок неверными оказались четыре.
Ось разрежения у зажигания и у смеси – разная. У калибровки Dyna 1584 обе таблицы имеют размер 17×15, и импортёр подставлял им одну сетку. На скриншотах:
| Таблица | Ось разрежения, кПа |
|---|---|
| Целевая смесь | 20, 26, 30, 40, 45, 50, 55, 60, 65, 70, 80, 85, 90, 95, 100 |
| Зажигание | 15, 20, 30, 40, 45, 50, 55, 60, 65, 70, 75, 80, 90, 95, 100 |
Одинаковый размер, разные оси, четыре позиции из пятнадцати не совпадают. Практический смысл: угол опережения, который завод ставит на 75 кПа, программа считала углом для 80 кПа.
Ось оборотов – тоже разная. У той же пары: смесь идёт по 750, 1000, 1125, 1250 … 6000, а зажигание – по 750, 1000, 1250 … 6000, 7000. В коде стояла одна ось на обе: с лишним 1125 и без 7000.
Одна таблица оказалась вообще не про обороты. Программа считала таблицу обогащения на полной мощности функцией оборотов. На скриншоте её первый столбец подписан Seconds и идёт 0.0, 2.0, 4.1 … 33.1. Это профиль по времени удержания полного газа – механизм, который постепенно доливает топливо для охлаждения, пока вы держите ручку в упоре. Ошибка была не в подписи оси: таблицу понимали не про то.
Единица смеси определялась по названию таблицы. Блок управления хранит смесь то отношением воздух-топливо (числа 10…15), то в лямбде (0.7…1.2) – зависит от поколения. Импортёр всем подписывал «AFR», и лямбда 0.8 лежала в базе как отношение 0.8, то есть как физическая бессмыслица.
Лямбда — Тот же состав смеси, что и AFR, но выраженный в долях от идеала: фактический AFR, делённый на стехиометрический.
Берём реальный AFR и делим на стехиометрический (14.7 для бензина). Получаем удобное число: λ=1.0 – ровно стехиометрия, λ=0.9 – на 10% богаче идеала (топлива больше), λ=1.1 – на 10% беднее.
Зачем это нужно, если есть AFR: число 14.7 верно только для чистого бензина, а для этанола, газа или их смесей «идеал» другой. Лямбда же всегда означает одно и то же – «во сколько раз смесь богаче или беднее идеальной» – независимо от топлива. Поэтому новые моторы (Milwaukee-Eight) и приборы настройки думают именно в лямбде.
Ориентиры на память: максимум момента λ≈0.88 (богато), экономичный крейсер λ≈1.0–1.05 (около идеала).
единица: -, обычно: 0.75–1.15