Сегодня пытался разобраться в протоколе взаимодействия диагностического адаптера и ЭБУ, с целью научиться считывать параметры температуры двигателя. Это нужно для создания собственной прошивки блока климат-контроля. Для подключения к блоку использую vag-com адаптер, доработанный путем подпайки к соответствующим выводам тонких проводов, на конце которых вилка DB-15.


Для чего это нужно? А нужно это для того, чтобы можно было подключать адаптер "тест-мастер". Но сегодня не об этом.
Так как выводы DB-15 дублируют выводы адаптера, можно очень удобно "тыкать" осциллографом в K-line и смотреть обмен. На компе запустил Schevrolet Explorer, настроил в параметрах вывод только температуры с запросами через 100мс, и вот что получилось на экране осциллографа

уровень сигнала меняется от 0 до +12 в. периодичность между сообщениями как раз 100 мс, как в настройках. К сожалению, о протоколе обмена я имею только общее представление. Чтение информации в сети пока что не позволило разобраться что здесь является запросом и ответом. Поэтому если кто занимался анализом и может дать совет, прошу отписать в комментариях. В планах завести сигнал через делитель напряжения на логический анализатор, может быть там обмен будет выглядеть понятнее.
вот еще растянутый кусок осциллограммы









Комментарии 16
Как по мне это лучше/проще делается с помощью ардуины
Считывается нужный блок отвечающий за температуру, потом переделываешь его в нужный для климата протокол и передаешь на климат
С ардуино не знаком, знаком с PIC-контроллерами. Тем более в блоке как раз стоит PIC18. По поводу протокола — блок как раз и общается с эбу напрямую, через K-line, и все что мне нужно — это научится инициировать обмен и отправлять — принимать запрос и данные температуры. Ардуино в любом случае будет лишним звеном. Его достоинство только в том, что есть готовые скетчи для общения с эбу. В общем, как получу блок, буду подробно изучать его схемотехнику, а пока что все только в теории
Только в OBD2 и GM12 разные протоколы
А климат работает с GM12
Поэтому и написал — что нужно "вынуть" значение температуры — переделать в нужную для климата и отправить на климат
Тогда и перепрошивка климата не нужна будет
Речь идет о блоке климат контроля Сан-Сити, я правильно понял ?
да, совершенно верно. Вопрос по протоколам пока не изучал, знаю только что в старой некс. уровни 0 и +5, а в МR-140 0 и +12
Протокол ALDL
А в OBD2 другой — потому у меня например не будет работать ELM327 а у тебя не работает климат )
У меня дружбан занимался чем то подобным — вынимал инфу с блока(ячейки) отвечающий за температуру и отправлял на табло(у него правда КАН шина)
Вот я тебе и написал как можно сделать без всяких перепрошивок — но появится стороннее устройство отвечающее за преобразование сигнала(протокола)
У нас, как я понял, используется IS0-14230
Serega2308
Только в OBD2 и GM12 разные протоколы
А климат работает с GM12
Поэтому и написал — что нужно "вынуть" значение температуры — переделать в нужную для климата и отправить на климат
Тогда и перепрошивка климата не нужна будет
Речь идет о блоке климат контроля Сан-Сити, я правильно понял ?
получается, нужен только преобразователь протокола. Спасибо за идею. Дело еще в том, что мне придет неисправный блок, и что там погорело еще неизвестно, если мертв сам PIC18, то однозначно придется пробовать городить свою прошивку или целиком новую плату управления.
Что у тебя что у меня — идет поток инфы, в этом потоке есть значение температуры !
Тебе нужно "копать" в эту сторону
Посмотри темы про бортовой комп своими руками для Нексии(видел не давно кто то делал) — вот как раз там и будет расписано где и в каком блоке инфа о температуре и т.д.
Видел эту тему, я понимаю сам принцип, но не совсем понимаю структуру обмена, то есть как расшифровать то, что на экране осциллографа. Там даже не поток, так запрос-ответ. Я выставлял в эксплорере запрос только температуры с периодичностью 100 мс, других данных в таком случае там быть не должно, только запрос-ответ температуры
Идет поток данных — то что ты выставил температуру — не значит что приходит инфа только о температуре !, просто у тебя на экране показывается только температура.
А если поставить два параметра на экран с такой же периодичностью — то скорее всего ты разници не увидишь(могу и ошибаться)
Ну и в БКК кроме температуры есть и другие параметры которые возможно нужны для работы климата
Так что нужен преобразователь протоколов
не думаю, что там идет поток, так как сообщения повторяются и выглядят слишком короткими, для того чтобы там было что-то еще. В общем сейчас еще рано делать выводы, нагляднее видно будет после того, как подключу логический анализатор
Если там не поток — тогда если на экране БКК не будет включена температура — то он не будет работать ))
Я включаю на экране климата обороты двигателя — но на работу БКК в авто режиме это не влияет !
это потому, что он может продолжать слать запросы в фоновом режиме, а на экран выводить только один параметр. Специально сделаю осциллограмму с несколькими параметрами, тогда и будет видно отличие нескольких запросов от одного.
БКК выдает запрос "f4 56 01 b5", получает ответ от ЭБУ "f4 56 01 b5 f4 92 01 20 91 00 00 00 00 aa 68 45 ee 39 22 22 4f 00 00 24 03 a0 8e 80 00 03 21 21 88 21 1e 26 32 00 00 00 00 00 00 00 c2 92 7b 00 80 98 00 00 00 00 84 0d 08 30 01 8b 43 68 06 40 a5 60 d8 74". Температура ОЖ — 14й байт. Формула расчета X*0.75-40.
Тоже уже задумывался сделать заглушку для БКК, но сейчас у меня нет БКК уже, да и с ним все прекрасно работало. Но так как в проекте еще бортовик, и возможно покупка климата, то придется делать.
Удачи в разработке.
Serega2308
Если там не поток — тогда если на экране БКК не будет включена температура — то он не будет работать ))
Я включаю на экране климата обороты двигателя — но на работу БКК в авто режиме это не влияет !
Разобрался с помощью лог.анализатора, действительно ты прав, там в ответе содержатся все параметры, поэтому нужные байты придется отсеивать
То что я тебе и говорил )
Вот теперь от сюда и отталкивайся — сторонее устройство принимает сигнал и выдает нужный для БКК
Теперь нужно разбираться в протоколах