Сейчас посетителей в клубе: 1, из них зарегистрированных: 1

Как самостоятельно продиагностировать машину на ошибки

23.09.10

Общие моменты


Среди производителей автомобилей, пожалуй, только ниссан тщательно скрывает принципы работы и протоколы обмена своей диагностической системы. Более того, всё, что связано с этой диагностической системой, запатентовано и, как следствие, практически никто не выпускает диагностического оборудования для ниссана.

В некоторых ниссанах есть разъем OBD и некоторые функции этого протокола поддерживаются. В более новых ниссанах линия OBD-II выведена прямо на диагостический разъем.


Soft разный-полезный


Patent - Патент полностью и некоторые картинки к нему.
Dasmx130.Zip - дизассемблер для 6303
RealTerm - отличный Serial Terminal, рекомендую для исследований протокола.
HD6303 - описание процессоров 6303 (скан в pdf формате)
64F7055F40 - описание процессора ECU Nissan Maxima A33

Интерфейс для соединения PC & ECU


      В какой-то момент мне стало интересно, что-же там такого сложного и секретного в этой системе? И начался поиск. Сначала я нашел японские патенты, которые в общем смысле рассказывали про систему диагностики и раскрывали принципы работы. Но там не было ни строчки про физический протокол обмена. Потом попалась ссылка на австралийских кудесников, которые сделали-таки интерфейс к PC для подключения к ECU (ConZult), но категорически отказались давать какую-либо информацию о тонкостях работы интерфейса и нагло продают эту штуку за 300 баксов всем желающим. Однако внешний вид этой коробочки размером 3х5 см. натолкнул меня на мысль, что там не может быть ничего супер-сложного. Так, собственно, и оказалось.

      Под рукой оказалось несколько стареньких ECU от ниссана примеры (спасибо AndrAB), с ними я и начал свои эксперименты. Но чтобы понять принцип работы, пришлось брать в руки осциллограф и смотреть на сигналы, которые бродят в проводах между консалтом и реальным ECU, установленном на моей Максиме. Сигнальных проводов оказалось 3 штуки: CLK, RX и TX. CLK - тактовый сигнал для процессора ECU, который формируется в диагностическом приборе, RX и TX - передача/прием данных. Чтобы разобраться, для чего что нужно икак работает этот протокол, пришлось найти PDF на процессор, который используется в ECU. Хитрые японские инженеры выбрали самый неудобный, на мой взгляд, протокол обмена: Clocked Sinchronous Mode. По сути, это обычный 8-и битовый (1 старт, 1 стоп) протокол с синхронизацией по отдельной линии. Протокол однополярный, 0-5V, в отличие от RS232. В ECU и диагностическом приборе стоят преобразователи уровня, которые превращают 0-5v сигнал в 0-12V, видимо, для однообразности и защиты от наводок. Первое время я не особо мучался с этим и запаялся прямо на ножки процессора, чтобы не городить преобразователи и работал по 0-5V.

      В реальном интерфейсе рекомендую подтянуть все сигналы к 12-и вольтам, хотя некоторые утверждают, что всё работает и при подтяжке к +5. У меня не получилось на ECU от P10. Сигнал TX от ECU - открытый коллектор.

      Скорость обмена в ECU фиксирована на 9600, частота синхроимпульсов по мануалу равна baud rate*16, т.е. 153600 Hz. Эксперименты показали, что привязывать фронты синхроимпульсов к фронтам сигналов нет необходимости, посему генератор работает в режиме FreeRun.

      Сейчас это всё выглядит просто, но для того, чтобы разобраться, в каком режиме работает порт, мне пришлось дизассемблировать биос ECU, найти в нем ту часть, где сидят обработчики прерываний, найти все обрабатываемые команды и прочее-прочее-прочее.

      Изготовление интерфейса между компом и ECU выливается в тривиальную задачку по преобразованию уровней RS232 в однополярные (MAX232 + level shifter) и подключение генератора синхроимпульсов. Cинхрогенератор собран отдельно на микроконтроллере PIC ( PIC12F629 ) и кварце и генерит прямо в ECU. Питание берем от любого удобного места в машине (можно прямо с диагностического разъема), в качестве стабилизатора - 7805 с радиатором.

      Если кому будет нужно, дам микрокод для PIC. Блок-схема интерфейса - ниже, попозже дам полную схему конвертера.


 


Распиновка разъема для подключения Consult:



Распиновка разъема для подключения Consult II:



Протокол обмена


Анализ исходного кода моего ECU показал, что обрабатываются следующие коды-префиксы:

      0xFF (INIT
) - 3-х байтовая команда, инициализация
      0x0A (PS) - 3-х байтовая команда, акивные тесты
      0x10 - 2-х байтовая, управление некоторым устройствами
      0x30 (STP) - 1-байтовая команда, остановка потока данных
      0x51 - пока неизвестно
      0x5A (MI) - 2-х байтовая команда, получение датчиков
      0xC1
- 1-байтовая, сброс ошибок диагностики
      0xC9 - 3-х байтовая, чтение памяти
      0xD1 - 1- байтовая, ошибки диагностики
      0xD0 - 1-байтовая, номер ECU

      Остальные коды отбрасываются с ошибкой 0xFE.

      Из вторичных кодов известен код 0xF0 - выполнить (EX).

      На любой введенный байт ECU отвечает инверсным байтом. Если команда верна, то возвращается инверсный байт команды, если не верна - байт 0xFE.

1. Инициализация

      Чтобы подключиться к ECU, надо послать команду INIT: 2 байта 0xFF подряд. После этой команды все умные блоки в машине переходят в режим ожидания команды выбора устройства CS. Для основного блока это команда 0xEF. Получив эту команду, ECU ответит инверсным байтом 0x10 и перейдет в режим ожидания запроса. Остальные блоки отключаться до следующей команды INIT. Повторная посылка INIT сбросит любую операцию и снова переведет все устройства в режим ожидания.

2. Запросы на получение данных от ECU (команда MI)

В терминологии консалта - Data Monitoring.

      Команда запроса обзывается MI (Monitor Item), код команды - 0x5A. Следующий за командой байт - код необходимого для мониторинга устройства. Одновременно для мониторинга можно заслать несколько параметров, т.е. последовательность типа 5A NN 5A NN 5A NN 5A NN... Для завершения ввода нужно послать команду EX (Execute) - 0xF0.

После этого ECU начинает выдавать данные в следующем формате:

FF NN D1 D2 D3 ... DN, где:
FF - байт-разделитель;
NN - количество ожидаемых байтов в ответе;
D1-DN - собственно данные.

      Если в запросе были 2-х байтовые параметры, то возвращаемое значение тоже будет 2-х байтовое, это надо учитывать в программе-обработчике.

      Поток ответных данных идет непрерывно, остановить его можно (и нужно) командой STP (0x30). После получения STP ECU ответит инверсным сигналом (0xCF) и снова будет готов к приему запроса.

      Некоторые возвращаемые значения могут использоваться напрямую, для некоторых нужны некоторые формулы пересчета в читабельные значения, а некоторые свернуты в битовый формат (в одном байте передаются on/off значения датчиков).

3. Передача параметров (PS)

В терминологии консалта - Active Test.

      Некоторые динамические параметры можно изменять. Формат команды такой: PS XX YY, где XX - номер устройства, YY - новое значение. Код PS - 0x0A.

4. Управление устройствами (0x10)

      Обнаруженная, но еще не изученная команда.

5. Чтение ошибок диагностики (DIAG).

      Команда 0xD1 - чтение ошибок диагностики. Запускается на выполнение командой EX.

6. Сброс ошибок диагностики.

      Команда 0xC1 - сброс ошибок диагностики. Запускается на выполнение командой EX.

7. Чтение содержимого памяти ECU

      Команда 0хС9. Можно считать содержимое RAM и ROM ECU.

8. Получение номера ECU

      Команда 0хD0. Возвращает строку данных с номером ECU.

7. Непойманные сигналы

      0x51 - непонятно.

Comment: похоже, сигнал, описаный ниже, не существует. Врет патент.

      Есть еще один интересный сигнал, пока не пойманный, SIN. Блокирует соединение с ECU, но не переводит этот ECU в исходный режим (ECU не реагирует на сигнал INIT) и не сбрасывает ранее переданный запрос. В это время можно подключиться к другому ECU. Восстановление из режима происходит по команде CRR, после чего с ECU снова начинает передавать ранее запрошенные данные. Удобно использовать в тех случаях, когда нужно мониторить 2 разных ECU, например, ECCS и ECU коробки. Предполагаю, что сигнал SIN, как и сигнал CRR, передается с параметром NN - номер ECU. Таким образом можно одновременно мониторить и управлять несколькими устройствами сразу.

Что внутри ECU

      На первый взгляд ECU ниссана кажутся достаточно сложным устройством, с кучей микросхем и прочих странных деталек, найти информацию по которым практически невозможно. На мои запросы производители деталей всегда отвечали одно и то же: "Это заказная деталь, информацию дать не можем".

      Обидно, да... опять пришлось брать в руки осциллограф и немного поизучать железку.

      И что же там внутри: первое и основное - это микроконтроллер, обрабатывающий входные сигналы с датчиков и формирующий необходимые сигналы для исполнительных устройств. Это специализированная микросхема, высокоскоростной A/D конвертер, способный в режиме реального времени обрабатывать большое количество разномастных сигналов и на их основе выдавать управляющие сигналы на форсунки и свечи зажигания.

      Почти все входящие сигналы с датчиков (за исключением сложных аналоговых типа MAF, O2, датчик детонации) проходят через специализированные микросхемы-конверторы уровней. Логические сигналы 0...12V тупо преобразуются в 0...5V (это сигналы с датчиков положений, датчика скорости, сигналы с кнопок и прочее). В этом виде они поступают на входы AD конвертера.

      Общей обработкой всего этого, а также связью со внешним миром занимается центральный микропроцессор, опять-таки специализированный, на базе микропроцессора Hitachi 6303. В старых моделях ECU используется абсолютно нормальный процессор, правда, в undocumented корпусе и не описанный в datasheet. Для хранения управляющей программы используется либо внешнее ПЗУ, либо программа зашивается прямо в процессор (на последних моделях).

Основные чипы в ECU

CPU HD63B03YCP (Motorola 6803 Clone in PGA package)
Hitachi HD63140CP (Hitachi Universal Pulse Processor)
NEC 65022L (A) 901 Matches to NEC 65022L or D65022L (RAM chip?)
28 PIN 27C256 EPROM chip (Program code and maps)

Чип HD63140CP - про него мало что известно, вообще это " universal pulse processor", содержащий порты ввода-вывода, watchdog таймер, регистры данных A/D, регистр I/O, регистр прерываний и 1024 байта SRAM.

Mitsubishi M59203P - Mitsubishi chip for knock sensing
HD14053BP chip - ?

В старых ECU на отдельной плате размещался блок обработки сигнала датчика детонации.

24.09.10

Ой мама роди меня обратноНЕ до этого мне как китая .......-)))

02.12.10

Случайно попалась эта статья/

Я поражен трудом проделанным автором.Без всякой надежды на награду и понимание участников форума.

Спасибо Вам за работу.

Купил Almera Nino 2003 и пытаюсь сделать адаптер и найти стоящую программу диагностики.

Тупит чертовка!

Адаптер спроектировал на pic16F628,на всякий случай сделал CLK для старых (в моей разъем OBD2) и один вывод pic запрограммировал на вывод Tx+Rx для перехвата протокола.Собираю крохи информации по протоколу чтобы сделать нормальную программу для всех.

02.12.10

а на Nissan n16 1.8 выпуск 2006 эта схема подойдет???

02.12.10

Пользуюсь этим девайсом и часто выручаю друзей!) Доволен!)

http://www.inj.ru/index.php?productID=35


Удачи!)

03.12.10


to zorroby: Чем могу помочь? Что конкретно вам требуется?

06.12.10

а на Nissan n16 1.8 выпуск 2006 эта схема подойдет???

06.12.10

Думаю, да.

09.12.10


to Rain: Подскажите, что означает мигание подушки безопасности: 2 раза медленно,4 раза быстро на Ниссан Альмера.

11.12.10

я не совсем уверен, но похоже что 24-Замыкание цепи питания подушки пассажира. возможно короткое замыкание в проводке. проверь эту цепь.

11.12.10


Я же говорю надо БК-подсоединять он не только ошибки говорит но и многое другое,себе буду ставить Мультитроникс RI-500

11.12.10

Здесь более подробно:24• Короткое замыкание в модуле (электрозапале) подушки безопасности переднего пассажира или короткое замыкание в жгуте проводов. если отсоединить разъем от подушки пассажира, должен появиться код 25 • Обрыв цепи в модуле (электрозапале) подушки безопасности. Если ничего не поменяется, рой проводку, если получится как написано- кирдык подушке.

11.12.10

Если горит ошибка, вам известна ее расшифровка, то надо устранять. Вообще я бы посоветовал посмотреть блок подушек (один из датчиков), он находится между сиденьями передними. Может, сиденья двигали, проводку задели. Попробуйте скинуть клему акумулятора на часик другой. Страшного в этом ничего нет (отключение АКБ), сбросятся часы, магнитола собьется (ели не знаете кода, тогда скидывать нельзя), сигналка не должна на это реагировать (имею в виду сброс параметров установки).

14.12.10

Эй,люди! Кто-нибудь,раскладите мухи и котлеты по углам!

1.Almera Tino 2003 2.2 Dti

2.Есть pin 12,13, на OBD2 и pin7 тоже

3.По каким протоколам диагностируются системы машины?

4.Проверено: протокол OBD2-но пару pid и те с неточностями.

5.В чем различие протоколов CONSULT-CONSULT2-CONSULT3

и использование контактов OBD разъема?

6.CONSULT2 это KWP2000 с приблудами NISSAN?

7.Подготовил программу ddt2000,делаю даптер.Стоит ли терять

время?

8.Заранее благодарен за любую информацию.С огромным уважением

к Rain.

14.12.10

to Rain:

Небольшая неточность блок-схемы интерфейса: max232 состоит из инверторов.

14.12.10


to zorroby:

Различие протоколов подкреплено годами выпуска авто, чем новве авто, тем выше версия. Совсем "свежие" ниссаны заточены под 3-й консалт. По крайней мере, основной упор на дату, но придется покапаться с сервисными утилитами. Поэтому я бы вам предложил не запариваться, а поехать на оф. диагностику.


Спасибо.

14.12.10


to zorroby:

NISSAN Consult - это протокол, позволяющий подключаться непосредственно к электронному блоку управления (ECU) автомобиля. Связь с ЛЮБЫМ блоком управления осуществляется через шину 'Diagnostic Data Link' (DDL) предусмотренную в автомобиле.
NISSAN Consult разработан, чтобы выполнить 3 основных функции:
* показывать статус входных и выходных сигналов, прочитанных в блоке управления (ECU - Engine Control Unit);
* читать заключения электронных систем СамоДиагностики (регистрацию ошибок), и показывать название неработающей цепи.
* обучает блок управления изменять сигналы определенных датчиков и приводов, таким образом изменяя эксплуатационные режимы, чтобы подтвердить диагноз. (не для всех систем доступный режим)
Протокол Consult-1 как правило применялся на ниссанах до 2001 г. Адаптер также можно использовать на машинах с разьемом OBD-II (используются выводы 12 и 13, Для скорости 9600 бод нужен опорный генератор для тактирования приемопередатчиков в ECU, 153,6 КГц).


Таким образом, OBD-II это набор, который использует несколько протоколов. Подробнее об этом прочтите тут.


Посмотрите распиновку для KWP2000


тут Х1 - это разъем к авто, а Х2 - к компьютеру.



Думаю, Вы не теряете время, и все делаете правильно.


Расшифровку кодов неисправности можете посмотреть тут.


Меня больше нет на форуме. Пожалуйста, не пишите в личку. По всем вопросам писать только на email
15.12.10

Как в анектоде:рация на бронетранспортере.

Мы не поняли друг-друга.

Я прекрасно знаком со стандартными протоколами,мне не составляет труда

разработать и собрать устройства типа адаптера.Все программы для своего

железа я пишу на DELPHI.

Я хочу в любое время дня и ночи продиагностировать самостоятельно

свою TINO. Как показала практика это далеко не лишнее.

Диагностика по OBD2 (недомерки ELM) практически ничего не дает.

(вопрос к знатокам: удалось ли кому связаться с SRS,ABS и т д

используя ELM или allPRO-сомневаюсь.)

Я даже собрал allPRO adapter для этого случая использовал парочку

известных прог.Параметров крайне мало и часть выдается неверно.

Вот поэтому с надеждой повторяю все свои вопросы.

15.12.10


to zorroby: А Вы уверены, что SRS и ABS на Тине имеет обратную связь для диагностики?


Меня больше нет на форуме. Пожалуйста, не пишите в личку. По всем вопросам писать только на email
15.12.10

to messir

Было бы смешно предположить обратное.Даже для Audi100(если конечно они там есть).


Насчет официалов.Был на 3-х уважающих себя СТО.Чего только не предложили чтобы

уговорить код ошибки P0089! И заметьте,мужики, не бесплатно!

Проблему решил сам-прочистили стравливающий клапан на топливной рампе и все

пошло на ура.

Вот почему я решился сделать себе диагностику на TINO сам.И конечно сделаю,дело

только во времени.С ВАШЕЙ помощью быстрее.

Спасибо за поддержание разговора.

15.12.10

to zorroby: Мы всегда рады помочь по мере возможности!

Но, должен заметить, что "уважающие себя СТО" - это не всегда грамотные специалисты при высоких ценах на обслуживание. Я с этим сталкиваюсь регулярно.


Меня больше нет на форуме. Пожалуйста, не пишите в личку. По всем вопросам писать только на email

Написать комментарий
Участники клуба оставили сообщений: 44319
Последний зарегистрированный участник клуба: Eduardjxi