- базовая схема блока в файле bmw.pdf 36kB
- описание сканирования канала в файле interf.zip
- пример файла обмена между компом и автомобилем на BC 3.1 под DOS dme.zip (программа написана очень коряво, и требует радикальной переработки).
- файлы с описаниями ошибок на некоторые системы err.zip (в дальнейшем будут пополняться).
Скажу сразу, у нас есть прибор, и очень хороший прибор, но к сожалению не всем он по карману. По этому я предлагаю всем желающим принять участие в создании простого адаптера, сборе информации и его развитии. Одному человеку делать это нерентабельно и долго. Все собранные материалы и программы будут свободно выложены на нашем сайте.
А теперь коротко о работе программы.
Как видно из схемы, линия RxD - TxD канала с помощью сигнала RTS коммутируется как на K так и на L линию диагностического канала, сделано это для экономии программных ресурсов и отработки логики канала. При запросе скорость канала устанавливается 8 бод, и выдается код 0х7F 0х0F на линию L, что и соответствует стандартному запросу на диагностику в блоках DME-DDE, ответ, и дальнейший обмен происходит по линии K, обычно со скоростью 9600 бод, но это совсем не обязательно. Скорости лежат в диапазоне от 1200 до 10500 бод.
Для коробок алгоритм примерно такой же, а для блоков AIRBAG и инструментальной панели (к примеру) все запросы в блок идут по линии L, все ответы возвращаются по линии K.
Передачу и прием необходимо организовать по прерываниям, ибо по готовности стабильность канала получить не возможно.
Программу предлагаю писать на Си, под DOS., это себя оправдывает простотой и легкостью отладки.
Было бы неплохо, если один из программистов взял в свои руки компиляцию и стыковки кусков программ, поскольку я себя программистом не считаю, а писать программу левой задней нагой, и получить вариант CarSoft нет ни какого желания. С моей стороны будет помощь с информацией о протоколах, тестирование и критика, ибо без этого не обойтись.
Теперь о протоколе DME
Запрос на диагностику по L выглядит как 0=1000 мс 1=250 мс 0=550 мс, после которого L = 1, а по линии К приходит ответ на скорости канала. 0х55 0х00 0х81, который повторяется два или три раза, если не было подтверждения от сканера.
Сканер отвечает инверсией на принятый байт, а контроллер радостно шлет ему новые данные.
Второй байт в запросе = 0х09 - чтение данных, 0х07- чтение ошибок, 0х05 -стирание ошибок.
Третий байт в ответе - количество принимаемых байт
На последний 0х03 отвечаем 0х03 и читаем со следующего адреса
Ошибки обычно читаются с посылки с адресом 0х16, но это не обязательно, главное считать все номера, а далее канал можно крутить непрерывно, что собственно говоря все сканера и делают.. Шестой принимаемый байт и есть номер ошибки, в пересчете на десятичное счисление. Впрочем это все есть в прилагаемой текстушке. В заключении я прилагаю программу написанную несколько лет назад, в ней собранны номера блоков по системам(oldver.zip).
Присылайте письма с предложениями, дополнениями и замечаниями на адрес Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript с пометкой "Диагностический прибор".
С уважением. Александр Викулин.
Сегодня, 13.12.99 пришло письмо от Александра Кишнера (прошу прошения, если не совсем правильно перевел фамилию на русский язык), по замечаниям которого были внесены некоторые коррективы в схему и описание алгоритма работы, и даю некоторые пояснения.
Схемотехника линий K и L взята из руководства фирмы BOSCH по построению интерфейса ISO9141.
Перечеркнутые резисторы со знаком " I " это позисторы, или как их еще называют "самовастонавливающиеся предохранители". Принцип их работы в том, что применяющаяся в них керамика имеет резко выраженную зависимость сопротивления о температуры, до температуры перегиба омы, или доли ом, а после точки перегиба сотни килоом, косвенно эта зависимость связанна с током. Надпись R030 означает 0.3 А.
Итак, начало положено, спасибо за профессиональный подход.