Keyword Protocol 2000, сокращённо KWP2000, является спецификацией канала связи с диагностическим оборудованием транспортных средств (On-Board Diagnostics). KWP2000 протокол охватывает несколько уровней в OSI модели: физический уровень, уровень канала передачи данных, прикладной уровень, а также сеансовый уровень) с точки зрения запуска, поддержания и завершение сеанса связи).
Формат данных отдельных команд, в большинстве случаев, зависит от выбора реализации.
Стандарт (OBD II) регламентирует обязательный минимум параметров, вывод которых должен поддерживаться блоком управления по заводскому (ОЕМ) протоколу, в том числе и по KWP2000:
KWP2000 стандартизован Международной организации по стандартизации, как ISO 14230.
Первый основной физический уровень для KWP2000 идентичен ISO 9141 с двунаправленной последовательной линией связи на одном проводе и называется К-линией. Кроме того, может быть дополнительная L-линия для «пробуждения». Скорость передачи данных от 1,2 до 10,4 Кбит/сек, при этом сообщение может содержать до 255 байт данных.
При реализации на К-линии физического уровня, KWP2000 требует специальных сигналов пробуждения: 5 Baud init или Fast init. Оба эти методы требуют WakeUp синхронизации задержек сигнала K-шины и реализуются специальным программным обеспечением.
Стандарты ISO 14230 и ISO 9141 схожи по аппаратной реализации линий передачи данных (ISO 14230 является развитием ISO 9141[1]). Различаются они требованиями к электрическим параметрам линии, а также протоколами верхних уровней. Сканер, использующий стандарт ISO 9141, обычно может работать и с ISO 14230, но не наоборот.
ISO 14230 (Road vehicles — Diagnostic systems — Keyword Protocol 2000) структурирован следующим образом:
На физическом уровне, в соответствии с ISO 14230-1, KWP2000 реализован в виде двунаправленной однопроводной K-Line шины передачи данных. K-Line предназначена исключительно для выполнения диагностических функций в двунаправленных соединениях с двумя участниками. Напряжение сигнала является рабочим напряжением транспортного средства по отношению к его «массе». Максимальная длина K-Line не специфицирована[2].
На уровне обмена данными, в соответствии с ISO 14230-3, KWP2000 работает по асинхронной схеме передачи данных с управлением доступа в режиме «задающий/ведомый», при этом использует однонаправленный протокол передачи, который позволяет передавать данные и команды с проверкой на корректность, но без исправления ошибок.
Структура сообщения, в общем виде, состоит из следующих частей: 1 start bit; 8 data bits; 1 stop bit; опционально контрольная сумма (Checksum). В свою очередь, какие данные передаёт блок управления, зависят от производителя автомобиля.
Скорость передачи K-Line шины по протоколу KWP2000 составляет от 1,2 до 10,4 Кбит/сек[3].
Согласно ISO 14230-4 протокол установления соединения:
— при «Fast init» (100 ms, Bitrate always 10,4 kBit/s):
— при «5 Baud init»:
Стандарт ISO-9141-2 идентифицируется наличием контакта 7 в диагностическом разъеме (K-line) и отсутствием 2 и/или 10 контактов в диагностическом разъеме OBD-II. Используемые выводы — 4, 5, 7, 15 (может не быть), 16.
KWP2000 также совместим с ISO 11898 (Controller Area Network) и поддерживает высокую скорость передачи данных до 1 Мбит/с.
Использование KWP2000 на CAN с ISO 15765 Transport/Network layers является наиболее распространенным. Кроме того, используя KWP2000 на CAN, не требуется специальной функции пробуждения.
KWP2000 может быть реализован на CAN, используя только service layer и session layer; или с использованием всех слоев (заголовок и контрольная сумма заключены в CAN кадре). Однако при использовании всех слоев KWP2000 является избыточным, в отличие от ISO 15765, который обеспечивается своим Transport/Network layers.