Унифицированные диагностические службы ( UDS ) — это диагностический протокол связи, используемый в электронных блоках управления (ЭБУ) в автомобильной электронике, который указан в ISO 14229-1. [1] Он получен из ISO 14230-3 ( KWP2000 ) и ныне устаревшего ISO 15765 -3 (Диагностическая связь по сети контроллеров (DoCAN) [2] ). «Унифицированный» в этом контексте означает, что это международный, а не специфичный для компании стандарт. К настоящему времени этот протокол связи используется во всех новых ЭБУ, производимых поставщиками первого уровня производителей оригинального оборудования (OEM), и включен в другие стандарты, такие как AUTOSAR . ЭБУ в современных транспортных средствах управляют практически всеми функциями, включая электронный впрыск топлива (EFI), управление двигателем , трансмиссией, антиблокировочной тормозной системой, дверными замками, торможением, работой окон и многим другим.
Диагностические инструменты способны связываться со всеми блоками управления, установленными в автомобиле, в котором включены службы UDS. В отличие от протокола шины CAN , который использует только первый и второй уровни модели OSI , UDS использует пятый и седьмой уровни модели OSI. Идентификатор службы (SID) и параметры, связанные со службами, содержатся в полезной нагрузке кадра сообщения.
Современные автомобили имеют диагностический интерфейс для диагностики вне бортовой сети, что позволяет подключать компьютер (клиент) или диагностический инструмент, который называется тестером, к системе связи автомобиля. Таким образом, запросы UDS могут быть отправлены контроллерам, которые должны предоставить ответ (он может быть положительным или отрицательным). Это позволяет опрашивать память неисправностей отдельных блоков управления, обновлять их новой прошивкой, иметь низкоуровневое взаимодействие с их оборудованием (например, включать или выключать определенный выход) или использовать специальные функции (называемые процедурами), чтобы попытаться понять среду и условия работы ЭБУ, чтобы иметь возможность диагностировать неисправное или иным образом нежелательное поведение.
UDS использует транспортный уровень ISO-TP (ISO 15765-2). Американский стандарт OBD-II также использует ISO-TP. Поскольку OBD-II использует сервисные номера 0x01-0x0A, UDS использует сервисные номера, начинающиеся с 0x10, чтобы избежать перекрытия.
SID (идентификатор службы)
Группа функций | Запросить SID | Ответ SID | Услуга | Описание |
---|---|---|---|---|
Диагностика и управление коммуникациями | 0x10 | 0x50 | Диагностический контроль сеанса | UDS предлагает уровни доступа, называемые «сессиями». Различные сессии обычно предлагают разные уровни доступа к службам и/или подфункциям. При нормальном использовании (при запуске) сессия должна быть 0x01 Default Session . Эта служба «Управление диагностическим сеансом» позволяет пользователю переключаться между доступными сеансами, специфичными для ЭБУ. Некоторые сеансы могли быть не реализованы. Другие могут иметь меры контроля доступа, требующие авторизации через такие службы, как 0x27 Security Access или 0x29 Authentication . Кроме того, сеансы могут требовать соблюдения определенных условий эксплуатации, таких как «предварительные» или «загрузочные режимы» производителя, которые отделены от UDS. Стандартными являются следующие сеансы, но сеансы, специфичные для производителей и поставщиков транспортных средств, часто проводятся совместно:
|
0x11 | 0x51 | Сброс ЭБУ | Служба "ECU reset" используется для перезапуска блока управления (ECU). В зависимости от аппаратного обеспечения блока управления и его реализации могут использоваться различные формы сброса:
Опять же, существуют зарезервированные значения, которые могут быть определены для конкретного использования производителями и поставщиками транспортных средств. | |
0x14 | 0x54 | Очистить диагностическую информацию | Очищает диагностические коды неисправностей (DTC) из памяти ЭБУ. Группировка DTC используется для приблизительного определения мест неисправностей в недокументированных ЭБУ.
Как и другие подфункции в этом списке, существуют зарезервированные значения, специфичные для производителя, которые предлагают уникальные и/или особые функциональные возможности. | |
0x27 | 0x67 | Безопасность доступа | Проверка безопасности доступна для включения наиболее критичных для безопасности служб. Для этой цели генерируется "Seed" и отправляется клиенту блоком управления. Из этого "Seed" клиент должен вычислить "Key" и отправить его обратно блоку управления, чтобы разблокировать критичные для безопасности службы. | |
0x28 | 0x68 | Контроль связи | С помощью этой услуги можно отключить как отправку, так и получение сообщений в блоке управления. | |
0x29 | 0x69 | Аутентификация | Обновление (2020) стандарта добавило эту службу для обеспечения стандартизированного подхода к более современным методам аутентификации, чем те, которые разрешены службой Security Access (0x27), включая двунаправленную аутентификацию с обменом сертификатами на основе PKI . | |
0x3E | 0x7E | Тестер присутствует | Если в течение длительного времени не происходит обмена сообщениями с клиентом, блок управления автоматически выходит из текущего сеанса и возвращается к «Сеансу по умолчанию» и может перейти в спящий режим. Поэтому существует дополнительная служба, цель которой — подать сигнал устройству о том, что клиент все еще присутствует. | |
0x83 | 0xC3 | Параметры времени доступа | В коммуникации между контроллерами и клиентом должны соблюдаться определенные временные интервалы. Если они превышены, но сообщение не отправлено, следует предположить, что соединение было прервано. Эти временные интервалы можно вызвать и изменить. | |
0x84 | 0xC4 | Защищенная передача данных | ||
0x85 | 0xC5 | Настройки DTC управления | Включает, отключает или иным образом управляет передачей кодов неисправностей. Это полезно при выполнении работ по техническому обслуживанию или модификации транспортного средства, чтобы избежать аномального или раздражающего поведения, например, звукового сигнала на панели приборов или активации систем безопасности в ответ на внешний код неисправностей. Как и большинство настроек UDS, это обычно не сохраняется после перезагрузки.
| |
0x86 | 0xC6 | Ответ на событие | ||
0x87 | 0xC7 | Контроль ссылок | Service Link Control используется для установки скорости передачи данных диагностического доступа. Обычно он реализуется только на центральном шлюзе. | |
Передача данных | 0x22 | 0x62 | Чтение данных по идентификатору | С помощью этой службы можно получить одно или несколько значений блока управления. Это может быть информация всех видов и разной длины, например, номер детали или версия программного обеспечения. Можно запросить динамические значения, такие как текущее состояние датчика. Каждое значение связано с идентификатором данных (DID) от 0 до 65535; например, DID VIN — это 61840d (0xF190). Обычные сигналы CAN предназначены для информации, которую некоторые ЭБУ используют в своей функциональности. Данные DID отправляются только по запросу и предназначены для информации, которую не использует ни один ЭБУ, но которую может использовать сервисный инструмент или тестер программного обеспечения. |
0x23 | 0x63 | Чтение памяти по адресу | Прочитать данные из физической памяти по указанному адресу. Эта функция может использоваться инструментом тестирования для чтения внутреннего поведения программного обеспечения. | |
0x24 | 0x64 | Чтение данных масштабирования по идентификатору | ||
0x2A | 0x6A | Чтение данных по идентификатору Периодически | С помощью этой службы значения периодически отправляются блоком управления. Отправляемые значения должны быть определены только с использованием "Dynamically Define Data Identifier". | |
0x2С | 0x6С | Динамически определить идентификатор данных | Эта услуга предлагает возможность исправления для указанного устройства пула идентификаторов данных (DID) для настройки другого идентификатора данных. Обычно это комбинация частей разных DID или просто конкатенация полных DID. Запрашиваемые данные могут быть сконфигурированы или сгруппированы следующим образом:
| |
0x2E | 0x6E | Запись данных по идентификатору | С тем же идентификатором данных (DID) значения также могут быть изменены. В дополнение к идентификатору отправляется новое значение. | |
0x3D | 0x7D | Запись памяти по адресу | Услуга «Запись памяти по адресу» позволяет внешнему диагностическому инструменту записывать информацию в ЭБУ в одну или несколько смежных ячеек памяти. | |
Передача сохраненных данных | 0x14 | 0x54 | Очистить диагностическую информацию | Удалить все сохраненные коды неисправностей |
0x19 | 0x59 | Прочитать информацию о DTC | DTC означает « Диагностические коды неисправностей ». Каждый код неисправности, обработанный неисправностью блока управления, сохраняется со своим собственным кодом в памяти ошибок и может быть прочитан в любое время. В дополнение к ошибке будет сохранена дополнительная информация, которую также можно прочесть. | |
Управление входом/выходом | 0x2F | 0x6F | Управление входом и выходом по идентификатору | Эта услуга позволяет осуществлять внешнее вмешательство в работу системы по внутренним/внешним сигналам через диагностический интерфейс. Указав так называемые байты опций, можно задать дополнительные условия для запроса, указаны следующие значения: ReturnControlToECU : Устройство должно вернуть себе управление указанными сигналами. ResetToDefault : Тестер предлагает сбросить сигналы до общесистемного значения по умолчанию. Зафиксировать текущее состояние : устройство зафиксирует текущее значение сигнала. ShortTermAdjustment : Устройство будет использовать предоставленное значение для сигнала |
Удаленная активация рутины | 0x31 | 0x71 | Рутинный контроль | Могут быть выполнены все виды рутинных услуг управления. Существует три различных типа сообщений:
Можно указать параметры сообщения запуска и остановки. Это позволяет реализовать все возможные услуги, специфичные для проекта. |
Загрузить / Скачать | 0x34 | 0x74 | Запросить загрузку | Загрузка нового программного обеспечения или других данных в блок управления осуществляется с помощью «Запроса на загрузку». Здесь указывается местоположение и размер данных. В свою очередь, тестер указывает, насколько большими могут быть пакеты данных. |
0x35 | 0x75 | Запросить загрузку | Услуга "запросить загрузку" практически идентична услуге "запросить загрузку". С помощью этой услуги программное обеспечение из блока управления передается в тестер. Местоположение и размер должны быть указаны. Опять же, размер блоков данных указывается тестером. | |
0x36 | 0x76 | Передача данных | Для фактической передачи данных используется услуга «Передача данных». Эта услуга используется как для загрузки, так и для скачивания данных. Направление передачи заранее уведомляется услугой «Запрос на загрузку» или «Запрос на загрузку». Эта услуга должна попытаться отправить пакеты максимальной длины, как указано в предыдущих услугах. Если набор данных больше максимального, услугу «Передача данных» необходимо использовать несколько раз подряд, пока все данные не будут получены. | |
0x37 | 0x77 | Запросить трансфер Выход | Передача данных может быть «завершена» при использовании сервиса «Transfer Exit». Этот сервис используется для сравнения между блоком управления и тестером. Когда он запущен, блок управления может ответить отрицательно на этот запрос, чтобы остановить запрос на передачу данных. Это будет использоваться, когда объем данных (установленный в «Request Download» или «Upload Request») не был передан. | |
0x38 | 0x78 | Запросить передачу файла | Эта служба используется для инициирования загрузки файла с клиента на сервер или загрузки с сервера на клиент. Кроме того, эта служба предоставляет информацию о файловой системе. | |
0x7F | Отрицательный ответ | Этот ответ дается, когда запрос на обслуживание не может быть выполнен, например, из-за неподдерживаемого идентификатора данных. Будет включен отрицательный код ответа. |
Отрицательный ответ от ECU содержит SID 0x7F и два полезных байта: SID запроса и код ошибки. Эти коды можно найти в свободном доступе (например, BusMaster), а также в самом ISO.
НРЦ | Описание |
---|---|
0x10 | Общий отказ |
0x11 | Услуга не поддерживается |
0x12 | Подфункция не поддерживается |
0x13 | Неправильная длина сообщения или неверный формат |
0x14 | Ответ слишком длинный |
0x21 | Занято, повторите запрос |
0x22 | Условия неверны |
0x24 | Ошибка последовательности запроса |
0x25 | Нет ответа от компонента подсети |
0x26 | Ошибка препятствует выполнению запрошенного действия |
0x31 | Запрос вне диапазона |
0x33 | Доступ по соображениям безопасности запрещен |
0x34 | Аутентификация не удалась |
0x35 | Неверный ключ |
0x36 | Превышено количество попыток |
0x37 | Требуемое время задержки не истекло |
0x38 | Требуется безопасная передача данных |
0x39 | Безопасная передача данных не допускается |
0x3A | Безопасная проверка данных не удалась |
0x50 | Проверка сертификата не пройдена, неверный период времени |
0x51 | Проверка сертификата не пройдена, недействительная подпись |
0x52 | Проверка сертификата не пройдена, недействительная цепочка доверия |
0x53 | Проверка сертификата не пройдена, недопустимый тип |
0x54 | Проверка сертификата не удалась, неверный формат |
0x55 | Проверка сертификата не пройдена, недопустимое содержимое |
0x56 | Проверка сертификата не пройдена, недопустимая область действия |
0x57 | Проверка сертификата не удалась, недействительный сертификат |
0x58 | Проверка права собственности не удалась |
0x59 | Расчет задачи не удался |
0x5А | Не удалось установить права доступа |
0x5Б | Не удалось создать/вывести сеансовый ключ |
0x5С | Не удалось использовать данные конфигурации |
0x5D | Деаутентификация не удалась |
0x70 | Загрузить загрузку не принято |
0x71 | Передача данных приостановлена |
0x72 | Общий сбой программирования |
0x73 | Неправильный порядковый номер блока |
0x78 | Запрос получен правильно, ответ ожидается |
0x7E | Подфункция не поддерживается в активном сеансе |
0x7F | Служба не поддерживается в активном сеансе |
0x81 | Слишком высокие обороты |
0x82 | Слишком низкие обороты |
0x83 | Двигатель работает. |
0x84 | Двигатель не работает. |
0x85 | Слишком малое время работы двигателя |
0x86 | Температура слишком высокая |
0x87 | Температура слишком низкая |
0x88 | Скорость автомобиля слишком высокая |
0x89 | Скорость автомобиля слишком низкая |
0x8A | Дроссель/педаль слишком высоко |
0x8Б | Дроссель/педаль слишком низко |
0x8С | Диапазон передач не в нейтральном положении |
0x8D | Диапазон передач не включен |
0x8F | Тормозной выключатель не замкнут |
0x90 | Рычаг переключения передач не в положении парковки |
0x91 | Муфта гидротрансформатора заблокирована |
0x92 | Напряжение слишком высокое |
0x93 | Напряжение слишком низкое |
0x94 | Ресурс временно недоступен |