Как это — быть разработчиком ПО для автомобилей. Часть 1/2
Сталкиваясь с реалиями машиностроительной промышленности, большинство разработчиков программного обеспечения не справляются – уж очень узкоспециализированы продукты, с которыми приходится работать. Это вам не создание программ для интернет-пользователей, компьютеров и даже не мобильные приложения, а потому новички чувствуют себя, как Томас из фильма «Бегущий в лабиринте». Посмотрите, примерно, 50 секунд трейлера – и вы поймете, какой шок испытывают те, кто имеет дело с разработкой ПО для автомобилей впервые.
Все, что у вас есть — это множество терминов и инструментов, о которых вы понятия не имеете. Когда во время собеседования в одной автомобильной компании я поинтересовался, какую IDE они используют, интервьюеру мой вопрос, мягко говоря, не понравился. Я привык к Visual Studio, и наивно надеялся, что здесь для разработки встроенного программного обеспечения понадобится что-то аналогичное. Я даже не представлял, что меня ожидало! Просто море мелких и серьезных (по сложности) инструментов, которым нужна была очередная жертва.
Причем, когда речь идет о разработке программного обеспечения для автомобилей, инструменты отнюдь не единственная проблема. Практически невозможно найти литературу для новичков или просто обучающие материалы, касающиеся библиотек или архитектуры соответствующих программ. Термин «учебное пособие» и вовсе звучит неуместно, ведь сфера автомобилестроения – весьма закрытое сообщество. Да и сообществом ее вряд ли назовешь, ведь при такой конкуренции никто не должен догадаться, как вы создаете ту или иную программу. Чтобы узнать хоть что-то об отдельных инструментах и механизмах этого сегмента программирования, вы можете записаться на запредельно дорогие курсы, но ваша компания должна быть готова выложить немалую сумму и потребуется не меньше нескольких недель, чтобы получить опыт, который вам нужен уже сейчас. Очень жаль, что разобраться в специфике программирования для автомобилестроения так сложно, а потому я решил посвятить свою статью именно этой теме.
Поскольку мне неоднократно приходилось переключаться с создания приложений для интернет-пользователей/компьютеров на разработку встроенных программ и обратно, мне не понаслышке известно о проблемах, с которыми сталкиваются новички, имеющие дело, в основном, с первым блоком продуктов. Аналогичные сложности возникают и у программистов, которые никогда не сталкивались со спецификой автомобильной промышленности.
В этой и следующей статье мне хотелось бы поговорить о принципах работы встроенных программ для автомобилей, а также заглянуть в недра экзотической архитектуры встроенных приложений.
Какие темы мы рассмотрим?
Вы можете посмотреть видео, посвященное разработке электронной системы рулевого управления. Кстати, я тоже работал в этой команде.
Данная модель частично управляется программно. Частично означает, что специализированное ПО лишь помогает водителю, но полный контроль над системой имеет именно он.
Предположим, нам нужно создать полностью электронную систему рулевого управления, в которой руль напрямую не связан с колесами. Вместо этого датчик измеряет угол поворота руля и отправляет полученные данные нашей программе. В автомобильной терминологии это сервопривод. Вы не поверите, но благодаря Nissan на рынке уже появилась модель с сервоприводом.
Работу ПО обеспечивает крошечный процессор или, если говорить точнее, микроконтроллер, по сети подключенный к датчику.
Когда водитель поворачивает руль, благодаря датчику, который постоянно передает информацию о текущем угле поворота, ПО получает соответствующий сигнал. Например, если водитель поворачивает руль на 90 ° вправо, в течение секунды сигнал датчика обрабатывается по следующему принципу:
Помимо этого, ПО также управляет работой электрического двигателя, который перемещает зубчатую рейку слева направо и в обратном направлении, а, значит, изменяется угол поворота передних колес автомобиля. Соответственно, ПО может направить машину влево или вправо. Связь между микроконтроллером, запускающим ПО, и электродвигателем обеспечивается благодаря электронному блоку управления (ECU), в состав которого входит собственно микроконтроллер и усилитель мощности, регулирующий систему питания двигателя. Таким образом, наша программа варьирует подачу тока в двигателе и положение зубчатой рейки изменяется в нужном направлении.
Электронный блок управления (ECU)
При условии, что встроенное программное обеспечение работает корректно, при повороте руля почти мгновенно изменяется положение зубчатой рейки.
Руль — синий, рулевая рейка — розовый (прим.)
Становится понятно, что даже обработка информации здесь не подчиняется ни логике событийно-ориентированного программирования, как в случае с привычными приложениями графического интерфейса пользователя, ни законам пакетных фалов. Вместо этого требуется непрерывная, своевременная обработка входящих данных. Если программе понадобится слишком много времени, чтобы проанализировать показатели датчиков, рулевая рейка и передние колеса автомобиля будут двигаться с задержкой, и водитель это заметит. Скорее всего, в экстремальной ситуации это приведет к потере контроля над автомобилем, например, при повороте руля в целях объезда препятствия машина не сразу среагирует на маневр. Подобная специфика повышает требования к временным показателям программ для автомобилей, особенно, если учесть ограниченную производительность процессора стандартных электронных блоков управления.
В продолжение серии мы рассмотрим архитектуру программного обеспечения, позволяющую устранить обозначенные проблемы, и, надеюсь, с помощью этих материалов начинающие разработчики встроенных приложений для автомобилей гораздо быстрее освоят базовые принципы, действующие в данной сфере.
Чиптюнинг часть3: написание прошивки
Собственно из-за отсутствия времени решил пока написать про написание прошивки в сжатом виде. Позже когда со временим будет попроще напишу развернутый материал. А на первых парах сегодняшнего материала хватит для понимания что такое написания прошивки.
Все описанное в данной статье делается на ваш страх и риск. Ответственности за поврежденные вами ДВС и понесенные вами убытки не несу.
Начнем с того что прежде чем писать прошивку нам надо иметь:
1) Средства для проведения диагностики автомобиля. Кабеля Consult и диагностического ПО вполне достаточно.
2) ECU с возможностью их перепрошивки.
3) ПО для изменения прошивки ECU. (Я буду использовать Nistune, для моих нужд его триал версии вполне достаточно.)
4) Программатор чипов.
5) Двигатель в идеальном или близком к идеалу состояние.
Остановимся подробнее на состояние двигателя. Т.к. неисправный двигатель может «развалиться» или в лучшем случае свести к минимуму наши труды.
Что требуется от двигателя перед началом тюнинга:
1) Отсутствие кодов ошибок.
2) Свежий воздушный фильтр и исправный MAF.
3) Исправный и правильно настроенный TPS(ДПДЗ)
4) Бензонасос и топливный фильтр — новые или в идеальном состояние. Исправные и чистые форсунки.
5) Правильно выставленное зажигание по стробоскопу. Как правило для Nissan Это 15 градусов (реже 20).
6) Новые или в хорошем состояние свечи зажигания. Для турбомоторов Nisssan я бы рекомендовал свечи производства NGK с зазором 0,6мм
Так же не стоит при тюнинге расчитывать на чудо. К примеру если мы имеем полный сток SR20DET, то по MAF-у мы упираемся в потолок равный 290 лс, а по форсункам в 280. И превышение максимально возможных параметров для форсунок опасно для двигателя смертью.
И написание каждой прошивки свыше 280 лс рассчитывается индивидуально под приобретенные спеки снимающие потолок в 280 л.с.
Так даже для потолка стока в 280 л.с. я бы рекомендовал поставить бензонасос 255 л/ч.
Далее как выглядит написание прошивки в nistune. Собственно писать я её буду под сток двигатель с бустконтроллером, прямоток и нулевиком.
При запуске Nistune с начала выбираем модель под которую будет писаться прошивка. Это очень важный момент т.к. разные ECU имеют разные адресные карты и с «не родным» адресным файлом, ваша машина в лучшем случае просто не заведется.
Далее там появиться меня и ищем в нем свою платформу и двигатель. После выбора так же надо будет выбрать прошивку нашего двигателя.
После того как у нас откроется прошика мы сможем её редактировать. Прошивку тоже желательно выбирать согласно модели своего ECU.
Первым делом я направися во вкладку Limits. Она отвечает за отсечки по TPS, оборотам, скорости.
Изменение параметров не вызывает трудности. После клика мыши открывается не большое меню с бегунком которым и производится регулирование.
Soft Rev limit 1 — отвечает у нас за отсечку по оборотам когда дроссель полностью не открыт.
Hard Rev limit 1 — отвечает у нас за отсечку по оборотам когда дроссель полностью открыт. Не рекомендую эту отсечку трогать со стоковыми валами т.к. сток валы примерно при 7500 тысячах начинают активно деградировать.
Safety Rev limit — отвечает за отсечку оборотов при полностью закрытом дросселе.
Safety TP limit — отвечает за отсечку по допустимому открытию дросселя.
Speed limit 1 — отвечает за отсечку по скорости при полностью открытом дросселе.
Speed limit 2 — отвечает за отсечку по скорости когда дроссель полностью не открыт.
Я трогал только отсечку по скорости, поставил оба параметра в 250 км/ч.
Так же если есть необходимость можно изменить карту MAF и К константу при замене форсунок.
В нистюн это все автоматизированно. Если будете работать с другой программой константу К придется считать в ручную. Формула расчета замены форсунок не сложна (производительность старых форсунок / производительность новых форсунок) * константа старых форсунок = константа новых форсунок.
Т.к. у нас прямоток и нулевик, то нам нужно убрать в ECU ограничения что бы наши улучшения не свелись к нулю (да, да прямоток и нулевик без перепрошивки не дают некого прироста мощности, одни звуковые изменения)
Находим вкладку Limit tables
Min TPulse width — этот параметр отвечает за длительность впрыска топлива что бы двигатель не заглох когда вы после активного педалирования бросаете газ. Его можно не трогать.
Min TPulse width — этот параметр отвечает за максимальное время впрыска топлива. Это и есть один из ограничителей наших спеков типа нулевика и прямотока. Т.к. двигатель даже получая больше воздуха, в цилиндры не нальет топлива больше чем положено и сделает нулевик, и прямоток бесполезными. Тут можно начиная примерно с 2800 оборотов ставить 175. Не советую без тонкой настройки ставить максимальное значение в 255 т.к. вам скорее всего будет заливать свечи и взорвется выхлоп.
Load cut — отсечка по топливу/бусту. Вторая палка мешающая нашим спекам увеличить мощность нашего мотора. Из-за этого параметра при поступление воздуха больше чем указано мозгу он отсекает подачу топлива. Тут можно выставить везде 255 если вы собираетесь дуть в двигатель больше 1кг. Я ограничился так же 175 от 2800 оборотов.
В моем случае я на этом закончил. И сохранил прошивку сразу для записи её на чипы.
Но сохраняем в формате odd/even для 256 чипов. Если у вас ECU использует 512 чипы то нужно сохранять одним файлом.
После прихода некоторых спеков напишу про более подробное написание прошивки с расширением топливных карт и прочими интересными вещами.
Инструкция по прошивке ВАЗ, вступление
Всем привет, любителям чип-тюнинга ВАЗ!
Ты хочешь чтобы твой тазик валил? Хочешь чтобы после установки спортивного распредвала, ресивера, выхлопа, расточки ГБЦ твой таз поехал на эти деньги которые ты в него вложил? Не хочешь отдавать бешеные деньги за онлайн откатку, или у тебя нет в городе толкового настройщика с прямыми руками или ты просто хочешь начать прошивать свою машину самостоятельно! Тогда читай дорогой друг, будет интересно, поделюсь с тобой своим опытом. Многие люди меня спрашивают, как прошить, что скачать, как подключить, как откатать прошивку. На все эти вопросы я постараюсь ответить. Вот я и решил написать подробную инструкцию, как я это делаю, потому что смог получить реальный результат после проделанной работы с прошивкой своей тринашки — 9 секунд до 100 км/ч, до прошивки — 12 сек! Чувствуете разницу? И это простой 8ми клапанный мотор. Дальше больше, с 8кл мотора мне удалось выжать 6.31 до ста и 14.66 квотер.
Сразу говорю, чтобы настраивать, нужно включать голову и халявы не будет! Тот, кто хочет пальцем в небо заливать готовые прошивки, попрошу проходить мимо. Хочу просто от души поделиться с людьми своим опытом, чтобы каждый смог повторить такое непростое дело. Может кто-то подумает, вот глупец, разглашает секреты настройки, на которых можно зарабатывать деньги. Сразу говорю, это просто моё хобби, увлекаюсь настройкой моторов и автомобилями. Умею собирать моторы, настраивать моторы и конечно программировать. По специальности я магистр информационных системы и технологий.
Итак, кому интересно, приступаем к настройке ВАЗ 2108 со следующей конфигурацией мотора:
1. Мозги январь 7.2.
2. Мотор 21083.
3. Низ сток, поршни сток, шатуны сток.
4. Пиленая ГБЦ калина 21083.
5. Лёгкие Т-образные клапана впуск 32, выпуск 30.
6. Металлическая Гранта прокладка.
7. Расточен стандартный ресивер по прокладке.
8. Расточен стандартный выпускной коллектор по прокладке.
9. Распредвал Нуждин 10.93 с фазой 282, клапана открыты на 2,1 мм в перекрытии.
10. Дроссельная заслонка 54мм.
11. Фильтр воздушный сток, с холодным забором воздуха.
12. Форсунки сток.
13. Бензонасос сток.
14. Модуль зажигания сток.
Задача, настроить индивидуальную прошивку под этот конфиг, чтобы наш тазик не поехал, а полетел! Что нам понадобиться?
1. Кабель для диагностики и прошивки, я купил его тут, привезли по почте в течении 10 дней. (rd-lab.ru/eshop/product_i…p?cPath=32&products_id=44)
2. Желание настроить машину, не боятся, делать всё аккуратно, прямые руки и светлая голова.
3. Ноутбук.
Букв будет много, с моими рассуждениями, поэтому разбиваю инструкцию на несколько частей:
Следим, буду постепенно выкладывать информацию!
Ну и для интереса, видос. В сырую погоду вечером прохожу поворот на набережной Ижевска под 100км/ч на 3й передаче, не повторяйте такого!
Инструкция по прошивке ВАЗ, подготовка программ
Этап 1. Подготовка всех необходимых программ для чип-тюннинга
1) MotorLog — мой проект по настройке моторов: снимает логи, открывает любые логи, по логам строит калибровки, проводит замеры динамики и мощности моторов и многое другое, нужное для настройки. Заказать и прочитать подробнее про неё можно в моей группе в вк: vk.com/motorchikteam
2) Chip Tunning Pro v3.21— программа для редактирование файла прошивки. Принимает уже готовые калибровки из программы MotorLog.
3) Combiloader v2.1.8 — заливает уже готовую прошивку в ЭБУ.
Программы Chip Tunning Pro v3.21, Combiloader v2.1.8, а также другие бесплатные программы находятся в архиве: yadi.sk/d/95szfrHECIzvFA (архив обновлен 18.12.2020, пароль на архив 12345)
Лада 2113 2007, двигатель бензиновый 1.6 л., 140 л. с., передний привод, механическая коробка передач — тюнинг
Машины в продаже
Комментарии 267
Привет, подскажи что нужно что бы работали мозги и зажигание нормально январь 5.1(хочу поставить на карб зажигание от инжектора)машина 2102
Катушка, мозги, проводка, дад, дпкв, шкиф дпкв, прошивка трс 251.
очень интересно, но ничего не понятно) кстати, DemonErshov, был бы тебе очень благодарен ивспоминал бы добрым словом, если бы хоть чуть-чуть написал бы о процессе прошивки ЭБУ на весте, там вроде как он называется М86 ваз. хотя бы задал вектор челлвеку который 0 в прошивке. заранее огромное спасибо!
Помогите с редактированием прошивки. Ваз 21099, январь 5.1
В прошивке холостой ход 950. Хочу убавить до 850. Подскажите что сделать. Ссылка на прошивку:
chiptuner.ru/download/tunecu/j5b13g33.zip
Прошивке изменил желаемое число оборотов на 850. Но после установки холостие ниже 950 не опускаются.
Что-то мешает, много воздуха и топлива на ХХ, может еще УОЗ великоват. Определяй причину для начала в диагностике.
Подскажите пожалуйста почему архив ПО в вирусах
Привет, не знаю. Думаю антивирусы не любят ломаные программы.
А какой разьем необходим? KKL VAG-COM 409.1 OBD2 пойдет?
Дим, подскажи пожалуйста (весь мозг сломал) как быть с родным УДК при откатке по ШДК на неинженерном блоке январь 7.2? Ведь если убрать удк физически и во флагах комплектации то прошивка в эбу не будет с ним работать а с шдк она не дружит, как тогда откатывать (ведь должна быть нестабильна работа двигателя) насколько я понимаю при офлайн откатке поправка строится в программе и на прошивку эбу не влияет или ставить шдк вместе с удк только шдк к программе подключать а удк подключен к эбу? Второй вопрос — что лучше и легче в применении и надежности иновейт лс2 или аем?
И третий, если использовать аем, то какая программа с ним работает нормально? Спасибо за ответ, извините если этот вопрос поднимался, просто пролистал часть сообщений — вопросы как для СТО
1) все верно, работа будет нестабильная до первой обработки логов. ШДК подключаем отдельно, его задача в лог записать факт. смесь.
2) аем
3) не знаю, все поддерживают аем
Спасибо. И еще вопрос, при откатке прошивки дад +дтв во флагах комплектации выбираем работать по дад и ставим галочку расчитывать поправку наполнения по таблице дад 32х16 (32х32)? Или по сути главное снять лог с шдк, а уже потом перещитать на моторчике в дроссель или дад?
Какой программой можно посмотреть правильно ли показывает дад? Меня терзают сомнения либо в подключении дад, либо введеных параметрах дад в датчиках и механизмах либо в корректной его работе, но прикол в том что в программе r tuner показывае 9,15 паскалей на хх. Какой программой проверить и сколько должно показывать на хх, или может датчику вафли (датчик с газели и по сути он наверное) китайстий
Здравствуйте! Я сменил м73 на я5.1. Вот только не имею возможности купить шдк и инженерник…какую программу подскажите чтобы можно было хотя бы отредактировать программу?
Онлайн-прошивка своими руками
Здесь я расскажу, как подгонял прошивку под свой двигатель.
Статья не претендует на звание профессионального руководства к действию, а лишь является отражением того, что мне удалось найти на просторах инета. Сразу оговорюсь, что на тематических форумах и мануалах, чувствуется неохотность, с которой прошивальщики делится секретами своего ремесла. Также приставка онлайн, в данном случае не совсем корректна, ибо я не использовал инженерный блок, а перепрошивал свой ЭБУ после внесения каждого изменения (в общей сложности блок был перепрошит около 30раз).
Онлайн-прошивка – для кого она нужна?
Если у вас стоковый двигатель, то для вас можно найти миллионы готовых прошивок на любой расход и динамику, от коммерческих до любительских, при этом показатели мощности или расхода топлива могут отличаться от стоковых прошивок на 3-7%.
Но если вы поменяли железо (распредвал, ресивер, паук, нагнетатель), то вам уже не обойтись без подбора параметров, индивидуально под вашу конфигурацию двигателя.
Итак начнем. Для начала, определимся, что нам нужно изменить в прошивке, чтобы адаптировать её под свою конфигурацию:
— Таблицу базового циклового наполнения.
— Поправку к коэффициенту состава смеси.
— Углы Опережения Зажигания.
Таблица базового циклового наполнения (БЦН) – представляет собой трехмерную таблицу, зависимостей циклового расхода воздуха, от оборотов и от положения педали газа.
Для чего нужна: дело в том, что ДМРВ обладает инертностью и разбросом параметров, по этому, контроллер не может полностью полагаться на его показания. Особенно этот косяк проявляется при ускорении. Например, после замены распредвала, до правки таблицы БЦН, при разгоне на первой передаче, происходили рывки и подергивания в следствии переобеднения смеси. После приведения БЦН к действительным параметрам, разгон стал ровным и мягким.
Так же, БЦН – используется для аварийного режима, при выходе из строя ДМРВ.
Таблица БЦН, составляется по логам фактического циклового наполнения во всех режимах.
На практике: постоянно подключенным ноутом, собираются логии циклового наполнения, за несколько дней. Чем больше данных у вас будет, тем точнее удастся выстроить таблицу БЦН. Но проблема в том, что на практике, двигатель вообще не используется на некоторых сочетаниях оборотов-% нажатия на педаль газа. Но на сколько я понимаю, рас мы эти режимы не используем, то и не особо важно иметь значения в тех точках.
Для составления таблицы БЦН я использовал Excel. Отбор и сортировка мне помогли, а так же рисовал графики для наглядности процесса.
Затем вставил полученные значения в таблицу прошивки (получаем трехмерный график).
Кстати цикловое наполнение при 100% нажатой педале газа, получилось как у стокового 16V двигателя (зеленая тонкая линия на графике).
Поправка к коэффициенту состава смеси (поправка альфы)
Дело в том, что если мы зададим в прошивке соотношение воздух-топливо 14,7 (альф = 1, стехиометрический состав смеси) то на выходе мы наверняка получим либо богатую, либо бедную смесь. Это связано с тем, что как, характеристики датчиков, так и исполнительных механизмов — оставляют желать лучшего. А так же вмешиваются в процесс, ряд неучтенных в прошивке факторов.
Поправка альф, выставляется по данным датчика кислорода (ДК). Желательно конечно иметь Широкополосный ДК (ШДК), но и с обычным можно не плохо обойтись.
Как я делал: Отключил в прошивке мощностной состав смеси (выставив зону перехода на мощностной состав смеси, равному 100% положения нажатия педали газа, во всем диапазоне обротов).
В экономичном режиме, выставил состав смеси = 14,7 (альф=1) во всем диапазоне обротов и % нажатия педали газа.
Далее при движении в различных режимах, наблюдал за показаниями ДК.
У меня получилось, что при цикловом наполнении до 300мг/цикл, у меня смесь бедная, а в диапазоне больше 300 – богатая. Это можно объяснить вступлением в работу регулятора давления топлива в рампе (видимо 300мг/цикл является его переходной точкой для повышения давления топлива подаваемого на форсунки).
Далее, обогатил состав смеси в диапазоне до 300мг/ц на 0,3, а в диапазоне больше 300 – обеднил на 0,3. Результаты заезда, показали, что в диапазоне малых нагрузок, я попал куда нужно, а режим с большой цикловой подачей, нужно еще обеднять.
Обеднив режим с большой цикловой подачей на 1,0 – я и в нем почти попал куда хотел (на больших оборотах пришлось еще немного обеднить).
В результате этих манипуляций и замеров, я узнал, что реальный состав смеси при нагрузках до 300мг/ц, у меня формируется беднее, на 0,3 чем закладывается в прошивку. А при нагрузках больше 300мг/ц – богаче на 1,0.
В мануалах, я вычитал, что самую большую мощность, можно получить при составе смеси равном 12,5-13,5 (альф 0,90-0,85) Выставил у себя 13,5 – ибо реальный состав смеси будет 12,5.
С экономичным режимом решил не умничать – взял таблицы состава смеси стоковой прошивки и обогатил их на 0,3 (тонкая зеленая линия, это стоковая прошивка).
В результате машина стала ехать более адекватно, а расход топлива даже уменьшился.
Углы Опережения Зажигания (УОЗ)
Тут тоже не особо мудрствовал, в экономичном режиме оставил как на стоке, а в мощностном – постепенно увеличивал УОЗ, пока не появилась детонация, затем немного уменьшил, чтобы двигатель работал без детонации, но на её грани. На скрине, полученный мной УОЗ в режиме максимальной мощности по сравнению со стоковым (тонкая зеленая линия).
Что еще изменил:
— Границу зоны перехода из экономичного режима в мощностной, сделал еще шире чем в прошлый раз. Теперь при обычном движении в городе, мощностной режим можно вообще не использовать.
— Ограничитель оборотов выставил на 7000 об.мин (6200 сток). Можно было бы и больше, двигатель весело тянет на верхах, но пожалел его, всетаки поршневая не облегченная.
— Диапазон включения вентилятора охлаждения, снизил до 98-96град (против 101-98 у стока).
— Увеличил количество воздуха на пуске, со 120 до 140 шаг рхх, так же пропорционально увеличил и количество топлива.