Skip to content

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

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

Отбор по типу протокола ​

На обоих уровнях используется одно поле protocol.type. Его значение и подсказки зависят от выбранного уровня; поле относится к протоколу сообщения, а не к физическому адаптеру.

УровеньПолеТипЗначения
Transportprotocol.typeСтрокаisotp, tp20
Protocolprotocol.typeСтрокаuds, kwp2000

Пример: сообщения ISO-TP на уровне Transport.

text
protocol.type == isotp

Пример: сообщения KWP2000 на уровне Protocol.

text
protocol.type == kwp2000

Пример: тип протокола и сервис.

text
protocol.type == uds and uds.service == 0x22

Пример: несколько типов протоколов.

text
protocol.type in (uds, kwp2000)

Подсказки protocol.type предлагают протоколы текущей трассы; отсутствующий тип можно ввести вручную. Обновление списка и влияние фильтра описаны в правилах подсказок.

При диагностике по CAN TP2.0 относится к уровню Transport, а KWP2000 — к уровню Protocol.

Общая диагностическая адресация ​

Поля address.* одинаковы на уровнях Physical (CAN), Transport (ISO-TP) и Protocol (UDS). Значения берутся из выбранного диагностического профиля, с учётом 11-/29-битного формата CAN ID, а не из текста колонки или направления RX/TX. Для TP2.0, KWP2000 и CANopen эти поля не публикуются в каталоге; в смешанном источнике у таких записей значения отсутствуют.

ПолеТипЗначение
address.typeСтрокаphysical, functional, unknown
address.roleСтрокаphysicalRequest, physicalResponse, functionalRequest, unknown
address.groupСтрокаИдентификатор функциональной группы; отсутствует у физических каналов
address.requestIdЦелоеCAN ID физического запроса или функциональной группы
address.responseIdЦелоеCAN ID ответа физического канала; у группы отсутствует

unknown означает, что адресацию не удалось определить: сведения отсутствуют или противоречат друг другу. В этом случае идентификаторы канала и группы отсутствуют. На уровне UDS проверяется также соответствие роли адреса содержимому сообщения: противоречие может быть обнаружено только после декодирования.

Функциональные запросы, включая пассивно принятые:

text
address.type == functional

Запросы и ответы одного физического канала:

text
address.type == physical and address.requestId == 0x714 and address.responseId == 0x77E

Запросы группе координации VAG:

text
address.group == "vag.coordination"

Неустановленные и противоречивые адреса:

text
address.type == unknown

Фильтр группы выбирает её запросы, а не ответы всех предполагаемых участников. Ответы остаются физическими; членство ЭБУ в группе автоматически не выводится. Идентификаторы 0x714/0x77E в примере — конкретная пара, а не универсальное правило VAG. Старое поле uds.addressing удалено: в сохранённых выражениях замените его на address.type.

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.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

Строка на уровне Transport — результат обработки исходных кадров. Число строк и полезная нагрузка здесь не обязаны совпадать с числом и содержимым отдельных 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)

Для разбора динамического канала нужен контекст его установления — см. уровни Tracer в VAG.

Подробнее о сопоставлении сообщений: сервисы и ответы ЭБУ.

Protohaund — независимый программный продукт, не связанный ни с одной из упомянутых в приложении сторонних организаций, не одобренный, не спонсируемый и не сертифицированный ими.Сторонние названия, товарные знаки, наименования продуктов и устройств, названия протоколов и стандартов упоминаются исключительно для указания применимости к автомобилям, поддерживаемых продуктов, технологий, протоколов, форматов или совместимости.Все сторонние товарные знаки и иные обозначения принадлежат соответствующим правообладателям. Их использование не означает какой-либо связи Protohaund с этими правообладателями, а также одобрения или сертификации Protohaund с их стороны.Совместимость ограничена функциями, устройствами, протоколами, стандартами и версиями, явно указанными в документации Protohaund.