Kaptur OBDII Can_bus 1.6 CVT.


И так для понимания, от простого к сложному.

Примеры запрос-ответ представлены для адаптера USBtin совместно с программой CanHacker.
Все сеансы общения представлены для автомобиля Renault Kaptur 1.6 CVT (год выпуска 2018). Шина соответсвует спецификациям CAN HS, скорость работы 500кбит/с.

Начнём со стандартных пидов.
Получение информации о поддержке Kaptur(ом) стандартных PID

7E0h - Адрес ЭБУ двигателя.
7E8h - Адрес ответа ЭБУ двигателя.

Запрос-ответ PIDs 01h-20h:

Запрос: 7E0, Data: 02 01 00 00 00 00 00 00

  id         A B C D  
Ответ: 7E8 Data: 06 41 00 AE 09 В8 13

Совсем для маленьких поясню, Маска в данном примере это значение байта в двоичном виде
= 0011 1110 = Графа Значение поля A, и.т.д
1 Есть поддержка
0 Нет поддержки

Расшифровка маски:

Поле

Значение

Код PID

Описание

Формула

A7

1

01h

Monitor status since DTCs cleared.

 

A6

0

02h

Freeze DTC

 

A5

1

03h

Fuel system status

 

A4

0

04h

Calculated engine load value

 

A3

1

05h

Температура охлаждаюшей жидкости

     А - 40

A2

1

06h

Short term fuel % trim—Bank 1

 (А-128)*100/128

A1

1

07h

Long term fuel % trim—Bank 1

 (А-128)*100/128

A0

0

08h

Short term fuel % trim—Bank 2

 

B7

0

09h

Long term fuel % trim—Bank 2

 

B6

0

0Ah

Fuel pressure

 

B5

1

0Bh

Давление во впускном коллекторе

     А

B4

1

0Ch

Обороты двигла RPM

   ((A*256)+B)/4

B3

1

0Dh

Скорость авто

     А

B2

1

0Eh

Угол опережения зажигания

      A/2 - 64

B1

1

0Fh

Температура всасываемого воздуха

      A - 40

B0

0

10h

MAF air flow rate

 

C7

1

11h

Положение дросселя

      А*100/255

C6

0

12h

Commanded secondary air status

 

C5

1

13h

Наличие датчиков кислорода

 

C4

1

14h

Bank 1, Sensor 1: Oxygen sensor voltage

 

C3

1

15h

Bank 1, Sensor 2: Oxygen sensor voltage

 

C2

0

16h

Bank 1, Sensor 3: Oxygen sensor voltage

 

C1

0

17h

Bank 1, Sensor 4: Oxygen sensor voltage

 

C0

0

18h

Bank 2, Sensor 1: Oxygen sensor voltage

 

D7

0

19h

Bank 2, Sensor 2: Oxygen sensor voltage

 

D6

0

1Ah

Bank 2, Sensor 3: Oxygen sensor voltage

 

D5

0

1Bh

Bank 2, Sensor 4: Oxygen sensor voltage

 

D4

1

1Ch

OBD standards this vehicle conforms to

 

D3

0

1Dh

Oxygen sensors present

 

D2

0

1Eh

Auxiliary input status

 

D1

1

1Fh

Время прошедшее с запуска двигла

      (A*256)+В

D0

1

20h

PIDs supported [21 - 40]

 

 Запрос-ответ PIDs 21-40h:

Запрос: 7E0, Data: 02 01 20 00 00 00 00 00

  id         A B C D
Ответ: 7E8 Data: 06 41 20 90 07 A0 01

Расшифровка маски:

Поле

Значение

Код PID

Описание

A7

1

21h

Distance traveled with malfunction indicator lamp (MIL) on

A6

0

22h

Fuel rail Pressure (relative to manifold vacuum)

A5

0

23h

Fuel rail Pressure (diesel, or gasoline direct inject)

A4

1

24h

O2S1_WR_lambda(1): Equivalence Ratio Voltage

A3

0

25h

O2S2_WR_lambda(1): Equivalence Ratio Voltage

A2

0

26h

O2S3_WR_lambda(1): Equivalence Ratio Voltage

A1

0

27h

O2S4_WR_lambda(1): Equivalence Ratio Voltage

A0

0

28h

O2S5_WR_lambda(1): Equivalence Ratio Voltage

B7

0

29h

O2S6_WR_lambda(1): Equivalence Ratio Voltage

B6

0

2Ah

O2S7_WR_lambda(1): Equivalence Ratio Voltage

B5

0

2Bh

O2S8_WR_lambda(1): Equivalence Ratio Voltage

B4

0

2Ch

Commanded EGR

B3

0

2Dh

EGR Error

B2

1

2Eh

Commanded evaporative purge

B1

1

2Fh

Fuel Level Input

B0

1

30h

# of warm-ups since codes cleared

C7

1

31h

Distance traveled since codes cleared

C6

0

32h

Evap. System Vapor Pressure

C5

1

33h

Barometric pressure

C4

0

34h

O2S1_WR_lambda(1): Equivalence Ratio Current

C3

0

35h

O2S2_WR_lambda(1): Equivalence Ratio Current

C2

0

36h

O2S3_WR_lambda(1): Equivalence Ratio Current

C1

0

37h

O2S4_WR_lambda(1): Equivalence Ratio Current

C0

0

38h

O2S5_WR_lambda(1): Equivalence Ratio Current

D7

0

39h

O2S6_WR_lambda(1): Equivalence Ratio Current

D6

0

3Ah

O2S7_WR_lambda(1): Equivalence Ratio Current

D5

0

3Bh

O2S8_WR_lambda(1): Equivalence Ratio Current

D4

0

3Ch

Catalyst Temperature Bank 1, Sensor 1

D3

0

3Dh

Catalyst Temperature Bank 1, Sensor 2

D2

0

3Eh

Catalyst Temperature Bank 2, Sensor 1

D1

0

3Fh

Catalyst Temperature Bank 2, Sensor 1

D0

1

40h

PIDs supported [41 - 60]

Запрос-ответ PIDs 41-60h:

Запрос: 7E0, Data: 02 01 40 00 00 00 00 00

  id         A B C D
Ответ: 7E8 Data: 06 41 40 FE D2 00 11

Расшифровка маски:

Поле

Значение

Код PID

Описание

A7

1

41h

Monitor status this drive cycle

A6

1

42h

Control module voltage

A5

1

43h

Absolute load value

A4

1

44h

Fuel/Air commanded equivalence ratio

A3

1

45h

Relative throttle position

A2

1

46h

Ambient air temperature

A1

1

47h

Absolute throttle position B

A0

0

48h

Absolute throttle position C

B7

1

49h

Absolute throttle position D

B6

1

4Ah

Absolute throttle position E

B5

0

4Bh

Absolute throttle position F

B4

1

4Ch

Commanded throttle actuator

B3

0

4Dh

Time run with MIL on

B2

0

4Eh

Time since trouble codes cleared

B1

1

4Fh

Maximum value for equivalence ratio, oxygen sensor voltage, oxygen 
sensor current, and intake manifold absolute pressure

B0

0

50h

Maximum value for air flow rate from mass air flow sensor

C7

0

51h

Fuel Type

C6

0

52h

Ethanol fuel %

C5

0

53h

Absolute Evap system Vapor Pressure

C4

0

54h

Evap system vapor pressure

C3

0

55h

Short term secondary oxygen sensor trim bank 1 and bank 3

C2

0

56h

Long term secondary oxygen sensor trim bank 1 and bank 3

C1

0

57h

Short term secondary oxygen sensor trim bank 2 and bank 4

C0

0

58h

Long term secondary oxygen sensor trim bank 2 and bank 4

D7

0

59h

Fuel rail pressure (absolute)

D6

0

5Ah

Relative accelerator pedal position

D5

0

5Bh

Hybrid battery pack remaining life

D4

0

5Ch

Engine oil temperature

D3

0

5Dh

Fuel injection timing

D2

0

5Eh

Engine fuel rate

D1

0

5Fh

Emission requirements to which vehicle is designed

D0

1

60h

PIDs supported [61 - 80]

На последующие запросы масок поддержки PID 61-80h ответы приходят с нулевой датой, то есть поддержки нет.
Начнём с простых стандартных запросов к ECU двигателя.

Температура охлаждающей жидкости (PID=05h):

Запрос: 7E0, Data: 02 01 05 00 00 00 00 00

  id         A B C D   формула пример результат
Ответ: 7E8 Data: 03 41 05 52 00 00 00 00
A-40
82-40
= 42°C

Температура окружающего воздуха (PID=46h):

Запрос: 7E0, Data: 02 01 46 00 00 00 00 00

  id         A B C D   формула пример результат
Ответ: 7E8 Data: 03 41 46 37 00 00 00 00
A-40
55-40
= 15°C

Температура масла двигателя (PID=5Ch):

Запрос: 7E0, Data: 02 01 5C 00 00 00 00 00

  id         A B C D   формула пример результат
Ответ: 7E8 Data: 03 41 5C 51 00 00 00 00
A-40
81-40
= 41°C

Напряжение контрольного модуля (PID=42h):

Запрос: 7E0, Data: 02 01 42 00 00 00 00 00

  id         A B C D   формула пример результат
Ответ: 7E8 Data: 04 41 42 2F 3A 00 00 00
((A*256)+B)/1000
((47*256)+58)/1000
= 12,09V

Со стандартными PID ами всё более менее понятно, куда интереснее не стандартные не документированные PID, ассортимент коих куда более обширен и не ограничивается одним ECU двигателя, в моём Kapturе PyRen насканировал их 10 штук.

Начнём с панели приборов, Запрос-ответ длиной в один фрейм.

743h - Адрес запроса панели приборов.
763h - Адрес ответа.


Работаем в программе CanHacker в режиме Traser, предварительно настроив фильтр на id 700 - 800 дабы отсечь не нужный трафик с CAN шины, включаем режим Traser на запись.
Выглядит это примерно так.

Одометр (PID=220207h):

Запрос: 743, Data: 03 22 02 07 00 00 00 00

  id           A B C D формула пример результат
Ответ: 763 Data: 06 62 02 07 00 02 23 00 (A*65536+B*256+C) (0*65536+2*256+35) 547km



Напряжение аккумулятора (PID=222006h):

Запрос: 743, Data: 03 22 20 06 00 00 00 00

  id           A B C D формула пример результат
Ответ: 763 Data: 05 62 20 06 2F A8 00 00 (1.0*((A*256+B)))/1000 (1.0*((47*256+168)))/1000 12,2v


Температура салона (PID=22200Ch):

Запрос: 743, Data: 03 22 20 0C 00 00 00 00

  id           A B C D формула пример результат
Ответ: 763 Data: 07 62 20 0C 00 09 2A 46 D-40 70-40 30°C


Усложняем задачу, запрос - приём мультифреймового сообщения.

Коробка автомат (вариатор cvt jatko)

7E1h - Адрес ЭБУ коробки передач.
7E9h - Адрес ответа.

Коробас на прямые запросы отказался отвечать, выдав на запрос ответ типа :

Запрос: 7E1, Data: 02 21 A2 00 00 00 00 00
Ответ:  7E9, Data: 7F 19 12 00 00 00 00
00

Это негативный ответ, подсмотрел логи у ELM 327 оказалось ELMка делает запрос диагностики у каждого блока, видимо для совместимости с авто до 2009 года выпуска, тем не менее коробас 2018 года без этого запроса отказался отвечать, привет инженерам автофрамос, накодили так что у нас получился агрегат (renault-nissan)


Запрос диагностики.
Запрос: 7E1, Data: 02 10 C0 00 00 00 00 00
Ответ:  7E9, Data: 02 50 C0 FF FF FF FF

Положительный ответ сессия открылась, через 50 ms делаем запрос (PID=21A2h):

Запрос: 7E1, Data: 02 21 A2 00 00 00 00 00
Ответ:  7E9, Data: 10 25 61 A2 0B D2 1A 14

Пришол первый фрейм, “1” в первом байте говорит что ответ будет состоять из нескольких фреймов, “025” — это дина ожидаемого ответа, два байта позитивного ответа, и 4 байта информации.
Ещё через 50 ms посылаем фрейм FlowControl, и получаем оставшиеся фреймы.

Запрос: 7E1, Data: 30 00 00 00 00 00 00 00
Ответ:  7E9, Data: 21 B7 00 01 03 81 03 AB
Ответ:  7E9, Data: 22 03 00 03 33 69 B7 01
Ответ:  7E9, Data: 23 80 00 03 00 00 03 E9
Ответ:  7E9, Data: 24 00 00 00 03 CE 00 00
Ответ:  7E9, Data: 25 00 00 AE FF FF FF FF

Получили оставшиеся 5 фреймов 37 байт информации, сделал 2 запроса через 1 мин. после завода авто, и через 5 мин, трансмиссия в положении P, в данном примере меня интересовал байт температуры масла коробки.
В первой строке по формуле "P-55" = 105 - 55 = 50 °C, во второй строке получается 52 °C, коробас за 5 мин. прогрелся на 2°C

  A B C D E F G H I J K L M N

O

P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI
1 min 0B D2 1A 14 B7 00 01 03 81 03 AB 03 00 03 33 69 B7 01 80 00 03 00 00 03 E9 00 00 00 03 CE 00 00 00 00 AE
5 min 0D C1 1A 14 BA 00 01 03 78 03 A9 03 00 02 D2 6B BA 01 54 00 03 00 00 03 7E 00 00 00 03 CE 00 00 00 00 E3

Обороты на выходе коробаса (R*256+S) = (1*256+128) = 384 об/мин.
Напряжение на ECU акпп (cvt) (1.0*(80*Q))/1023 = (1.0*(80*183))/1023 = 14V.
Двление масла (1.0*((25*(A*256+B)))/256000) = (1.0*((25*(11*256+210)))/256000) = 0,295 bar.

Из этого мультифрейма можно вытянуть ещё много интересной информации, вот для примера Pids сгенерированные программой SL4A для ECU акпп (cvt) Kaptur.

"[PR]ТЕМПЕРАТУРА МАСЛА КОРОБКИ ПЕРЕДАЧ","PR004","21A2","P-55","0","0","*C","7E1"
"[PR]ОБОРОТЫ НА ВЫХОДЕ КОРОБКИ","PR005","21A2","(R*256+S)","0","0","об/мин","7E1"
"[PR]ОБОРОТЫ ДВИГАТЕЛЯ","PR006","21A0","(Q*256+R)","0","0","об/мин","7E1"
"[PR]ОБОРОТЫ ТУРБИНЫ","PR007","21A2","(N*256+O)","0","0","об/мин","7E1"
"[PR]НАПРЯЖЕНИЕ ПИТАНИЯ КОМПЬЮТЕРА","PR008","21A2","(1.0*(80*Q))/1023","0","0","V","7E1"
"[PR]ИЗМЕР. ПОЛОЖ. ПОТЕНЦ. ДРОСС. КЛАПАНА","PR012","21A2","(1.0*(100*T))/255","0","0","%","7E1"
"[PR]ПОЛОЖЕНИЕ ПЕДАЛИ АКСЕЛЕРАТОРА","PR022","21A0","(1.0*(125*E))/255","0","0","%","7E1"
"[PR]ПЕРЕД. ОТНОШ. КОРОБКИ ПЕРЕДАЧ","PR082","21A1","(1.0*((H*256+I)))/10000","0","0","","7E1"
"[PR]ТОК ЭЛ-М КЛ. РЕГ ДАВЛ МАСЛА В ПЕРВ. КОНТ.","PR087","21A2","(1.0*((H*256+I)))/1000","0","0","A","7E1"
"[PR]ДАВЛЕНИЕ МАСЛА ВО ВТОРИЧНОМ КОНТУРЕ","PR090","21A2","(1.0*((D))/40)*10","0","0","bar","7E1"
"[PR]ТОК ЭЛ-МАГ КЛАП РЕГ ДАВЛ БЛОК ГИДРОТРАНСФ","PR091","21A2","(1.0*((F*256+G)))/1000","0","0","A","7E1"
"[PR]СКОРОСТЬ АВТОМОБИЛЯ","PR105","21A2","(1.0*((AF*256+AG)))/256","0","0","км/час","7E1"
"[PR]ЭФФЕКТИВНЫЙ КРУТЯЩИЙ МОМЕНТ ДВИГАТЕЛЯ","PR106","21A0","(1.0*((signed(L)*256+M)))/10","0","0","Nm","7E1"
"[PR]УСТАВКА КРУТЯЩЕГО МОМЕНТА ДЛЯ МАЛЫХ ОБ.","PR153","21A0","0.5*(J*256+K)-400","0","0","Nm","7E1"
"[PR]УСТАВКА КРУТЯЩЕГО МОМЕНТА ДЛЯ ВЫСОК. ОБ.","PR154","21A0","0.5*(H*256+I)-400","0","0","Nm","7E1"
"[PR]ДАВЛЕНИЯ В ВЫБРАННОЙ МАГИСТРАЛИ","PR194","21A2","(1.0*((C))/40)*10","0","0","bar","7E1"
"[PR]ОСНОВНАЯ РЕГУЛИРОВКА ДАВЛЕНИЯ МАСЛА","PR212","21A2","(1.0*((25*(A*256+B)))/256000)*10","0","0","bar","7E1"
"[PR]РЕГУЛИР. ЛИН. ДАВЛ. ПО ТОКУ Э/М КЛАПАНА","PR214","21A2","(1.0*((J*256+K)))/1000","0","0","A","7E1"
"[PR]УСТАВКА ДАВЛЕНИЯ ВЫС. ПЕРЕДАЧ","PR253","21A2","(1.0*((25*(V*256+W)))/256000)*10","0","0","bar","7E1"
"[PR]УСТАВКА ДАВЛЕНИЯ НИЗ. ПЕРЕДАЧ","PR254","21A2","(1.0*((25*(Z*256+AA)))/256000)*10","0","0","bar","7E1"
"[PR]ТОК Э/М КЛАПАНА НИЗ. ПЕРЕДАЧ","PR255","21A2","(1.0*((AB*256+AC)))/1000","0","0","A","7E1"
"[PR]ТОК Э/М КЛ. ВЫС. ПЕРЕДАЧ И ЗАД. ХОДА","PR256","21A2","(1.0*((X*256+Y)))/1000","0","0","A","7E1"
"[PR]ДАТЧИК УСКОРЕНИЯ КПП","PR257","21A2","(1.0*((signed(AH)*256+AI)))/100","0","0","%","7E1"
"[ST]ЗАПРОС "КИКДАУН"","ET086","21A0","T","0","0","","7E1"
"[ST]ИНФОРМАЦИЯ КОНТАКТА ТОРМОЗА","ET037","21A1","J","0","0","","7E1"
"[ST]ВКЛЮЧЕННОЕ ПЕРЕДАТОЧНОЕ ОТНОШ.","ET013","21A1","C","0","0","","7E1"
"[ST]ПАРАМЕТРЫ САМОАДАПТАЦИИ","ET283","21A2","U","0","0","","7E1"



Счётчик старения масла вариатора (PID = 2103h):

Запрос: 7E1, Data: 02 21 03 00 00 00 00 00

Трансмиссии CVT7 могут иметь два возможных метода подсчёта счётчика старения.

Метод 1 применим в случае если температура вариатора медленно увеличивается начиная с температуры 50°C.
Метод 2 применим в случае если счётчик никогда не увеличивается, до тех пор пока температура не достигнет 90°C.

По методу 1 получаем результат:

  id         A B C D   формула пример результат
Ответ: 7E9 Data: 06 61 03 00 00 16 E2 FF
B*65536+C*256+D/16
22*256+226/16
= 366

По методу 2 получаем:

  id         A B C D   формула пример результат
Ответ: 7E9 Data: 06 61 03 00 00 16 E2 FF
B*65536+C*256+D
22*256+226
= 5863



Продолжение следует.