V-twin мания

Четыре ошибки, которых никто не видел

Заводские таблицы лежали в базе с меткой «проверено», а подписи их осей были угаданы по размеру таблицы. Разбор того, как это вышло и чем кончилось.

Как мы это знаем 10 августа 20266 мин

Заводская калибровка мотоцикла – это таблицы в памяти блока управления. Сколько воздуха входит в цилиндр на каждых оборотах и каждой нагрузке, какой угол опережения ставить, какую смесь держать. Эти таблицы – лучший источник данных, какой вообще бывает: их составил производитель, проверил на стенде и отвечает за них гарантией.

Достать их можно: программа 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