Appearance
Поля фильтра 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 == 0x62VIN по 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 == 0x780x78 — 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 == flowControl0x7E8 — пример, а не универсальный адрес 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.