Сначала я хотел написать пост про то, как изменить межсервисный интервал по замене масла. Однако вышло немного непонятно и получилось как у всех, одна только практика без теории. Поэтому я решил написать обширную теоретическую часть по кодированию, прочитав которую, вы научитесь хорошо понимать, что и с чем едят и менять всё что угодно и как угодно в своей машине, не прибегая к поискам инструкций. Думал это всё разместить в блоге, но практическая часть всё равно будет и относится она непосредственно к Южанке, поэтому всё-таки будет здесь, в БЖ.
Большинство инструкций по кодированию BMW, как правило, содержат в себе минимум информации, без каких-либо подробностей, вида «измените значение параметра «X» на «aktiv» или «wert_xx», и что-то будет работать по-другому». Этого в большинстве случаев достаточно, эффект достигнут и голова не болит. Однако любознательным товарищам иногда хочется понимать, что за что отвечает и как оно вообще устроено. Ниже пойдёт самая мякотка, но если вас кодирование в принципе не интересует, можно на этом закончить чтение. Поехали!
* * *
Предположим, что вы уже знаете, что такое NCS Expert, пакет программ BMW Standard Tools и файлы данных SP-Daten и всё это установили. И даже научились кодировать всякую ерунду типа поворотников на HUD, редактируя файл FSW_PSW.MAN. Хотя и не очень-то даже понимаете, как вообще это всё дело работает.
Начнём с тех самых SP-Daten файлов. Как правило это увесистый архив, в котором есть несколько папок:
cfgdat — файлы конфигурации для NCS Expert, содержит также расшифровки кодов ошибок при кодировании;
data — самая «толстая» папка, в ней лежат прошивки для ЭБУ;
daten — кодировочные файлы и файлы с описанием комплектаций, опций и т. д. Об этих файлах мы и поговорим чуть ниже;
ecu & sgdat — папки с библиотеками для работы с блоками управления. Что-то вроде так называемых интерфейсов, описывающих функции блоков;
Оставшиеся папки содержат в себе информацию о применимости прошивок, их связей друг с другом, данные о формате БД, контрольные суммы и т. д. Тоже интересно, но не в этой теме.
Кодировочные файлы
Больше всего нам интересна папка daten. В ней содержатся файлы с расширениями вида .Cxx, где xx — произвольный шестнадцатиричный номер, обозначающий порядковый номер этого файла (или вернее «кодировочный индекс»). На один и тот же ЭБУ может существовать несколько таких файлов (т. е. кодировочных индексов), каждый из которых привязан к версии прошивки в этом блоке. С течением времени в прошивки добавляли новые или изменяли старые функции, а вместе с ними добавлялись/изменялись параметры для них. При таких изменениях заводился новый кодировочный файл, со следующим по порядку индексом. Но не всякая новая прошивка содержит новый же кодировочный индекс, зачастую в прошивке просто исправляют ошибки и ничего более. Например, блок LM2 у E60 имеет аж 53 кодировочных индекса (последний — 35h), правда не все доступны в daten-файлах, а совсем старые уже удалены.
Daten-файлы
При установке с помощью запуска скрипта LADEN.BAT все файлы копируются в папку NCS Expert и после этого мы можем их использовать. Это понятно, но кое-что в этих файлах есть весьма интересное — файлы с расширениями 000, ZUS и M00. Как оказалось, это обычные текстовые файлы и в них есть любопытная информация. Т. к. рассматриваем мы кузов E60 (и соответсвенно E61, E63 и E64), то самый интересный файл — E60AT.000. Его можно открыть в текстовом редакторе и внимательно изучить, но сначала поговорим о кодировании.
Vehicle Order
Наверняка вы знакомы с понятием VO (Vehicle Order) или FA (Fahrzeugauftrag). Это шифр, описывающий комплектацию и другие параметры автомобиля. Этот шифр хранится в нескольких блоках автомобиля, в E60 его хранят блоки CAS и LMA. Возможно вы даже изменяли его при кодировании, обычно это делается при дооснащениями какими-либо опциями. В некоторых инструкциях весь шифр называют VO, а отдельный элемент — FA. Это неправильно, т. к. VO и FA это суть одно и то же.
Типичный шифр комплектации автомобиля выглядит вот так (это актуальный на момент публикации FA Южанки):
E63_#0908&LED5%0300*EA51$1CA$212$217$229$237$248$255$2PA$2SF$2TB$302$319$322$323$346$356$428$430$431$441$442$459$464$481$494$4BW$502$508$522$524$534$548$563$5AC$5DF$609$610$614$615$616$620$644$672$6FL$6NF$6UD$701$752$7SP$818$850$863$877$880$984$9AA-B090-NMUW
Когда вы подключаетесь к машине и считываете в NCS Expert FA из машины, он сохраняется в файл fa.trc в папке WORK. Он точно описывает текущую комплектацию автомобиля и некоторые специальные параметры, заданные конкретно для этого автомобиля. Можно разложить этот шифр по полочкам:
E63_ — кузов;
#0908 — так называемый временной критерий. Это параметр, который отражает технический уровень автомобиля. По ходу жизни автомобиля на конвеере, в его конструкцию вносятся изменения, добавляют новые возможности или модернизируются старые. В среднем новый временной критерий выходит раз в полгода, а в первые года выпусков и того чаще. В данном случае мой критерий — сентябрь 2008. На самом деле оригинальный заводской был старше, #0907, но он был изменён после установки CIC для корректности работы диагностических программ. По этому критерию программы для работы с авто определяют, какие блоки в машине соответствуют определённым опциям. Если временной критерий неверный, то программы, например, могут неверно отображать список блоков в авто;
&LED5 — цвет и материал обивки. В данном случае Leder D5, он же Saddle Brown;
%0300 — код краски (300, Alpinweiss 3);
*EA51 — Код кузова, двигателя и региона. Как правило, содержится в VIN-номере после первых трёх букв (WBA для немецких или X4X для калининградских авто);
$xxx — коды опций, идущие подряд. В расшифровке автомобиля вы можете увидеть те же коды, только в формате SxxxA;
-xxx (или +xxx) — Персональная настройка. Что-то вроде «галочек» в настройках программ;
Ну вроде всё просто? Вполне. Внимательные могут заметить в начале каждого значения специальный символ, который обозначает тип значения (# для временного критерия, & для обивки, % для краски и т. д.). Теоретически порядок следования этих значений при таких префиксах вообще неважен.
Идентификаторы опций
Вернёмся к нашему E60AT.000.
E60AT.000
Он весьма объёмный, но в нём есть очень полезная информация с комментариями (они написаны после двух слешей «//», программисты сразу поймут), правда на немецком. Не все опции, вписанные в FA, влияют на кодировку автомобиля. Поэтому для опций, которые влияют, заведены отдельные идентификаторы или набор идентификаторов, которые используются в работе при кодировании. В файле E60AT.000 как раз и приведены соответствия идентификатора или группы идентификаторов какой-либо опции из FA.
Общий формат такой:
X YYYY WWWW ZZZZZ //комментарий
Где X обозначает тип значения в FA, YYYY — собственно само значение из FA (без спец. символа), WWWW — условие, при котором данное соответствие актуально (в большинстве случаев никаких условий нет), ZZZZ — идентификатор для кодирования, иногда их сразу несколько.
Типы значений FA:
A — временной критерий (#xxxx);
Z — актуальный временной критерий (также #xxxx);
W — основные опции ($xxx) или тип кузова/двигателя/региона (*xxxx);
E, H, K — настройка основных опций (-xxx, +xxx);
Примеры:
A #0903 PU03 //PU 09/03
Здесь мы видим, что #0903 в FA соответствуюет идентификатору (отсюда и далее будет «идент» для простоты написания) PU03. При кодировании наличие этого идента позволяет правильно закодировать автомобиль с учётом установленного оборудования (если машина реально соответствует временному критерию «сентябрь 2003»).
A #0305 PU03 DEZ03 MAERZ04 APRIL04 JUNI04 PU04 MAERZ05 //MAERZ PU 03/05 (LM_AHL)
Тут как мы видим, #0305 включает в себя сразу несколько идентификаторов. Все иденты кроме сентября вполне соответствуют обозначениям месяцев на немецком. Сентябрь же обозначается аббревиатурой «PU», не знаю почему.
Рассмотрим вариант с настройкой. В терминах программирования такие настройки соответствуют понятию «флаг», ну или для обывателей — «галочки» в настройках программ:
K OI11 OHNE_FA_SBR //Deaktivierung FAHRER SEATBELTREMINDER (bis PU03/04 im KOMBI ab PU03/04 im SGM! ab PU09/05 im ACSM)
Значения FA с типом K чаще всего пишутся в FA с префиксом «+», а с типом E и H с префиксом «-», хотя некоторые настройки пересекаются по типам. В чём принципиальная разница — не знаю, не разобрался. В примере у нас значение OI11 типа K (т. е. это соответствует +OI11 в FA), которое позволяет отключить напоминание непристёгнутого ремня для водителя. Для кодирования значение +OI11 из FA превращается в идентификатор OHNE_FA_SBR. Т. е. при наличии данной «галочки» в FA, некоторые параметры соответствующих блоков принимают такие значения, которые соответствуют отключенному предупреждению о непристёгнутом ремне. Благодаря E60AT.000, вы теперь знаете все возможные «галочки».
Далее основные опции:
W 6FL AUDIOPLAYER_USB //USB-/AUDIO- SCHNITTSTELLE
Ну тут всё понятно, $6FL в FA соответствует иденту AUDIOPLAYER_USB. В некоторых случаях на одно значение есть два разных набора идентов в зависимости от условий, например от временного критерия. Как пример, опция $609 (навигация Professional):
W 609 V0908 NAVIGATION CCC //NAVI-SYSTEM PROFESSIONAL OHNE TV (PA021/315ZWAKO 964)NICHT MIT 663
W 609 N0908 NAVIGATION CIC //
Vor (нем. «до») 09/2008 значению $609 соответствуют иденты NAVIGATION и CCC, а Nach («после») 09/2008 — NAVIGATION и CIC. Там же можно увидеть интересное:
W 6VA CIC //CIC Zusteuerung (03/08-09/08)(NK71 PU71 PV31 PV71 PW51 PX51 PX71 PX91 PY51)Alternativ zusteuerung CIC
Опция $6VA указывает на идент CIC. Так сказать, говорит о заказной установке CIC, действующей с 03/2008 по 09/2008, на перечисленных типах кузовов и двигателях (почему-то правда только E61 и только бензиновые европейки). Т. е. CIC ставился опционально с марта по сентябрь вместо CCC при запросе клиента. А позже CCC был заменён на CIC в качестве системы навигации по умолчанию, но по запросу клиента могли установить CCC (но с новым джойстиком iDrive). В таком случае за «принудительный» CCC отвечает опция $6VB. Кстати, на F-сериях опция $6VA также существует, но означает, что место NBT стоит CIC по запросу клиента (для машин с 07/2012).
Последний пример:
W NF33 E60 N52B30 UL LL US ALLRAD OIL_LEVEL_1 //Limousine 525xiUL //US LL 04/05 — 03/07 /160kW</b>
Тип кузова NF33 у нас сразу соответсвует куче идентов: E60 (это тоже идент!), N52B30 (модель двигателя), UL (хз что это (UPDATE: подсказали в комментариях, что это класс мощности авто), LL (левый руль), US (исполнение для США), ALLRAD (полный привод), OIL_LEVEL_1 (наверное означает наличие датчика уровня масла).
Теперь зная, какие иденты соответствуют значениям из FA, можно составить их полный список. Вручную это делать не надо, за вас это сделает NCS Expert, когда вы прочитаете FA из машины. Чтобы увидеть список, достаточно открыть файл ASW.TRC из папки WORK:
ASW.TRC
На основании именно этого списка идентов определяются значения параметров блоков при кодировании, а FA лишь источник для формирования этого списка.
Что нам делать с этим списком и вообще полученными знаниями? Пригодятся они нам для работы с программой NCS Dummy.
NCS Dummy
Саму программу можно добыть здесь. Там же и инструкция к ней, на английском, но я её не читал, но вы прочитайте всё-таки :))
К сожалению, настоящее имя автора неизвестно, только его ник — revtor. Единственное, что мне удалось найти о нём, это то, что живёт он в Антверпене (Бельгия) или пригороде, ему около 35 лет и он владеет BMW 850CSi (нашёл даже номер автомобиля) в отличном состоянии. И ещё удалось найти его фотографию за рулём:
revtor
Благодаря этому человеку энтузиасты по всему миру кодируют многочисленные BMW и, конечно же, зарабатывают на этом деньги. Поэтому скажите ему спасибо
Фильтрация списка модулей
NCS Dummy — весьма мощный инструмент, который позволяет наглядно работать с daten и TRC-файлами. С помощью этой программы, например, можно определить все необходимые блоки для кодирования определённой опции. Для этого в программе предусмотрен фильтр списка блоков по различным критерям, один из которых — поиск по иденту опции.
Например, установили вы зеркало с камерой FLA. В расшифровке автомобиля это — опция S5ACA Автоматический дальний свет. В FA это будет $5AC, именно это значение мы будем добавлять в FA при кодировании. Можно просто добавить эту опцию и закодировать автомобиль целиком (Process Car), т. е. все-все блоки в автомобиле будут закодированы в соответствии с текущим FA (или, вернее, списком идентов). Такой вариант на самом деле годится лишь для новичков, т. к. все параметры блоков, которые вы изменили по своему усмотрению, будут восстановлены к тем значениям, которые соответствуют FA. Т. е. при таком кодировании у вас «слетят» всяческие опции закрытия зеркал с ключа, поворотники в HUD и прочие нестандартные вещи.
Гораздо вернее кодировать только те блоки, в которых есть параметры, зависящие от данной опции и в определении списка зависимых модулей нам как раз и поможет NCS Dummy. После первого запуска необходимо указать пути к папке программы NCS Expert. После этого в первой вкладке у вас появятся на выбор доступные кузова:
Выбран E60
Во втором выпадающем списке у нас перечислены все кодировочные файлы для всех модулей. Теперь надо этот список отфильтровать, но для начала заглянем в E60AT.000 и поищем там идент опции 5AC. Нашли:
W 5AC FLA XENONLICHT //FERNLICHTASSISTENT (PU09/05), (Zwako zu SA430oderSA431 und SA522 PA623/072)
Опции 5AC соответствуют иденты FLA и XENONLICHT. Заодно понимаем, что 5AC без опции 522 (XENONLICHT) не бывает. Можно даже убрать $522 из FA, но идент XENONLICHT, как мы видим, никуда не денется.
Чтобы отфильтровать список модулей по конкретной опции, надо нажать кнопку «Filter» справа от списка модулей, перейти на вкладку «Order option» (фильтрация по опции), вписать в поле «FLA» и запустить фильтрацию. Спустя непродолжительное время список модулей будет отфильтрован:
NCS Dummy modules filter
Таким образом кодировать нам надо блок света LM, блок головного устройства (CIC, MASK, CCC в зависимости от того, что установлено) и собственно сам модуль FLA. В большинстве инструкций по дооснащению автоматическим дальним написано, что нужно ещё кодировать блок KOMBI (комбинация приборов), однако, как мы видим, в нём нет ни одного параметра, связанного с FLA и модуль отсутствует в списке.
Уже в самом списке параметров можно запустить поиск по тем же критериям и найти зависимые параметры. Здесь также стоит сделать некоторое замечание касательно такой фильтрации и поиска, но для начала расскажу про логические выражения.
Логические выражения (условия)
Каждое значение параметра зависит не только от одного идентификатора, но и от сочетаний этих идентификаторов, причём сочетания могут быть весьма сложные и иногда представляют собой строку вида:
!((ACEA_CO2+!IHKA_CI_0C, IHKA_CI_0C+ACEA_CO2+(E60, E61)+!LUFTKL)+!ALPINA+!S85B50)
Это — логическое выражение (или условие применения), где «, » символизирует логическое «ИЛИ», «+» означает логическое «И», а «!» означает логическое отрицание, а скобки работают примерно также, как в математике. Для программистов такие выражения в целом понятны. Если данное логическое выражение этого значения на основе заданного списка идентов соответсвует истине (т. е. условие выполняется), значение будет выбрано для кодирования. Если же нет, тогда будет выбрано то, у которого условия выполняются. В некоторых случаях параметры могут иметь сразу несколько значений и все они будут выбраны при выполнении условия в каждом из них.
Условия отображаются в графе Options при выборе значения какого-либо параметра:
NCS Dummy logic expressions
На скриншоте выбрано значение «aktiv» для параметра UMWAELZPUMPE модуля IHKA_E60 с индексом 0D (13-ый кодировочный индекс). Тут же рядом пояснение, что данный параметр отвечает за активацию управления дополнительной помпой по CAN-шине и значение «aktiv» будет выбрано при выполнении следующего условия:
(STANDHEIZUNG, NACHRUEST_SHZH)+(M47D20, M57D25, M57D30, N47D20)
STANDHEIZUNG — это опция 536 (подглядываем в E60AT.000) или вернее S536A Автономная система отопления. NACHRUEST_SHZH — это тоже самое, только указывает на персональную настройку +K536 (или возможно -K536, не знаю), обозначает модернизацию отопителя. Остальные иденты обозначают дизельные двигатели соответствующих моделей.
Логически данное выражение выглядит вот так:
(есть опция 536 ИЛИ настройка K536) и (есть любой из двигателей M47D20, M57D25, M57D30 и N47D20)
Т. е. управление помпой будет активно, если у вас дизельный двигатель из перечисленных и установлен автономный отопитель одним из способов. Я так понимаю, заводской вариант идёт как опция, а незаводской — как настройка. Значение же nicht_aktiv выбирается в противоположном случае:
!((STANDHEIZUNG, NACHRUEST_SHZH)+(M47D20, M57D25, M57D30, N47D20))
Выражение обёрнуто в скобки и перед ними стоит знак отрицания, т. е. значение nicht_aktiv будет выбрано в том случае, если выражение внутри скобок ложно по какой-либо причине.
Если же значение параметра вообще не имеет логического выражения, то оно никогда не будет задано при кодировании в заводском режиме. Во многих сериях кузовов применяются одни и те же модули, но в кодировочных файлах для них указаны другие условия, поэтому у того же значения, но с другим кузовом, условие применения может и существовать. Либо в остальных случаях такое значение вообще никогда не задаётся ни при каких условиях и задать его можно только принудительно, кодируя вручную.
Возвращаясь к фильтрации списка модулей или поиска параметров, хочу отметить то, что система не совсем совершенна, ввиду того, что работает как простой поиск подстроки в строке условия и в одном из четырёх режимов: просто как часть строки, в начале строки, в конце или точное соответствие. Т. е. в поле поиска можно писать не только идент опции, но и целое логическое выражение, а можно вообще хоть пару символов из идента. Это удобно, но не хватает режима поиска «как целое слово», чтобы в результаты поиска не попадали иденты, которые хоть и содержат указанную строку, но отношения к теме не имеют. Например, когда мы фильтруем список модулей по строке «FLA», в результатах фильтрации есть сам модуль FLA, который по идее туда не должен попадать, но попал ровно потому что парочка значений в параметрах зависят от идентов типа FLA_CI_05. Т. е. мы искали всё, что завязано на идент «FLA», но попутно ещё нашли и FLA_CI_05 из-за того, что «FLA» — часть этой строки. Сам по себе модуль не может содержать параметры, которые зависят от самого наличия этого модуля, т. к. это абсурд
Update: В версии 0.6.0.5 добавлен режим «Exact word», т. е. поиск по целому слово. Прекрасно.
Специальные иденты и тонкости кодировочных индексов
Кстати, об идентах типа «XXX_CI_XX» (CI = Codierung Index, кодировочный индекс). Такие вы не найдёте в E60AT.000, т. к. это иденты, обозначающие зависимость от кодировочного индекса конкретного модуля.
Например, возьмём параметр STREETLAMP_COUNT (количество уличных источников света, при котором отключается дальний свет) модуля FLA. Он имеет два значения: wert_01 и wert_02. Однако в завимости от кодировочного индекса, этим значениям соответствуют разные данные, т. е. при одном и том же значении в блок будет записано разное количество источников света.
Всего для модуля FLA у нас три кодировочных индекса: 03, 04 и 05, соответственно FLA_E65.C03, FLA_E65.C04, FLA_E65.C05. Интересная особенность индекса 04 в том, что параметр STREETLAMP_COUNT в нём в принципе отсутствует. Однако не означает, что такого параметра нет. На самом деле он есть, но равен нулю всегда, т. е. хотя бы один источник света автоматом отключает дальний свет. Это интересный случай, обычно в таком случае оставляют параметр с единственно возможным значением, но, видимо это не тот случай.
Итак, в индексе 03 для wert_01 у нас указано 24 источника света, а для wert_02 — 0:
FLA_E65.C03 STREETLAMP_COUNT
04 индекс у нас на деле жёстко задаёт 0 без возможности смены (не спрашивайте, откуда я это знаю, сейчас не про это :), а в 05 индексе wert_01 у нас означает 24 источника света, а wert_02 аж 64:
FLA_E65.C05 STREETLAMP_COUNT
Количество источников понятно, но нам интересны условия для данных параметров. Так, для wert_01 логическое выражение такое:
!(!FLA_CI_05, FLA_CI_05+US)
А для wert_02 оно же, но без общего отрицания:
!FLA_CI_05, FLA_CI_05+US
Т. е. значение wert_02 будет выставлено либо если индекс модуля FLA не равен 05, либо он равен 05 и машина американка. В противном случае будет выбран wert_01.
Нетрудно догадаться, что основная разница в достаточном количестве источников света между европейкой и американкой будет только при кодировочном индексе 05. Европейке достанется значение wert_01 (24 источника света), а американке — wert_02 с 64-мя «лампочками». Не очень понятными остаются такие условия в индексе 03, т. к. в любом случае там будет задано wert_02. Скорее всего, если найти какой-нибудь старый архив SP-Daten, где вообще нет индексов 04 и 05, условия для параметров будут другими, но, пожалуй, выяснение этого момента я оставлю на плечах читателей
Пытаться разобрать истинность длинных логических выражений, думаю, не стоит, за вас это будет делать NCS Expert в режиме заводского кодирования. Он будет опираться на список идентов, полученных из FA и кодировочных индексов и сам подберёт нужные значения. Можно управлять установкой параметров, меняя сам FA (даже не обязательно его сохранять в блоки).
Теперь вы лучше понимаете, что такое FA, как он формируется, как на его основе составляется список идентов, как эти иденты используются при определении значений параметров, а так же что такие кодировочные индексы и как всё это дело связано друг с другом.
В следующей части мы поговорим о том, что из себя представляет конфигурация для блока управления, что такое NETTODAT и как его можно применить, а также о добавлении дополнительного варианта значения к параметрам с помощью NCS Dummy. В заключении практическое применение полученных знаний на примере изменения интервала замены масла.
Часть вторая
Во время поисков решения проблемы с парктроником обнаружил, что в ЭБУ и FA указана неверная информация о АКБ. Забегая вперед скажу что на PDC последующие действия никак не повлияли, но тем не менее лишней процедура не будет.
Если кто не знает АКБ скрыта под боковой панелью (в некоторых моделях под центральной)
Обо всем по порядку: программная часть BMW «признает» (другие варианты система просто не даст закодировать) два типа АКБ — AGM и обычный кислотный, причем ёмкость можно указать из ряда ограниченных значений. Для изменения типа/ёмкости АКБ и её регистрации нам понадобится диагностический кабель и две программы из набора BMW Standard Tools, а именно NCS Expert и Ediabas Toolset 32 (или просто tool32).
Фактически ёмкость 74ah, в блоках записана 55
С помощью NCS открываем блок FA, где содержатся данные о комплектации и опциях авто, там есть информация о батарее, указанная в виде значения ХYYY, где Х=тип АКБ (A для AGM / B для кислотной) и Y=ёмкость (для AGM это 040, 060, 070, 080, 090ah / для кислотной 046, 055, 070, 080, 090, 110ah соответственно).
Открываем блок FA
В моём случае в конце списка опций я обнаружил значение B055, что соответствует кислотной батарее ёмкостью 55ah, но фактически в машине стояла АКБ 74ah, поэтому удаляем строчку из списка и добавляем новую — B070.
В FA можно найти много полезной информации, а также добавить опции и снять некоторые ограничения
После изменения параметра выполняем команду FA_WRITE для блоков CAS и NFRM. Теперь даже при сбросе кодирования машина пропишет в блоках, содержащих FA, верную ёмкость.
Записываем FA в CAS и NFRM, далее считываем сам блок CAS
Далее продолжим работу с блоком CAS. С помощью всё того же NCS считываем данные блока командой CODIERDATEN LESSEN.
Основные команды для кодирования
Расшифровка экрана NCS
В папке WORK появляется файл FSW_PSW.TRC, открываем его блокнотом и в параметре KLASSE_BATTERIE исправляем ёмкость на ту, которую мы вписали в FA, но здесь данные имеют иной формат (с теми же ограничениями значений), для кислотных АКБ ХХah, для AGM — XXah_agm, сохраняем файл как FSW_PSW.MAN в папку WORK и записываем в блок командой SG_CODIEREN.
Исправленный параметр
Дело за малым — осталось произвести регистрацию замены, для этого используем tool32 (обращаю внимание что для корректной работы обеих программ необходимо обновить базу данных для вашего кузова c помощью SP Daten, для е90/1/2/3 нужна база е89). Открывем файл msd80.prg в папке ECU (делать это необходимо с включенным зажиганием, иначе список работ будет пустым) и в конце находим steuern_batterietausch_registrie, выбираем этот пункт и сверху в списке job выбираем выполнить.
Файл находится в папке ECU
Нужное задание находится в конце списка
Если в окне появилось job status = okay, то все прошло успешно.
Все получилось
Большую части информации нашел на бмвклабе, за неё огромное спасибо пользователю Rise.
На этом все, удачи на дорогах.
-
Список форумов
По жизни с BMW
Диагностика, Кодирование BMW
№1 15 03 2013, 13:06
Копирование моих публикаций разрешено только для личного не коммерческого пользования. Кодирование в программе NCS список ошибок http://narod.ru/disk/60787908001.6f6d0d … S.txt.html структура и порядок нажатия клавиш Некоторых кузовов нет в NCS выбирайте кузов по таблице NCS Expert программа для кодирования опций и комплектаций Настройка перед работой http://narod.ru/disk/60607226001.742a15 … s.zip.html NCS готов к работе
Каждый день я посвящаю великому священному флуду и кибер унижениям |
№2 15 03 2013, 13:07 Кодирование памяти ключа и авто Запускаем NCS, нажимаем в главном меню File и в выпавшем меню Load Profil в открывшемся окне доступны профили: Нажимаем F1 потом F3 в открывшемся окне выбираем кузов и нажимаем ОК в открывшемся окне выбираем от куда будем считывать FA или центральный шифр шифр считался нажимаем F6 Zuruck (назад) В открывшемся окне : Некоторые функции можно закодировать только на один ключ или на все открывается новое окно в котором отображены ключи параметры и значения, нажимаем F1(считать) выбираем щелкнув нужное значение мышкой
нажимаем F2(применить) чтоб убрать выбор F3 кодируем F4(передать) кодирование закончено выходим из этого окна нажав F6
Каждый день я посвящаю великому священному флуду и кибер унижениям |
№3 15 03 2013, 13:19
Копирование моих публикаций разрешено только для личного не коммерческого пользования. Кодирование в универсальном профиле Запускаем, нажимаем в главном меню File и в выпавшем меню Load Profil MANUAL-универсальный профиль в нем доступно кодирование всего авто, каждого блока отдельно, ключа и авто, смена FA или центрального шифра Выбираем профиль manual в котором доступно любое кодирование Нажимаем F1 потом F3 в открывшемся окне выбираем кузов и нажимаем ОК в открывшемся окне выбираем от куда будем считывать FA или центральный шифр шифр считался нажимаем F6 Zuruck (назад) В открывшемся окне доступны переходы к нескольким вариантам кодирования: Кодирование функций каждого блока по отдельности через F4(выбор блока) нажимаем F4(считать) считываются данные с выбранного блока в файл C:NCSEXPERWORKFSW_PSW.TRC это окно просто закрыть Открываем файл FSW_PSW.TRC в папке C:NCSEXPERWORK изменяем в нем нужные значения например чтоб горел постоянно дальний в пол накала и сохранить в папку C:NCSEXPERWORK как FSW_PSW.MAN c заменой уже существующего нажимаем F3 начинается кодирование Можно не править файл в ручную а использовать программку NCS Dummy http://narod.ru/disk/60714087001.933004 … y.zip.html в ней удобней менять значения параметров и она показывает возможные значения после того как вы ввели данные в 1-3 открывается вкладка в которой можно править значения параметров, и экспортировать готовый файл FSW_PSW.MAN в папку Work кнопкой
Каждый день я посвящаю великому священному флуду и кибер унижениям |
№4 15 03 2013, 13:19 Кодирование через NETTODAT Параметры в FSW_PSW.TRC являются интерпритатором кодов в NETTODAT.TRC и предоставляет ограниченные NCS возможности изменения параметров. Кодирование через NETTODAT предоставляет больше возможностей угробления блоков
Каждый день я посвящаю великому священному флуду и кибер унижениям |
№5 15 03 2013, 13:20 Кодирование через FA(задание на автомобиль) Добавление и удаление опций в FA только для Машин после 09.2001г производства кроме Е53 Е39 у них только цш http://narod.ru/disk/60758769001.8456dc … A.zip.html Запускаем NCS в открывшемся окне выбираем от куда будем считывать FA нажимаем ОК FA считался нажимаем F2 выбираем кузов В окне ввода VIN нажимаем ОК Появляется окно ввода опций. Нажимаем F4 выбираем ЭБУ блока света в который записываем FA
Нажимаем F2 Смена операции. Выбираем FA_WRITE(записать FA) нажимаем ОК Нажимаем F3 запись FA в ЭБУ.
Нажимаем F1 выбираем блок приборки АКМВ и повторяем операцию записи FA для ЭБУ приборки . Коды в FA нужны кодировочной программе а не машине и после того как вы добавили или удалили какой то код, NCS изменит нужные значения параметров если вы закодируете всю машину. Кодировать по FA можно и не всю машину а любой блок по отдельности, например чтоб привести параметры блока к заводским значениям.
Каждый день я посвящаю великому священному флуду и кибер унижениям |
№6 15 03 2013, 13:20 В этом повествовании я расскажу как изменить центральный шифр в дорестаиле Запускаем NCS нажимаем F1 F3 выбираем кузов Е46 и считываем код из блока KMB или EWS теперь берем программу ZEKO и распаковываем ее в корень диска С http://narod.ru/disk/61801537001.c0bf57 … o.rar.html запускаем Нажимаем F8 для переключения в поле 2 переключаемся F8 в поле 1
например если 168 то пишем 0168 и видим как внизу в поле 2 код SA изменился на 03003A4010281404 вот он пересчитанный код с добавленной опцией 168 Запускаем NCS выбираем профиль нажимаем F1 F3 выбираем кузов Е46 и блок EWS или KMB из которого считываем данные шифр и вин считались нажимаем F1 выбираем кузов E46 VIN не меняем нажимаем ОК удаляем последние символы в полях GM и VN
Каждый день я посвящаю великому священному флуду и кибер унижениям |
№7 15 03 2013, 13:38 е
Каждый день я посвящаю великому священному флуду и кибер унижениям |
|
Рекомендуем почитать на тему Кодирование в NCS
|
№8 15 03 2013, 13:38
Утилита BMW Coding Tool v250 помогает при кодировании в NCS С ее помощью очень легко обновить NCS и WINkfp из папок SP-Daten Очень удобно, что окно можно сделать большим : BMW Coding Tool v250.zip
Каждый день я посвящаю великому священному флуду и кибер унижениям |
№13 16 03 2013, 04:46 ncs на 7 64битной не работает, что сделать можно?
Счастье не в деньгах, но грустить лучше в BMW, чем в маршрутке.
|
№14 16 03 2013, 13:21 Pro.no0b Есть два варианта
Каждый день я посвящаю великому священному флуду и кибер унижениям
|
№17 16 03 2013, 16:28 Ferrum
Счастье не в деньгах, но грустить лучше в BMW, чем в маршрутке.
|
|
Рекомендуем почитать на тему Кодирование в NCS
|
№20 27 03 2013, 03:12
Всем привет! Вопрос следующий: решил закодировать дальний в пол накала, по логике вещей править нужно параметры в блоке света! Считал данные, открыл блокнотом, но параметров Кузов 39
BMW E46 M43B19 седан 1998г
|
№21 28 03 2013, 13:54 кто может подсказать? вообщем слетела приборка бмв Е46 рестайл, отказали датчик температуры ДВС и топлива, прогнал приборку через NCS, датчик температуры ДВС заработал а топлива ни как не хочет(((. При диагностике приборки (ИНПА) в идентификации отсутствует part номер, как его восстановить?????
|
№22 28 03 2013, 18:24
Привет… Подскажите кто знает.
|
№23 28 03 2013, 20:06 считывашь приборку (AKBM), считаные файлы FSW_PSW.TRC копируешь в FSW_PSW.МАN, потом там корректируешь данные пример: MOTOR_ART 22000_км меняем на 11000_км, сохраняем и кодируем приборку и усе) все кодирование в NCS Expert
|
№24 29 03 2013, 10:27 Спасибо большое за разъяснение. т.е. не важно на какой пробег изменять «(22000_км меняем на 11000_км, сохраняем и кодируем приборку и усе)», в моем случае можно изменить на 12000 км. А для чего тогда столько разговоров в сети о добавлении в FA опцию S988A? если можно править файл и все… Очень интересно все это.
|
№25 30 03 2013, 20:32
|
-
Список форумов
По жизни с BMW
Диагностика, Кодирование BMW
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Сначала я хотел написать пост про то, как изменить межсервисный интервал по замене масла. Однако вышло немного непонятно и получилось как у всех, одна только практика без теории. Поэтому я решил написать обширную теоретическую часть по кодированию, прочитав которую, вы научитесь хорошо понимать, что и с чем едят и менять всё что угодно и как угодно в своей машине, не прибегая к поискам инструкций. Думал это всё разместить в блоге, но практическая часть всё равно будет и относится она непосредственно к Южанке, поэтому всё-таки будет здесь, в БЖ.
Большинство инструкций по кодированию BMW, как правило, содержат в себе минимум информации, без каких-либо подробностей, вида «измените значение параметра «X» на «aktiv» или «wert_xx», и что-то будет работать по-другому». Этого в большинстве случаев достаточно, эффект достигнут и голова не болит. Однако любознательным товарищам иногда хочется понимать, что за что отвечает и как оно вообще устроено. Ниже пойдёт самая мякотка, но если вас кодирование в принципе не интересует, можно на этом закончить чтение. Поехали!
* * *
Предположим, что вы уже знаете, что такое NCS Expert, пакет программ BMW Standard Tools и файлы данных SP-Daten и всё это установили. И даже научились кодировать всякую ерунду типа поворотников на HUD, редактируя файл FSW_PSW.MAN. Хотя и не очень-то даже понимаете, как вообще это всё дело работает.
Начнём с тех самых SP-Daten файлов. Как правило это увесистый архив, в котором есть несколько папок:
cfgdat — файлы конфигурации для NCS Expert, содержит также расшифровки кодов ошибок при кодировании;
data — самая «толстая» папка, в ней лежат прошивки для ЭБУ;
daten — кодировочные файлы и файлы с описанием комплектаций, опций и т. д. Об этих файлах мы и поговорим чуть ниже;
ecu & sgdat — папки с библиотеками для работы с блоками управления. Что-то вроде так называемых интерфейсов, описывающих функции блоков;
Оставшиеся папки содержат в себе информацию о применимости прошивок, их связей друг с другом, данные о формате БД, контрольные суммы и т. д. Тоже интересно, но не в этой теме.
Кодировочные файлы
Больше всего нам интересна папка daten. В ней содержатся файлы с расширениями вида .Cxx, где xx — произвольный шестнадцатиричный номер, обозначающий порядковый номер этого файла (или вернее «кодировочный индекс»). На один и тот же ЭБУ может существовать несколько таких файлов (т. е. кодировочных индексов), каждый из которых привязан к версии прошивки в этом блоке. С течением времени в прошивки добавляли новые или изменяли старые функции, а вместе с ними добавлялись/изменялись параметры для них. При таких изменениях заводился новый кодировочный файл, со следующим по порядку индексом. Но не всякая новая прошивка содержит новый же кодировочный индекс, зачастую в прошивке просто исправляют ошибки и ничего более. Например, блок LM2 у E60 имеет аж 53 кодировочных индекса (последний — 35h), правда не все доступны в daten-файлах, а совсем старые уже удалены.
Daten-файлы
При установке с помощью запуска скрипта LADEN.BAT все файлы копируются в папку NCS Expert и после этого мы можем их использовать. Это понятно, но кое-что в этих файлах есть весьма интересное — файлы с расширениями 000, ZUS и M00. Как оказалось, это обычные текстовые файлы и в них есть любопытная информация. Т. к. рассматриваем мы кузов E60 (и соответсвенно E61, E63 и E64), то самый интересный файл — E60AT.000. Его можно открыть в текстовом редакторе и внимательно изучить, но сначала поговорим о кодировании.
VehicleOrder
Наверняка вы знакомы с понятием VO (Vehicle Order) или FA (Fahrzeugauftrag). Это шифр, описывающий комплектацию и другие параметры автомобиля. Этот шифр хранится в нескольких блоках автомобиля, в E60 его хранят блоки CAS и LMA. Возможно вы даже изменяли его при кодировании, обычно это делается при дооснащениями каким-либо опциями. В некоторых инструкциях весь шифр называют VO, а отдельный элемент — FA. Это неправильно, т. к. VO и FA это суть одно и то же.
Типичный шифр комплектации автомобиля выглядит вот так (это актуальный на момент публикации FA Южанки):
E63_#0908&LED5%0300*EA51$1CA$212$217$229$237$248$255$2PA$2SF$2TB$302$319$322$323$346$356$428$430$431$441$442$459$464$481$494$4BW$502$508$522$524$534$548$563$5AC$5DF$609$610$614$615$616$620$644$672$6FL$6NF$6UD$701$752$7SP$818$850$863$877$880$984$9AA-B090-NMUW
Когда вы подключаетесь к машине и считываете в NCS Expert FA из машины, он сохраняется в файл fa.trc в папке WORK. Он точно описывает текущую комплектацию автомобиля и некоторые специальные параметры, заданные конкретно для этого автомобиля. Можно разложить этот шифр по полочкам:
E63_ — кузов;
#0908 — так называемый временной критерий. Это параметр, который отражает технический уровень автомобиля. По ходу жизни автомобиля на конвеере, в его конструкцию вносятся изменения, добавляют новые возможности или модернизируются старые. В среднем новый временной критерий выходит раз в полгода, а в первые года выпусков и того чаще. В данном случае мой критерий — сентябрь 2008. На самом деле оригинальный заводской был старше,#0907, но он был изменён после установки CIC для корректности работы диагностических программ. По этому критерию программы для работы с авто определяют, какие блоки в машине соответствуют определённым опциям. Если временной критерий неверный, то программы, например, могут неверно отображать список блоков в авто;
&LED5 — цвет и материал обивки. В данном случае Leder D5, он же Saddle Brown;
%0300 — код краски (300, Alpinweiss 3);
*EA51 — Код кузова, двигателя и региона. Как правило, содержится в VIN-номере после первых трёх букв (WBA для немецких или X4X для калининградских авто);
$xxx — коды опций, идущие подряд. В расшифровке автомобиля вы можете увидеть те же коды, только в формате SxxxA;
-xxx (или +xxx) — Персональная настройка. Что-то вроде «галочек» в настройках программ;
Ну вроде всё просто? Вполне. Внимательные могут заметить в начале каждого значения специальный символ, который обозначает тип значения (# для временного критерия, & для обивки, % для краски и т. д.). Теоретически порядок следования этих значений при таких префиксах вообще неважен.
Идентификаторы опций
Вернёмся к нашему E60AT.000.
E60AT.000
Он весьма объёмный, но в нём есть очень полезная информация с комментариями (они написаны после двух слешей «//», программисты сразу поймут), правда на немецком. Не все опции, вписанные в FA, влияют на кодировку автомобиля. Поэтому для опций, которые влияют, заведены отдельные идентификаторы или набор идентификаторов, которые используются в работе при кодировании. В файле E60AT.000 как раз и приведены соответствия идентификатора или группы идентификаторов какой-либо опции из FA.
Общий формат такой:
X YYYY WWWW ZZZZZ //комментарий
Где X обозначает тип значения в FA, YYYY — собственно само значение из FA (без спец. символа),WWWW — условие, при котором данное соответствие актуально (в большинстве случаев никаких условий нет), ZZZZ — идентификатор для кодирования, иногда их сразу несколько.
Типы значений FA:
A — временной критерий (#xxxx);
Z — актуальный временной критерий (также #xxxx);
W — основные опции ($xxx) или тип кузова/двигателя/региона (*xxxx);
E, H, K — настройка основных опций (-xxx, +xxx);
Примеры:
A #0903 PU03 //PU 09/03
Здесь мы видим, что #0903 в FA соответствуюет идентификатору (отсюда и далее будет «идент» для простоты написания) PU03. При кодировании наличие этого идента позволяет правильно закодировать автомобиль с учётом установленного оборудования (если машина реально соответствует временному критерию «сентябрь 2003»).
A #0305 PU03 DEZ03 MAERZ04 APRIL04 JUNI04 PU04 MAERZ05 //MAERZ PU 03/05 (LM_AHL)
Тут как мы видим, #0305 включает в себя сразу несколько идентификаторов. Все иденты кроме сентября вполне соответствуют обозначениям месяцев на немецком. Сентябрь же обозначается аббревиатурой «PU», не знаю почему.
Рассмотрим вариант с настройкой. В терминах программирования такие настройки соответствуют понятию «флаг», ну или для обывателей — «галочки» в настройках программ:
K OI11 OHNE_FA_SBR //Deaktivierung FAHRER SEATBELTREMINDER (bis PU03/04 im KOMBI ab PU03/04 im SGM! ab PU09/05 im ACSM)
Значения FA с типом K чаще всего пишутся в FA с префиксом «+», а с типом E и H с префиксом «-», хотя некоторые настройки пересекаются по типам. В чём принципиальная разница — не знаю, не разобрался. В примере у нас значение OI11 типа K (т. е. это соответствует +OI11 в FA), которое позволяет отключить напоминание непристёгнутого ремня для водителя. Для кодирования значение +OI11 из FA превращается в идентификатор OHNE_FA_SBR. Т. е. при наличии данной «галочки» в FA, некоторые параметры соответствующих блоков принимают такие значения, которые соответствуют отключенному предупреждению о непристёгнутом ремне. БлагодаряE60AT.000, вы теперь знаете все возможные «галочки».
Далее основные опции:
W 6FL AUDIOPLAYER_USB //USB-/AUDIO- SCHNITTSTELLE
Ну тут всё понятно, $6FL в FA соответствует иденту AUDIOPLAYER_USB. В некоторых случаях на одно значение есть два разных набора идентов в зависимости от условий, например от временного критерия. Как пример, опция $609 (навигация Professional):
W 609 V0908 NAVIGATION CCC //NAVI-SYSTEM PROFESSIONAL OHNE TV (PA021/315ZWAKO 964)NICHT MIT 663
W 609 N0908 NAVIGATION CIC //
Vor (нем. «до») 09/2008 значению $609 соответствуют иденты NAVIGATION и CCC, а Nach(«после») 09/2008 — NAVIGATION и CIC. Там же можно увидеть интересное:
W 6VA CIC //CIC Zusteuerung (03/08-09/08)(NK71 PU71 PV31 PV71 PW51 PX51 PX71 PX91 PY51)Alternativ zusteuerung CIC
Опция $6VA указывает на идент CIC. Так сказать, говорит о заказной установке CIC, действующей с 03/2008 по 09/2008, на перечисленных типах кузовов и двигателях (почему-то правда только E61 и только бензиновые европейки). Т. е. CIC ставился опционально с марта по сентябрь вместо CCC при запросе клиента. А позже CCC был заменён на CIC в качестве системы навигации по умолчанию, но по запросу клиента могли установить CCC (но с новым джойстиком iDrive). В таком случае за «принудительный» CCC отвечает опция $6VB. Кстати, на F-сериях опция $6VA также существует, но означает, что место NBT стоит CIC по запросу клиента (для машин с 07/2012).
Последний пример:
W NF33 E60 N52B30 UL LL US ALLRAD OIL_LEVEL_1 //Limousine 525xiUL //US LL 04/05 — 03/07 /160kW</b>
Тип кузова NF33 у нас сразу соответсвует куче идентов: E60 (это тоже идент!), N52B30(модель двигателя), UL (хз что это (UPDATE: подсказали в комментариях, что это класс мощности авто), LL (левый руль), US (исполнение для США), ALLRAD (полный привод),OIL_LEVEL_1 (наверное означает наличие датчика уровня масла).
Теперь зная, какие иденты соответствуют значениям из FA, можно составить их полный список. Вручную это делать не надо, за вас это сделает NCS Expert, когда вы прочитаете FA из машины. Чтобы увидеть список, достаточно открыть файл ASW.TRC из папки WORK:
ASW.TRC
На основании именно этого списка идентов определяются значения параметров блоков при кодировании, а FA лишь источник для формирования этого списка.
Что нам делать с этим списком и вообще полученными знаниями? Пригодятся они нам для работы с программой NCS Dummy.
NCS Dummy
Саму программу можно скачать. Там же и инструкция к ней, на английском, но я её не читал, но вы прочитайте всё-таки )
К сожалению, настоящее имя автора неизвестно, только его ник — revtor. Единственное, что мне удалось найти о нём, это то, что живёт он в Антверпене (Бельгия) или пригороде, ему около 35 лет и он владеет BMW 850CSi (нашёл даже номер автомобиля) в отличном состоянии. И ещё удалось найти его фотографию за рулём:
revtor
Благодаря этому человеку энтузиасты по всему миру кодируют многочисленные BMW и, конечно же, зарабатывают на этом деньги. Поэтому скажите ему спасибо
Фильтрация списка модулей
NCS Dummy — весьма мощный инструмент, который позволяет наглядно работать с daten и TRC-файлами. С помощью этой программы, например, можно определить все необходимые блоки для кодирования определённой опции. Для этого в программе предусмотрен фильтр списка блоков по различным критерям, один из которых — поиск по иденту опции.
Например, установили вы зеркало с камерой FLA. В расшифровке автомобиля это — опцияS5ACA Автоматический дальний свет. В FA это будет $5AC, именно это значение мы будем добавлять в FA при кодировании. Можно просто добавить эту опцию и закодировать автомобиль целиком (Process Car), т. е. все-все блоки в автомобиле будут закодированы в соответствии с текущим FA (или, вернее, списком идентов). Такой вариант на самом деле годится лишь для новичков, т. к. все параметры блоков, которые вы изменили по своему усмотрению, будут восстановлены к тем значениям, которые соответствуют FA. Т. е. при таком кодировании у вас «слетят» всяческие опции закрытия зеркал с ключа, поворотники в HUD и прочие нестандартные вещи.
Гораздо вернее кодировать только те блоки, в которых есть параметры, зависящие от данной опции и в определении списка зависимых модулей нам как раз и поможет NCS Dummy. После первого запуска необходимо указать пути к папке программы NCS Expert. После этого в первой вкладке у вас появятся на выбор доступные кузова:
Выбран E60
Во втором выпадающем списке у нас перечислены все кодировочные файлы для всех модулей. Теперь надо этот список отфильтровать, но для начала заглянем в E60AT.000 и поищем там идент опции 5AC. Нашли:
W 5AC FLA XENONLICHT //FERNLICHTASSISTENT (PU09/05), (Zwako zu SA430oderSA431 und SA522 PA623/072)
Опции 5AC соответствуют иденты FLA и XENONLICHT. Заодно понимаем, что 5AC без опции 522(XENONLICHT) не бывает. Можно даже убрать $522 из FA, но идент XENONLICHT, как мы видим, никуда не денется.
Чтобы отфильтровать список модулей по конкретной опции, надо нажать кнопку «Filter» справа от списка модулей, перейти на вкладку «Order option» (фильтрация по опции), вписать в поле «FLA» и запустить фильтрацию. Спустя непродолжительное время список модулей будет отфильтрован:
NCS Dummy modules filter
Таким образом кодировать нам надо блок света LM, блок головного устройства (CIC, MASK, CCC в зависимости от того, что установлено) и собственно сам модуль FLA. В большинстве инструкций по дооснащению автоматическим дальним написано, что нужно ещё кодировать блок KOMBI (комбинация приборов), однако, как мы видим, в нём нет ни одного параметра, связанного с FLA и модуль отсутствует в списке.
Уже в самом списке параметров можно запустить поиск по тем же критериям и найти зависимые параметры. Здесь также стоит сделать некоторое замечание касательно такой фильтрации и поиска, но для начала расскажу про логические выражения.
Логические выражения (условия)
Каждое значение параметра зависит не только от одного идентификатора, но и от сочетаний этих идентификаторов, причём сочетания могут быть весьма сложные и иногда представляют собой строку вида:
!((ACEA_CO2+!IHKA_CI_0C, IHKA_CI_0C+ACEA_CO2+(E60,E61)+!LUFTKL)+!ALPINA+!S85B50)
Это — логическое выражение (или условие применения), где «, » символизирует логическое «ИЛИ», «+» означает логическое «И», а «!» означает логическое отрицание, а скобки работают примерно также, как в математике. Для программистов такие выражения в целом понятны. Если данное логическое выражение этого значения на основе заданного списка идентов соответсвует истине (т. е. условие выполняется), значение будет выбрано для кодирования. Если же нет, тогда будет выбрано то, у которого условия выполняются. В некоторых случаях параметры могут иметь сразу несколько значений и все они будут выбраны при выполнении условия в каждом из них.
Условия отображаются в графе Options при выборе значения какого-либо параметра:
NCS Dummy logic expressions
На скриншоте выбрано значение «aktiv» для параметра UMWAELZPUMPE модуля IHKA_E60 с индексом 0D (13-ый кодировочный индекс). Тут же рядом пояснение, что данный параметр отвечает за активацию управления дополнительной помпой по CAN-шине и значение «aktiv» будет выбрано при выполнении следующего условия:
(STANDHEIZUNG, NACHRUEST_SHZH)+(M47D20,M57D25,M57D30,N47D20)
STANDHEIZUNG — это опция 536 (подглядываем в E60AT.000) или вернее S536A Автономная система отопления. NACHRUEST_SHZH — это тоже самое, только указывает на персональную настройку +K536 (или возможно -K536, не знаю), обозначает модернизацию отопителя. Остальные иденты обозначают дизельные двигатели соответствующих моделей.
Логически данное выражение выглядит вот так:
(есть опция 536 ИЛИ настройка K536) и (есть любой из двигателей M47D20, M57D25, M57D30 и N47D20)
Т. е. управление помпой будет активно, если у вас дизельный двигатель из перечисленных и установлен автономный отопитель одним из способов. Я так понимаю, заводской вариант идёт как опция, а незаводской — как настройка. Значение же nicht_aktiv выбирается в противоположном случае:
!((STANDHEIZUNG, NACHRUEST_SHZH)+(M47D20,M57D25,M57D30,N47D20))
Выражение обёрнуто в скобки и перед ними стоит знак отрицания, т. е. значение nicht_aktiv будет выбрано в том случае, если выражение внутри скобок ложно по какой-либо причине.
Если же значение параметра вообще не имеет логического выражения, то оно никогда не будет задано при кодировании в заводском режиме. Во многих сериях кузовов применяются одни и те же модули, но в кодировочных файлах для них указаны другие условия, поэтому у того же значения, но с другим кузовом, условие применения может и существовать. Либо в остальных случаях такое значение вообще никогда не задаётся ни при каких условиях и задать его можно только принудительно, кодируя вручную.
Возвращаясь к фильтрации списка модулей или поиска параметров, хочу отметить то, что система не совсем совершенна, ввиду того, что работает как простой поиск подстроки в строке условия и в одном из четырёх режимов: просто как часть строки, в начале строки, в конце или точное соответствие. Т. е. в поле поиска можно писать не только идент опции, но и целое логическое выражение, а можно вообще хоть пару символов из идента. Это удобно, но не хватает режима поиска «как целое слово», чтобы в результаты поиска не попадали иденты, которые хоть и содержат указанную строку, но отношения к теме не имеют. Например, когда мы фильтруем список модулей по строке «FLA», в результатах фильтрации есть сам модуль FLA, который по идее туда не должен попадать, но попал ровно потому что парочка значений в параметрах зависят от идентов типа FLA_CI_05. Т. е. мы искали всё, что завязано на идент «FLA», но попутно ещё нашли и FLA_CI_05 из-за того, что «FLA» — часть этой строки. Сам по себе модуль не может содержать параметры, которые зависят от самого наличия этого модуля, т. к. это абсурд
Update: В версии 0.6.0.5 добавлен режим «Exact word», т. е. поиск по целому слово. Прекрасно.
Специальные иденты и тонкости кодировочных индексов
Кстати, об идентах типа «XXX_CI_XX» (CI = Codierung Index, кодировочный индекс). Такие вы не найдёте в E60AT.000, т. к. это иденты, обозначающие зависимость от кодировочного индекса конкретного модуля.
Например, возьмём параметр STREETLAMP_COUNT (количество уличных источников света, при котором отключается дальний свет) модуля FLA. Он имеет два значения: wert_01 и wert_02. Однако в завимости от кодировочного индекса, этим значениям соответствуют разные данные, т. е. при одном и том же значении в блок будет записано разное количество источников света.
Всего для модуля FLA у нас три кодировочных индекса: 03, 04 и 05, соответственно FLA_E65.C03,FLA_E65.C04, FLA_E65.C05. Интересная особенность индекса 04 в том, что параметрSTREETLAMP_COUNT в нём в принципе отсутствует. Однако не означает, что такого параметра нет. На самом деле он есть, но равен нулю всегда, т. е. хотя бы один источник света автоматом отключает дальний свет. Это интересный случай, обычно в таком случае оставляют параметр с единственно возможным значением, но, видимо это не тот случай.
Итак, в индексе 03 для wert_01 у нас указано 24 источника света, а для wert_02 — 0:
FLA_E65.C03 STREETLAMP_COUNT
04 индекс у нас на деле жёстко задаёт 0 без возможности смены (не спрашивайте, откуда я это знаю, сейчас не про это , а в 05 индексе wert_01 у нас означает 24 источника света, а wert_02 аж 64:
FLA_E65.C05 STREETLAMP_COUNT
Количество источников понятно, но нам интересны условия для данных параметров. Так, дляwert_01 логическое выражение такое:
!(!FLA_CI_05,FLA_CI_05+US)
А для wert_02 оно же, но без общего отрицания:
!FLA_CI_05,FLA_CI_05+US
Т. е. значение wert_02 будет выставлено либо если индекс модуля FLA не равен 05, либо он равен 05 и машина американка. В противном случае будет выбран wert_01.
Нетрудно догадаться, что основная разница в достаточном количестве источников света между европейкой и американкой будет только при кодировочном индексе 05. Европейке достанется значение wert_01 (24 источника света), а американке — wert_02 с 64-мя «лампочками». Не очень понятными остаются такие условия в индексе 03, т. к. в любом случае там будет задано wert_02. Скорее всего, если найти какой-нибудь старый архив SP-Daten, где вообще нет индексов 04 и 05, условия для параметров будут другими, но, пожалуй, выяснение этого момента я оставлю на плечах читателей
Пытаться разобрать истинность длинных логических выражений, думаю, не стоит, за вас это будет делать NCS Expert в режиме заводского кодирования. Он будет опираться на список идентов, полученных из FA и кодировочных индексов и сам подберёт нужные значения. Можно управлять установкой параметров, меняя сам FA (даже не обязательно его сохранять в блоки).
Теперь вы лучше понимаете, что такое FA, как он формируется, как на его основе составляется список идентов, как эти иденты используются при определении значений параметров, а так же что такие кодировочные индексы и как всё это дело связано друг с другом.
В следующей части мы поговорим о том, что из себя представляет конфигурация для блока управления, что такое NETTODAT и как его можно применить, а также о добавлении дополнительного варианта значения к параметрам с помощью NCS Dummy. В заключении практическое применение полученных знаний на примере изменения интервала замены масла.
Первая часть статьи
Всем привет. Сегодня у нас опять немножко познавательный ролик про E-Cис, первая часть кодировки а изменение кодировки в E-Sys был достаточно популярным очень много хороших отзывов даже были пожертвования на развитие канала и так далее скажем так это не может не радовать и было бы нечестно не выпустить вторую часть и не рассказать вам следующий шаг многие просили рассказать про обновление модулей потому что скажем так это уже более продвинутый уровень составляет многим проблемы но про это сделаем в следующем видео так как перед тем как обновлять модули вы должны понимать узнать ещё такие нюансы, как допустим изменения комплектации это очень-очень важно и перед тем как вы овладеете изменением комплектации нельзя переходить прошивки модулей вы сильно накосячите и потом об этом пожалеете.
И так, перед тем как мы перейдём к самому и E-Sys немного теории о том, что такое комплектация автомобиля и как она влияет на параметры, как кузов, серия комплектация автомобиля. Это достаточно важный пункт. Нужно узнать какая у вас комплектация вышла с завода. Зайдите на такой сайт как BMW вин ком таких сайтов 1000000 разных. Введите свой VIN-код нажмите decode и расшифруется ваш vin-код и будут такие параметры как кузов, серия двигателя и так далее так далее.
Всё расписано это наш неважно наш интересует вот это vehiсle options, то есть комплектация, какая именно есть у автомобиля потому что чтобы изменить комплектацию вы должны понимать что именно вы будете делать и так далее, например Option 616 BMW онлайн 620 voise Control 8ka dummy salapa что это всё значит? Каждый вот этот параметр, который будет прописан в автомобиле будет отвечать за определённые кодировки в определённом модуле, например, опция 6FL – это USB выход у нас на 5 серии находятся в подлокотнике, если у вас комплектации присутствует такая опция как 6FL и вы с этой опции закодируйте свою голову. Значит у Вас либо CIC либо NDT значит у вас в меню появится выбор, что вы сможете подключать медиа устройства через USB чтобы голова это видела если эта опция прописана не будет соответственно голова ваше устройство тоже видеть не будет. Например такая опция как 8KA dummy salapa это цвет кожи добавить этот комплектацию или не добавите с точки зрения кодирования это не играет никакой роли это будет у вас находиться в комплектации, но цвет салона у вас от этого не поменяется если вы поставите в какую-то другую опцию То есть вы должны понимать что добавляете что на что влияет и так далее .то есть на этом сайте BMW VIN decoder. Вы можете посмотреть в какой комплектации ваш автомобиль вышел с завода, но скорее всего автомобиль у вас не новый комплектация может быть изменена.
Потом я покажу в E-Sys, как проверить, какая у вас записана комплектация, чтобы было видно наглядно рассмотрим оригинальную комплектацию моего автомобиля вот у нас получается xml файлик, когда вы считываете его E-Sys и он выглядит вот таким образом. То есть много разных циферок, буковок и так далее.
Сравним это с комплектацией, которую мы считали с сайта допустим 801 то есть автомобиль из Германии языковой пакет немецкий опция 801, да, присутствует .Это значит у нас языках будет обязательно минимум немецкий плюс все другие которые входят в пакет. Смотрим дальше, например, опция 1СА. Посмотрим есть у нас такая? Да есть такая. Наверняка заметили разницу то, что есть на сайте откуда вы считали свою комплектацию из пяти символов, то есть буква какие-то цифры буква и все по такой же аналогии, а в комплектации, которую вы считали с автомобиля xml – файл идёт всего 3 символа так вот, что очень важно, в этой комплектации во всех списках просто забейте на первые и последние символы. Стоит только три средних только они играют роль, потому что в комплектацию, когда вы будете прописывать, допустим, тот же самый USB выход 6FL. Если вы пропишите в комплектации S 6FL А, то у вас машина это не примет скажет неправильная кодировка и так далее, в общем будет ругаться, то есть нужно просто 6FL, например как тут смотрим 6FL, вот он находится тут, то есть это очень важно знать.
В данном случае, вы с машины считали свою комплектацию, либо посмотрели на сайте, какая комплектация была у вас с завода, но это не все опции, которые существуют у BMW. Чтобы узнать все опции, которые существуют у BMW нужно найти все комплектаций, например, очень удобно иметь это в ПДФ файлике, у себя на компьютере, потому что не всегда есть доступ к интернету и тут вы уже видите абсолютно все опции, которые BMW выпускала с новыми машинами, опции добавляются, они идут все в определенном порядке и тут есть всё всё всё. Чтобы расшифровать свою комплектацию, пользуйтесь шпаргалкой и соответственно, чтобы добавлять новые опции и знать, что вы прописываете и что вы удаляете обязательно смотрите полный список комплектации.
Если вы наберете в Гугле, например, наберём BMW vo codes и соответственно, он у нас выдаст сразу все разные комплектации, открываем первый попавшийся сайт и вот пожалуйста, по первому же запросу мы нашли комплектацию BMW так далее. Это у нас с Е90 полностью, то есть на всех машинах BMW, на самом деле, комплектация будет написана одинаково, за исключением того, что допустим на, если вы вобьете Е90 на 5 серии могут быть какие-то комплектации, которых ту нет, например, на пятерках в F кузовах будут такие опции прописаны, которых тут нет, так что используйте всегда самый новые и будет вам счастье. И теперь пришло время подключиться к автомобилю и показать наглядно как изменять опции в автомобиле, что нужно соблюдать, как это выглядит, куда нажимать и почему именно туда нажимать и такие всякие нюансы.
Практический пример, что как будем делать и сегодня решил показать эту функцию на такой теме, допустим вы доустановили себе вот такие клавиши Sport Comfort мод и так далее. Те. будем программировать спортивную коробку опцией 2тб, сейчас нажимаю на неё и у нас ничего не происходит, ни тут, ни тут ни какие режимы у нас не меняются, хотя должен включаться спортивный режим, нормальный режим, Спорт Плюс должно все переключаться, но ничего не работает. Мы установили всё правильно, но нужно машину закодировать. Как это сделать? Запускаем E-Sys, покажем, что можно добавлять. Подключаемся к машине. Как это правильно делать я описывал все в прошлой статье, часть 1, обязательно прочтите. Если вы этого не посмотрите, то вы скорее всего не поймете и будет много проблем. Для начала что нужно сделать? Считываем комплектация с автомобиля. Комплектацию считали ее нужно обязательно сохранить. Сохраняем ее на десктоп, называем ее orig FA, orig FA с немецкого – комплектация автомобиля. Перезапишем, т.к. я уже это делал, с этого файла обязательно сделать копию себе, сохранить ее на облако, куда угодно, чтоб была в надежном месте и не потерялась. Это для того, чтобы мы могли всегда вернуть комплектацию. Для изменения комплектации, вам нужно будет нажать на комплектации и нажать кнопочку editor, вы перейдете в FA editor, для изменения комплектации и тут нужно будет дальше нам открыть элемент саляпа.
Расписана такая комплектация до этого показывали в другом виде, но тут она так выглядит поскольку я сейчас показываю эксперимент на своей машине я загрузил свою оригинальную комплектацию, когда я только приобрёл автомобиль, я сохранил и загрузил. Ясное дело мне эти все кнопки стоят спорт Мод и так далее, то есть у меня комплектация в автомобиле было запилена так как мне было нужно. Сейчас наглядно покажу, что нужно делать с комплектацией, чтобы ее изменить. Вот такая опция как 205 отвечает у нас это на 205 это обычная коробка, а мы хотим себе спортивную коробку, чтобы у нас работала и за это отвечает у нас такая функция как 2tb. Обратите внимание, что все опции разделяются запятой, если вы что-то ввели неправильно загорается красная рамочка и показывает, что что-то не так. Ставите только запятую, смотрите, ага, всё правильно нажимаете play change – сохранить изменения, потом на FA нажимаете правой кнопкой и делаете calculated FP, при нажатии этой функции, E-Sys просчитывает все опции и если вы что-то написали, то неправильно, то что не предусмотрено, BMW вам скажет, что ошибка и не даст вам это сделать. Сохраняете свой комплектацию и возвращаетесь обратно. Он вам предложит: хотите ли перезагрузить всё? Нажимаете обязательно да. Выбрасывает вас в меню coding, перед тем как идти в меню coding, вам нужно выйти в меню VCM. И тут в меню VCM, вот в этой вкладочке, где vehicle order, открываем свою комплектацию, которую вы только что сохранили. Переходим в следующую вкладочку мастер, и видите нам нужно нажать кнопочку read FA FP, то есть записать эту комплектацию в автомобиль.
Сейчас у нас горит серым, потому что нужно комплектацию заново просчитать. Е-сис его просчитало и у нас кнопочка загорела, нажимаем один раз и тут снизу слева написано: FA and FP written, то есть всё правильно записано. Отлично! И таким способом, мы добавили комплектацию в автомобиль, в отличии от Е-серии где комплектация, допустим, хранилась в CAS модуле, или ещё в каком-то LMA, FRM зависит от модели, тут комплектация хранится немного по- другому. Сейчас мы записали комплектацию в автомобиль, но мы не закодировали ни какие модули. Для того, чтобы закодировать определенные модули, заходим в опцию coding и тут уже, как обычно считываем все модули машины.
Модули машины считались, тут у нас нету функции. Допустим, мы сейчас прописали свою 2tb автоматическую коробку, а мы понятия не имеем в какие модули нужно её записывать, чтобы всё заработало. В таком случае, можно вот на этой вкладке, где ЕСU, то есть все модули, в данном случае их 25, нажать правой кнопкой и если мы нажмем на кнопку code, то этой комплектации активной начнут сканироваться все модули автомобиля, но не в коем случае не делайте это на заведённом двигателе иначе вы просто завалите эту тему. Так как мы уже не первый раз кодируем, мы знаем куда можно прописать опцию 2tb спортивную коробку, и он должен прописывать в 3 модуля. Нас интересуют такие модули, как EGS, это модуль коробки, нажимаем на ней правой кнопкой и нажимаем code. Идет кодирование коробки с опцией 2tb. Во время кодирования коробки, ничего особенного не выскакивает и вы, никак, особо в машине это не заметите. Написано кодирование завершено. Обязательно, кодируйте так, чтобы у вас было ноль ошибок, все зелененьким подсвечено, что кодировка принята, все отлично.
Дальше, нужно будет закодировать такой модуль, как модуль ICM. ICM – это у нас один из модулей, так сказать, безопасности. Отвечает за стабильность машины. Я сейчас сразу включу телефон на запись перед тем как нажимать code, так это вы увидите, какие изменения будут происходить в автомобиле. Нажимаем кодировать, и вы сейчас сразу себя снизу на экране слева увидите, что будет выскакивать. Ошибки выскакивают это нормально поскольку модуль отваливается потом, когда вы машину выключите и заново включите эти ошибки пропадут с ними ничего не будет. Так, всё, модуль у нас закодировался. Переходим опять к E-Sys. Так, модуль у нас закодирован, нажимаем close, ноль ошибок – отлично!
И ещё нам нужно закодировать такой модуль как kombi, т.е. саму приборку, тоже самое сейчас начнём code и включим телефон на запись, увидите, что происходит при кодировании kombi. Вот пошло кодирование модуля. Сейчас на приборке будет куча разных ошибок и так далее. Также ошибки выскакивают у нас и сюда – инструмент кластеров, update reсwire. Тут чего только не напишет. Не переживайте, потом, когда все сделается, все будет нормально. Так все, кодировка у нас завершена, переходим к E-Sys. Смотрим, close 0 erros, отлично!
Вот такими вот функциями мы сейчас закодировали спортивную коробку себе и теперь смотрим, как это все у нас выглядит. Сейчас включим подсветочку. Нажимаю на кнопочку спорт, у нас включается сразу спорт, нажимаем еще раз на спорт плюс. Тоже самое у нас происходит в комби и так далее. Как узнать, какие модули нужно кодировать? Как видим, мы сейчас меняем режимы и меняется информация в комбе. Соответственно, модуль комби должен знать, что у нас стоит другая коробка, но закодировать модуль комби. Вот эти кнопки, они непосредственно подключены к модулю ICM, которые находятся вот там у нас в подлокотнике. Соответственно, нужно и его будет закодировать, но мы вроде как кодируем коробку саму. Если мы не дадим коробке знать, что она у нас, типа спортивная, то тоже не будет переключаться поэтому нужно закодировать было и ее. Вот так вот мы добавили себе опцию 2tb, спортивная коробка, как видите ничего трудного, но с комплектацией будьте всегда очень-очень осторожны. Легко накосячить, что- то не то сделать и поэтому обязательно сохраните свою оригинальную комплектацию. Если что, вы всегда сможете вернуться на первоначальные настройки, используя этот гайд.
PS. Если вы решили начать применять эту инструкцию на практике, и вам нужно оборудование ICOM или помощь в установке программ ISTA-P, ISTA-D или E-sys, то позвоните по телефону и все установим, даже можно удаленно через тимвьювер:
380 98 033 4000 Viber, WhatsApp
380 66 930 1000
380 73 930 1000.
Статья написана на основе одного из видео Ютуб канала о BMW – BimmerDoc.