Skip to content

Поля фильтра Automotive VAG ​

В профиле VAG используются поля CAN на Physical, поля ISO-TP / TP2.0 на Transport и UDS / KWP2000 на Protocol. В смешанной записи разные протоколы одного уровня можно отбирать одним выражением через or.

UDS — Protocol ​

ПолеТипЗначение и применимость
uds.serviceЦелоеИсходный нормализованный сервис: общий для распознанного запроса, положительного и отрицательного ответа
uds.rawSidЦелоеФактический байт SID сообщения
uds.requestЛогическоеСообщение имеет определённую роль запроса
uds.responseЛогическоеСообщение имеет определённую роль ответа
uds.positiveResponseЛогическоеПоложительный ответ; поле вида ответа неприменимо к запросу
uds.negativeResponseЛогическоеОтрицательный ответ; поле вида ответа неприменимо к запросу
uds.negativeResponseCodeЦелоеNRC отрицательного ответа
uds.didЦелоеDID в распознанных запросах и положительных ответах чтения/записи по идентификатору
uds.ridЦелоеRID в распознанном запросе или положительном ответе RoutineControl
uds.sessionЦелоеСеанс из DiagnosticSessionControl или его положительного ответа; не «текущий сеанс всех сообщений»
uds.addressingСтрокаИзвестный вид адресации: physical или functional; при неизвестном отсутствует
uds.srcЦелоеАдрес источника из контекста диагностики, если известен
uds.dstЦелоеАдрес назначения из контекста диагностики, если известен
uds.dataБайтыПолное прикладное сообщение UDS, включая SID; без служебных байтов ISO-TP

uds.src и uds.dst — адреса из диагностического контекста. Не подменяйте ими CAN ID без проверки адресации конкретной записи. Для CAN ID используйте can.id на Physical или isotp.canId на Transport.

Сервис и SID ​

text
uds.service == 0x22

Условие охватывает распознанный запрос 22 …, положительный ответ 62 … и отрицательный ответ 7F 22 …. Для выбора именно положительного SID:

text
uds.rawSid == 0x62

VIN по DID:

text
uds.service == 0x22 and uds.did == 0xF190

Отрицательный ответ не содержит DID или RID исходного запроса. Фильтр по этим полям не добавляет ответ автоматически. Чтобы видеть и отрицательные ответы сервиса чтения, можно расширить условие:

text
uds.service == 0x22 and (uds.did == 0xF190 or uds.negativeResponse == true)

В такой выборке отрицательный ответ может относиться и к другому DID того же сервиса. Уточняйте связь по последовательности и адресации.

Ожидание завершения обработки:

text
uds.negativeResponseCode == 0x78

0x78 — ResponsePending, а не окончательный отказ. Этот фильтр найдёт сообщение об ожидании, но скроет последующий положительный ответ; для изучения завершения вернитесь к фильтру по сервису.

KWP2000 — Protocol ​

В этом разделе рассматривается KWP2000 поверх TP2.0 по CAN. Поддержка этих полей не означает, что здесь описан захват K-Line.

ПолеТипЗначение и применимость
kwp.serviceЦелоеИсходный нормализованный сервис
kwp.rawSidЦелоеФактический SID сообщения
kwp.requestЛогическоеОпределённая роль запроса
kwp.responseЛогическоеОпределённая роль ответа
kwp.positiveResponseЛогическоеПоложительный ответ; неприменимо к запросу
kwp.negativeResponseЛогическоеОтрицательный ответ; неприменимо к запросу
kwp.negativeResponseCodeЦелоеNRC отрицательного ответа
kwp.localIdЦелоеЛокальный идентификатор данных или процедуры, если он извлечён из сообщения
kwp.commonIdЦелоеОбщий идентификатор данных, если он присутствует и распознан
kwp.srcЦелоеИзвестный логический адрес источника
kwp.dstЦелоеИзвестный логический адрес назначения
kwp.dataБайтыПолное прикладное сообщение KWP2000, включая SID

Сервис чтения по локальному идентификатору:

text
kwp.service == 0x21

Отрицательные ответы обоих протоколов в одной прикладной таблице:

text
uds.negativeResponse == true or kwp.negativeResponse == true

Не заменяйте or на and: одна запись не является одновременно сообщением UDS и KWP2000.

Отдельный переключатель TesterPresent скрывает соответствующие распознанные сообщения UDS/KWP2000 и действует совместно с выражением. Для исследования самого TesterPresent сначала разрешите его показ.

ISO-TP — Transport ​

ПолеТипЗначение и применимость
isotp.canIdЦелоеCAN-идентификатор транспортного сообщения
isotp.frameTypeСтрокаТип, из которого сформирована запись: single, first, consecutive, flowControl
isotp.payloadLengthЦелоеДлина полезной нагрузки ISO-TP без PCI
isotp.flowStatusСтрокаТолько Flow Control: continue, wait, overflow
isotp.blockSizeЦелоеРазмер блока из Flow Control
isotp.stMinЦелоеСырой байт STmin из Flow Control; не универсальное число миллисекунд
isotp.fdЛогическоеСогласованный признак CAN FD всех исходных кадров; при недостаточных или противоречивых данных отсутствует
isotp.brsЛогическоеСогласованный признак BRS исходных кадров; при недостаточных или противоречивых данных отсутствует
isotp.dataБайтыПолезная нагрузка ISO-TP без PCI

Транспортная запись — результат обработки исходных кадров. Число строк и данные здесь не обязаны совпадать с числом и содержимым отдельных CAN-кадров. Для проверки конкретных PCI-байтов переходите на Physical.

Ожидание или переполнение получателя:

text
isotp.frameType == flowControl and isotp.flowStatus in (wait, overflow)

Все Flow Control выбранного CAN ID:

text
isotp.canId == 0x7E8 and isotp.frameType == flowControl

0x7E8 — пример, а не универсальный адрес VAG. Используйте идентификатор из своей записи.

TP2.0 — Transport ​

ПолеТипЗначение и применимость
tp20.channelЦелоеНомер наблюдаемого канала; до его установления может отсутствовать
tp20.frameTypeСтрокаТип сообщения открытия или работы канала; значения ниже
tp20.sequenceЦелоеНомер последовательности данных или подтверждения
tp20.ackЛогическоеПризнак запроса подтверждения в сообщении данных; не признак того, что эта строка сама является подтверждением
tp20.rnrЛогическоеReceiver Not Ready в сообщении подтверждения
tp20.applicationTypeЦелоеТип приложения из установки или известного состояния канала
tp20.dataБайтыСобранные прикладные данные TP2.0, когда они доступны

Значения tp20.frameType:

ГруппаЗначения
Широковещательный обменbroadcastRequest, broadcastResponse
Открытие каналаchannelSetup, channelAcknowledge
Отказ при открытииchannelApplicationTypeNotSupported, channelApplicationTypeTemporarilyNotSupported, channelNoResources
Данные и подтвержденияdata, acknowledge
Параметры соединенияconnectionSetup, connectionAcknowledge
Контроль и завершениеconnectionTest, break, disconnect

Получатель не готов:

text
tp20.rnr == true

Открытие и закрытие канала:

text
tp20.frameType in (channelSetup, channelAcknowledge, disconnect)

Подтверждения:

text
tp20.frameType == acknowledge

Отказ при открытии канала:

text
tp20.frameType in (channelApplicationTypeNotSupported, channelApplicationTypeTemporarilyNotSupported, channelNoResources)

Начинайте захват до установления динамического канала. По записи, начатой в середине передачи, контекст и прикладная расшифровка могут быть неполными.

Продолжить: практический разбор VAG.