Page 1 of 1

изменений адаптаций на MQB платформе

Posted: 15 Jun 2020 09:13
by standy
Добрый день. Спасибо за отличный материал по VCP Scripter на русском языке. Начал осваивать написание скриптов, экспериментирую на MQB платформе, но информации так мало, что сложно без помощи понять. Подскажите, пожалуйста, как происходит изменение адаптаций на MQB платформе. На примере адаптации по изменению количества комфортных морганий поворотником:

Block 09 -> Адаптации -> Aussenlicht_Blinker (ID 2654) -> Komfortblinken Blinkzyklen -> 3 на 5 поменять

Удалось подключиться к блоку по UDS, ввести код безопасного доступа, считать hex кодировку из адаптации по ID следующей командой:
variable:=ReadDataByID(2654) ;

Я получил вот такую строчку hex "3C000000050000000000", но не понимаю пока, как мне понять правила кодирования в ней 28 адаптацией, которые находятся внутри группы Aussenlicht_Blinker (ID 2654). Например, некоторые из этих 28 адаптаций просто содержат либо 0, либо 1 в бите, некоторые значения, как например эта адаптация, которая в 1 бите по счету и может содержать значение 1-5. Подскажите правило, по которому я могу правильно идентифицировать нужный мне байт и бит для изменения в конкретном случае с Komfortblinken Blinkzyklen адаптацией. И как мне понять, какое правильное значение нужно записывать в нужный бит, если мне нужно не просто 0 или 1, а вот такое значение 5.

Для простого изменения битов я видел вот такой метод, но пока не до конца понимаю принцип его работы.

function SetBitInHexString(HexString : string ; ByteNo,BitNo : integer) : string;
function ClearBitInHexString(HexString : string ; ByteNo,BitNo : integer) : string;

Которые соответственно устанавливают в 1 или 0 нужный бит в байте. А как быть в случае изменения значения 3 на 5 для Komfortblinken Blinkzyklen?

Буду признателен вашему объяснению, а если удастся показать на конкретном примере, это будет очень наглядно. Заранее спасибо.

Re: изменений адаптаций на MQB платформе

Posted: 16 Jun 2020 12:35
by skodapilot
К сожалению, не всегда есть время, поэтому выход продолжения немного затягивается. Именно в третьей части я хотел обозначить сложные моменты с которыми можно стокнуться при написании скриптов и предложить некоторые варианты упрощения этих моментов.

Для того чтобы найти что менять в канале адаптации, достаточно найти маску кодирования. Задача с одной стороны несложная, с другой требует последовательного считывания всех вариантов для исследуемого параметра (временные затраты), а далее XOR всех вариантов. Для упрощения этой процедуры я планирую добавить на osoTEC.com онлайн инструмент (кодовое название VCP Scripter Tool).

Для примера возьму гейт.
Канал 1187 (Список блоков). Допустим, нас интересует "Дополнительный автономный отопитель". Устанавливаем последовательно "Закодирован", считываем значение канала, потом меняем на "Не закодирован", еще раз читаем канал. Имея оба варианта уже можно найти маску через XOR, но чтобы упростить этот можно воспользоваться программным механизмом (на скриншотах отладочная версия VCP Scripter Tool), который все сделает сам...
2020-06-16_12-03-57.png
В итоге имеем что "Дополнительный автономный отопитель" кодируется в 13 байте в 2 бите и для кодирования используется всего 1 бит. Остается только обернуть эти данные в API VCP Scripter

Code: Select all

SetBitInHexString(variable, 13 , 1);
ClearBitInHexString(variable, 13 , 1);
Другой вариант.
Канал 2344 (Деактивация функции старт-стоп).
2020-06-16_12-12-57.png
Тут используется группа из 5 бит начиная с 0. Готовых функций API для такого случая нет, т.к. нужно поменять в variable только 5 бит в 0 байте, поэтому здесь или написать свою функцию или упростить и менять целиком байт.

Забегая вперед, можно заметить, что дальнейшее упрощение это организация таблицы (базы) вида блок - канал - расшифровка, но тут у меня есть сомнения относительно востребованности в подобной базе, большинство испольует свои локальные наработки.

Re: изменений адаптаций на MQB платформе

Posted: 16 Jun 2020 22:14
by standy
Огромное спасибо за разъяснения, так еще такие подробные, с примерами ) Да, я сам программист, но не ожидал, что это будет так трудозатратно. Теперь я лучше понимаю, сколько работы стоит за 1 click функциями того же VCP и OBD11 )

Очень интересный тул Вы пишите. Уверен, что будет пользоваться спросом :) Я бы точно его использовал. Переварю всю информацию, поиграюсь завтра со своей машиной и отпишусь о результатах. Теперь я понял, что надо просто находить разницу до и после изменения нужной адаптации, а потом кодировать полученную разницу в примитивных функциях.