Компьютерная диагностика легковых автомобилей Volkswagen всех модельных годов с 1992 по 2013 дилерской программой.

 

Volkswagen vas pc

VW Transport Protocol 2.0 (TP 2.0) for CAN bus

CAN позволяет передать пакет данных до 8-ми байт, чтобы отправить сообщение длиннее 8 байт необходимо использовать транспортный протокол. Например, OBD-II спецификация использует ISO-TP (ISO 15765-2). Однако, Volkswagen использует на своих автомобилях собственный транспортный протокол, известный как VW TP 2.0.

Эта страница дает краткое изложение о том, как работает TP 2,0. Пожалуйста, обратите внимание, что есть более старый протокол VW TP 1.6, который использовался в некоторых автомобилях. TP 1.6 очень похож, но некоторые параметры фиксированы. Также стоит отметить, что я выработал все это из различных презентаций и документов, которые я нашел в сети. У меня не было доступа к официальной документации от VW, поэтому вся информация может быть не точной.

TP 2.0 это ISO 14230-3, Протокол 2000 (KWP2000).

Четыре типа сообщений

TP 2.0 работает путем открытия данных "каналы" между двумя взаимодействующими устройствами. Как только канал открыт, два устройства могут обмениваться данными. Для этого используются четыре типа сообщений -

  1. трансляция,
  2. настройка каналов,
  3. параметры каналов,
  4. передача данных.

1. Трансляция

Тип трансляции имеет фиксированную длину 7 байт. Отправляется 5 раз в случае потери пакетов. Не уверен, что это на самом деле используется до сих пор.

Byte0123456
Description Dest Opcode KWP Data Resp Req Resp Req

Описание полей

ПолеОписание
Dest Логический адрес модуля назначения, например 0x01 для Блока Управления Двигателем.
Opcode 0x23 Запрос трансляции
0x24 Ответ трансляции
KWP Data KWP2000 SID and parameters
Resp Req 0x00 С ожиданием ответа
0x55 or 0xAA Без ожидания ответа

2. Настройка канала

Тип установки канал имеет фиксированную длину 7 байт. It is used to establish a data channel between two modules.

The channel setup request message should be sent from CAN ID 0x200 and the response will sent with CAN ID 0x200 + the destination modules logical address e.g. for the engine control unit (0x01) the response would be 0x201.

The communication then switches to using the CAN IDs which were negotiated during channel setup.

You should request the destination module to transmit using CAN ID 0x300 to 0x310 and set the validity nibble for RX ID to invalid. The VW modules seem to respond that you should transmit using CAN ID 0x740.

Byte0123456
Description Dest Opcode RX ID V RX Pref TX ID V TX Pref App

Field description

FieldDescription
Dest Logical address of destination module, e.g. 0x01 for the engine control unit
Opcode 0xC0 Setup request
0xD0 Positive response
0xD6..0xD8 Negative response
RX ID Tells destination module which CAN ID to listen to
RX Pref RX ID Prefix
TX ID Tells destination module which CAN ID to transmit from
TX Pref TX ID Prefix
V 0x0 CAN ID is valid
0x1 CAN ID is invalid
App Application type, seems to always be 0x01 (maybe only for KWP)

Channel parameters

The channel parameters type has a length of 1 or 6 bytes. It is used to setup parameters for an open channel and to send test, break and disconnect signals

You should send a parameters request straight after channel setup using the CAN IDs negotiated.

Byte0
Description Opcode

OR

Byte012345
Description Opcode BS T1 T2 T3 T4

Field description

FieldDescription
Opcode 0xA0 Parameters request, used for destination module to initiator (6 byte)
0xA1 Parameters respsonse, used for initiator to destination module (6 byte)
0xA3 Channel test, response is same as parameters response. Used to keep channel alive. (1 byte)
0xA4 Break, receiver discards all data since last ACK (1 byte)
0xA8 Disconnect, channel is no longer open. Receiver should reply with a disconnect (1 byte)
BS Block size, number of packets to send before expecting a ACK response
T1 Timing parameter 1, time to wait for ACK. T1 should be greater than 4*T3
T2 Timing parameter 2, always 0xFF
T3 Timing parameter 3, interval between two packets
T4 Timing parameter 4, always 0xFF

Timing parameters

Bits76543210
Description Units Scale
Field description
FieldDescription
Units 0x0 0.1ms
0x1 1ms
0x2 10ms
0x3 100ms
Scale Number to scale the units by

Data transmission

The data transmission type has a length of 2 to 8 bytes. It is used for the transmission of actual data/payload bytes.

Data transmission should only occur after channel setup and parameter negotiation.

Byte01234567
Description Op Seq Payload

Field description

FieldDescription
Op 0x0 Waiting for ACK, more packets to follow (i.e. reached max block size value as specified above)
0x1 Waiting for ACK, this is last packet
0x2 Not waiting for ACK, more packets to follow
0x3 Not waiting for ACK, this is last packet
0xB ACK, ready for next packet
0x9 ACK, not ready for next packet
Seq Sequence number, increments up to 0xF then back to 0x0
Payload KWP2000 payload. The first 2 bytes of the first packet sent contain the length of the message.

Example

This example shows how to open a channel to and read measuring block 1 from the engine control unit. Data values and the CAN IDs are in hex.

CAN IDDataFormatDescription
200 01 C0 00 10 00 03 01 Chan setup Initiate channel setup with ECU module, request it use CAN ID 0x300
201 00 D0 00 03 40 07 01 Chan setup ECU module replies, says to use CAN ID 0x740
740 A0 0F 8A FF 32 FF Chan param Tell ECU module to send 16 packets at a time, and set timing parameters
300 A1 0F 8A FF 4A FF Chan param ECU module responds with its parameters
740 10 00 02 10 89 Data Last packet, expecting ACK. Length is 2 bytes. Send KWP2000 startDiagnosticSession request 0x10 with 0x89 as a parameter
300 B1 Data ECU sends ACK response.
300 10 00 02 50 89 Data Last packet, expecting ACK. Length is 2 bytes. ECU sends KWP2000 positive response to startDiagnosticSession
740 B1 Data We send ACK response.
740 11 00 02 21 01 Data Last packet, expecting ACK. Length is 2 bytes. Send KWP2000 readDataByLocalIdentifier request 0x21 with 0x01 as a parameter
300 B2 Data ECU sends ACK response.
300 21 00 1A 61 01 01 00 00 Data Packet to follow, not expecting ACK. Length is 26 bytes. ECU sends KWP2000 positive response to readDataByLocalIdentifier followed by the requested data
300 22 27 00 00 22 00 80 1A Data Packet to follow, not expecting ACK. KWP2000 data continued.
300 23 32 4B 25 02 7A 25 00 Data Packet to follow, not expecting ACK. KWP2000 data continued.
300 14 00 25 00 00 25 00 00 Data Last packet, expecting ACK. KWP2000 data continued.
740 B5 Data We send ACK response.
740 A8 Chan param We send disconnect.

References