Comments 26
Какие еще прикладные протоколы могут быть в автомобиле кроме UDS?
KWP2000(TP20) ещё, и наверно его предшественник TP16.
Чтобы прочитать DID надо использовать сервис 0x2E-Write Data By Identifier (WDBI)
Записать?
вот здесь прям красиво оформлено https://www.csselectronics.com/pages/uds-protocol-tutorial-unified-diagnostic-services поневоле сравнивается ;)
Там инфы про UDS - кот наплакал.
В UDS DTC код занимает 24 бит. Получается может быть 16 777 216 значений.
Существуют ли стандартные константные значения DTC для конкретных неисправностей ?
Можно самому выбирать себе случайные числа для DTC кодов в прошивке прибора?
Просто таблица Table D.1 из спецификации не дает никакой конкретики.
Просто говорит, что используйте для DTC числа из этого интервала 0x000100 .... 0xfffeff
Как раз на днях купил новый мотоцикл, а там теперь только UDS и мои обычные OBD2 донглы уже не работают совсем.
Нашёл реализацию на Питоне (https://github.com/mdabrowski1990/uds) - попробую через USB CAN адаптер чего-нибудь вычитать...
Как раз на днях купил новый мотоцикл
Поздравляю Вас с приобретением!
Вероятно Вам пригодится USB-CAN переходник USB2CANFD_V1
https://habr.com/ru/articles/944112/
Как раз на днях купил новый мотоцикл, а там теперь только UDS и мои обычные OBD2 донглы уже не работают совсем.
Чем протокол UDS отличается от протокола OBD-II?
В UDS протоколе есть аналог MAC адреса?
С каким именно периодом надо отправлять UDS пакет TesterPresent?
Я в своём софте отправляю с периодом 1900 мс. Значения взято из утилиты прошивки Volvo SDA. Для более старых протоколов видел значения в 4 секунды. Кстати, есть такие штуки https://www.drive2.ru/l/676982229557064902/ можно сделать более универсальную, чтобы можно было те же прошивки обновлять через неё. Сам обдумываю что-то подобное сделать на базе ESP32-C6, чипы дешёвые и есть поддержка 2 КАН шин. Если ещё и k-line реализовать, то вообще универсальная штука будет. Хоть диагностику, хоть прошивку можно делать, хоть отправку сообщений в шину для всяких действий по условиям.
UDS плох тем, что для размерности и единиц измерения выделили одно и то же битовое поле. Происходит пере использование переменной.
Это мало того, что выглядит как костыль, дак еще и усложняет софт, как на стороне клиента, так и на стороне прошивки.
Вот есть в UDS пакет InputOutputControlByIdentifier и в нем есть механизм кратковременной подмены значения для конкретного DID.
Здорово! Отличная идея!
Вот только спецификация почему-то не конкретизирует сколько секунд надо считать под термином shortTermAdjustment. ShortTerm это сколько? 1 сек? 2 сек? 4 сек?

Казалось бы надо добавить в структуру пакета поле для указания timeOut, однако его в пакете по стандарту просто нет.
Вот такие пирожки…
1--Что такое физическая адресация (physically addressed) в контексте протокола UDS?
2--В каком сервисе UDS фигурирует физический адрес модуля?
3--Сколько бит в уникальном физическом адресе UDS модуля ?
4--Сколько бит в функциональном адресе UDS ?
5--Что такое функциональная адресация (functionally addressed)в контексте протокола UDS?
Почему спека UDS оперирует какими-то волшебными 8ми байтовыми адресами, если в ID CAN пакета всего максимум 3,625 байт (29 бит)?

Откуда UDS серверу (ECU) брать оставшиеся 35 бит адреса (8*8 - 29 = 35)?
Существует ли какая-нибудь готовая клиентская Windows утилита (c GUI или консольный вариант), которая опрашивает ECU по CAN через UDS протокол?
Утилита UDS-client, которая работает на прикладном уровне модели OSI и умеет посылать и синтаксически разбирать (парсить) ответные UDS пакеты.
Чтобы, условно, прочитать стандартные в UDS DID параметры.
Такие как VIN номер, серийный номер ECU, дату производства ECU, дату программирования ECU, название производителя ECU и прочее.
Сколько бит в DTC (Diagnostic Trouble Code) коде UDS протокола?
Зачем в UDS протоколе потребовался отдельный сложных механизм TransferData, если уже были простые атомарные пакеты ReadMemoryByAddress ( 0x23) и WriteMemoryByAddress (0x3D) ?
Какого размера должен быть security seed в UDS? 2 байт? 4 байт? 8 байт?
В спеке протокола явно это не прописано.
Мне одному кажется, что в спеке на протокол UDS противоречие или это опечатка?
ISO 14229-1:2013(E).

ISO 14229-1 Second edition 2013-03-15
Как быть?
Надо или не надо в поле size указывать число отличное от нуля для типа unit/format?

Есть ли в UDS протоколе сервис, который возвращает массив известных DID и их количество?
А то проверять DID отправляя каждый раз запрос ReadDataByIdentifier SID=0x22 и проверять все 65536 возможных ответов с таймаутом 100ms - это как-то уж очень долго (110 мин).

Обзор Автомобильного Протокола UDS [ISO 14229-1]