7.3.2. Контроллер сопряжения персонального компьютера с бортовой системой самодиагностики OBD II по протоколам стандартов SAE (PWM и VPW) и ISO 9141-2
|
Стандарту VPW отвечают модели производства компании GM, стандарту PWM - Ford, стандарту ISO 9141-2 - азиатские и европейские модели.
|
Общие данные
Рассматриваемое устройство представляет собой микроконтроллер, выполненный по технологии КМОП (CMOS).
|
Контроллер НЕ предназначен подключения к бортовым системам самодиагностики первого поколения (OBD I)!
|
Устройство выполняет роль простейшего сканера и предназначено для считывания диагностических кодов и данных системы OBD II (обороты двигателя, температура охлаждающей жидкости и всасываемого воздуха, нагрузочные характеристики, расход поступающего в двигатель воздуха и т.п.) в рамках стандарта SAE J1979 через шину любого исполнения (PWM, VPW и ISO 9141-2).
Основное предназначение
Для подключения к компьютеру (РС) достаточно 3-жильного провода, подключение к диагностическому разъему осуществляется 6-жильным проводом. Напряжение питания подается на контроллер через 16-контактный диагностический разъем OBD.
Принципиальная схема контроллера сопряжения РС с системой OBD II
Рекомендации по применению
Для подключения устройства к автомобилю может быть использован неэкранированный кабель, длиной не более 1.2 м, что имеет особое значение при использовании протокола PWM. При использовании кабеля большей длины следует уменьшить сопротивление резисторов на входе устройства (R8 и R9 или R15). При использовании экранированного кабеля, экран следует отключить с целью снижения емкости.
Кабель для подключение к последовательному порту компьютера также может быть неэкранированным. Устройство стабильно работает с кабелем длиной до 9 м. При значительно большей длине кабеля следует использовать более мощный коммуникатор RS 232.
Топология электрических соединений произвольна. При повышенной влажности применяйте дополнительные шунтирующие конденсаторы.
Бесплатное программное обеспечение (броузер) для считывания кодов и данных может быть скачано с сайтов производителей, либо сайта нашего издательства (arus.spb.ru), и предназначено для использования под DOS. Незначительный размер программного приложения в варианте «под DOS» позволяет вместить его на загрузочную дискету DOS и использовать даже на компьютерах, оснащенных несовместимым с DOS программным обеспечением. Необязательным условием является даже наличие в компьютере жесткого диска.
Общие принципы обмена данными
|
Если противное не оговорено особо, все числа приведены в 16-ричном формате (hex), десятичный формат обозначается меткой dec.
|
Обмен данными идет по трехпроводному последовательному соединению, без применения инициализационного обмена служебными сообщениями (handshaking). Устройство прослушивает канал на наличие сообщений, выполняет принимаемые команды и передает результаты на персональный компьютер (PC), после чего немедленно возвращается в режим прослушивания. Входящие в контроллер и исходящие из него данные организованы в виде цепочки последовательно идущих друг за другом байтов, первый из которых является контрольным. Обычно контрольный байт представляет собой число от 0 до 15 dec (или 0-F hex), описывающее количество следующих далее информационных байтов. Так, например, 3-байтная команда будет выглядеть следующим образом: 03 (контрольный байт), 1-й байт, 2-й байт, 3-й байт. Подобный формат используется как для входящих команд на опрос бортовой системы самодиагностики, так и для исходящих сообщений, содержащих запрошенную информацию. Следует заметить, что в контрольном байте используются лишь четыре младших бита, - старшие биты зарезервированы под некоторые специальные команды и могут быть использованы PC при инициализации соединения с контроллером и согласовании протокола передачи данных, а также контроллером для контроля ошибок передачи. В частности, в случае ошибки при передаче, контроллер производит установку старшего значащего бита (MSB) контрольного байта в единицу. При успешной передаче все четыре старших бита устанавливаются в ноль.
|
Существуют отдельные исключения из правил использования контрольного байта.
|
Инициализация контроллера и бортовой системы самодиагностики
Для начала обмена данными PC должен произвести установку соединения с контроллером, затем инициализировать контроллер и канал данных OBD II.
Установка соединения
После подсоединения контроллера к PC и диагностическому разъему OBD должна быть произведена его инициализация с целью предотвращения «зависаний», связанных с шумами в последовательных линиях в случае если их подсоединение было произведено до включения питания контроллера. Одновременно производится простейшая проверка активности интерфейса. В первую очередь посылается однобайтовый сигнал 20 (hex), воспринимаемый контроллером как команда на установку соединения. В ответ контроллер вместо контрольного высылает единственный байт FF hex (255 dec) и переходит в режим ожидания приема данных. Теперь PC может переходить к инициализации канала данных.
|
Данный случай является одним из немногих, когда контроллер не использует контрольный байт.
|
Инициализация
На данном этапе производится инициализация протокола, по которому будет производиться обмен данными, а в случае протокола ISO - инициализация бортовой системы. Обмен данными производится по одному из трех протоколов: VPW (General Motors), PWM (Ford) и ISO 9141-02 (азиатские/европейские производители).
|
Существует множество исключений: так, например, при опросе некоторых моделей автомобилей Mazda может использоваться фордовский протокол PWM. Таким образом, при возникновении проблем передачи следует в первую очередь попытаться воспользоваться каким-либо другим протоколом.
|
Выбор протокола производится передачей комбинации, состоящей из контрольного байта 41(hex) и следующего непосредственно за ним байта, определяющего тип протокола: 0 = VPW, 1 = PWM, 2 = ISO 9141. Так, например, по команде 41(hex) 02(hex) производится инициализация протокола ISO 9141.
В ответ контроллер высылает контрольный байт и байт состояния. Установка MSB контрольного байта говорит о наличии проблем, при этом следующий за ним байт состояния будет содержать соответствующую информацию. При успешной инициализации высылается контрольный байт 01(hex), указывающий на то, что далее следует верификационный байт состояния. В случае протоколов VPW и PWM верификационный байт представляет собой простое эхо байта выбора протокола (0 или 1, соответственно), при инициализации протокола ISO 9141 это будет цифровой ключ, возвращаемый бортовым процессором и определяющий, какая именно из двух незначительно отличающихся друг от друга версий протокола будет использоваться.
|
Цифровой ключ имеет чисто информационное назначение.
|
Следует заметить, что инициализация протоколов VPW и PWM происходит значительно быстрее, так как требует лишь передачи соответствующей информации контроллеру. На моделях, отвечающих стандарту ISO, инициализация занимает порядка 5 секунд, затрачиваемых на обмен контроллера информацией с бортовым процессором, производимый со скоростью 5 бод. Следует обратить внимание читателя, что на некоторых моделях автомобилей семейства ISO 9141 инициализация протокола приостанавливается, если запрос на выдачу данных не будет передан в течение 5-секундного интервала, - сказанное означает, что PC должен производить автоматическую выдачу запросов каждые несколько секунд, даже в холостом режиме.
После установки соединения и инициализации протокола начинается штатный обмен данными, состоящими из поступающих от PC запросов и выдаваемых контроллером ответов.
Порядок обмена данными
Функционирование контроллера при использовании протоколов семейства ISO 9141-2 и SAE (VPW и PWM) происходит по несколько различным сценариям.
Обмен по протоколам SAE (VPW и PWM)
При обмене данными по данным протоколам происходит буферизация лишь одного кадра данных, что означает необходимость конкретизации подлежащего захвату или возврату кадра. В некоторых (редких) случаях бортовой процессор может передавать пакеты, состоящие более чем из одного кадра. В такой ситуации запрос должен повторяться до тех пор, пока все кадры пакета не будут приняты.
Запрос
всегда формируется следующим образом: [Контрольный байт], [Запрос по стандарту SAE], [Номер кадра]. Как уже упоминалось выше, контрольный байт обычно представляет собой число, равное полному количеству следующих за ним байтов. Запрос оформляется в соответствии со Спецификациями SAE J1950 и J1979 и состоит из заголовка (3 байта), последовательности информационных байтов и байта контроля ошибки (CRC). Заметим, что в то время как информация по запросу формируется в строгом соответствии со Спецификациями SAE, потребителем контрольного байта и номера кадра является контроллер сопряжения.
При успешном завершении процедуры ответное сообщение
всегда имеет следующий формат: [Контрольный байт], [Ответ по стандарту SAE]. Контрольный байт, как и ранее, определяет количество следующих за ним информационных байтов. Ответ в соответствии с требованиями стандарта SAE состоит из заголовка (3 байта), цепочки информационных байтов и байта CRC.
При сбое
высылается 2-байтное
ответное сообщение:
[Контрольный байт], [Байт состояния]. При этом в контрольном байте производится установка MSB. Четыре младших бита формируют число 001, свидетельствующее о том, что за контрольным следует единственный байт, - байт состояния. Данная ситуация может возникать достаточно часто, так как Спецификации допускают возможность невыдачи бортовым процессором данных, а также передачу неверных данных в случае, когда запрос не соответствует поддерживаемому производителями автомобиля стандарту. Возможна также ситуация, когда запрашиваемые данные отсутствуют в оперативной памяти процессора в текущий момент времени. Когда контроллер не получает ожидаемого ответа, или получает поврежденные данные, производится установка MSB контрольного байта, а следом за контрольным выдается байт состояния.
При коллизиях в шине интерфейс вырабатывает единственный байт 40 (hex), являющийся контрольным байтом с обнуленным младшим битом. Подобная ситуация может возникать достаточно часто при загрузке автомобильной шины сообщениями более высокого чем у диагностических данных приоритета, - вычислительное устройство должно повторить исходный запрос.
Обмен по протоколам ISO 9141-2
Стандарт ISO 9141-2 используется большинством азиатских и европейских производителей автомобильной техники. Структура формируемого PC запроса мало чем отличается от используемой в стандартах SAE с той лишь разницей, что контроллер не нуждается в информации о номере кадра и соответствующая информация присутствовать в пакете не должна. Таким образом,
запрос
всегда состоит из контрольного байта и следующей за ним цепочки информационных байтов, включающих в себя контрольную сумму. В качестве
ответного сообщения
контроллер просто ретранслирует сформированные бортовым процессором сигналы. Контрольный байт в ответном сообщении отсутствует, поэтому PC воспринимает поступающую информацию непрерывно до тех пор, пока цепочка не прерывается паузой длиной 55 миллисекунд, сообщающей о завершении информационного пакета. Таким образом, ответное сообщение может состоять из одного или более кадров в соответствии с требованиями Спецификаций SAE J1979. Контроллер не производит анализ кадров, не отбрасывает недиагностические кадры и т.д. PC должен собственными силами производить обработку поступающих данных с целью вычленения отдельных кадров путем анализа заголовочных байтов.
|
Ответы на большинство запросов состоят из единственного кадра.
|
Модификации, произведенные в интерфейсных контроллерах последних версий
Ниже приведены основные отличия процесса передачи данных по протоколам SAE и ISO 9141, характерные для интерфейсных контроллеров последних версий, а также порядок передачи данных по протоколу ISO 14230:
- Стандарт ISO 9141: Добавлен адресный байт;
- Стандарт ISO 9141: Осуществляется возврат не одного, а обоих ключевых байтов (дополнительный байт возвращается также в режимах SAE, однако здесь он не используется);
- Добавлена поддержка протокола ISO 14230.
|
Все информационные байты передаются в 16-ричном формате.
|
|
Символом XX означается неопределенный, зарезервированный или неопознанный байт.
|
Установка соединения
Порядок установки соединения не изменился:
Отправка: 20
Прием: FF
Выбор протокола
Применяется следующая схема:
VPW:
Отправка:
41, 00
Прием:
02, 01, XX
PWM:
Отправка:
41, 01
Прием:
02, 01, XX
ISO 9141:
Отправка:
42, 02, adr, где: adr - адресный байт (обычно 33 hex)
Прием:
02, К1, К2, где К1, К2 - ключевые байты ISO
Или:
82, XX, XX (ошибка инициализации ISO 9141)
ISO 14230 (быстрая инициализация):
Отправка:
46, 03, R1, R2, R3, R4, R5, где: R1 ÷ R5 - сообщение о начале запроса ISO 14230 на установку соединения, обычно R1 ÷ R5 = С1, 33, F1, 81, 66
Прием:
S1, S2, ………, где S1, S2, ……… - сообщение о начале ответа ISO 14230 на установку соединения
|
Могут передаваться последовательно более одного ECU. В качестве ответа может использоваться отрицательный код ответа.
|
Типичный положительный ответ выглядит следующим образом:
S1, S2, ……. = 83, F1, 10, С1, Е9, 8F, BD
ISO 14230 (медленная инициализация):
Аналогично ISO 9141
Замечания и комментарии
Если планируется использование контроллера для передачи данных лишь по какому-либо одному или двум из протоколов, лишние компоненты могут быть исключены (см. схему выше). Например, при организации схемы под протокол VPW (GM) в проводе подключения контроллера к автомобилю потребуются лишь три жилы электропроводки (клеммы 16, 5 и 2).
Если не используется протокол PWM, могут быть исключены элементы R4, R6, R7, R8, R9, R10, Т1, Т2 и D1.
При отказе от обмена по протоколу ISO исключению подлежат элементы: R15, R16, R17, R18, R19, R21, Т4 и Т5.
Отказ от использования протокола VPW позволяет исключить следующие элементы: R13, R14, R23, R24, D2, D3 и Т3.
Применены угольно-пленочные резисторы с 5-процентным допуском сопротивления.
Обратите внимание на отсутствие кнопки аварийной перезагрузки (RESET), в случае необходимости такая перезагрузка может быть произведена путем отсоединения контроллера от автомобильного разъема (перезагрузка интерфейсного процессора произойдет автоматически). Перезапуск программного обеспечения на PC приводит к новой инициализации интерфейса.
|