Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Эмуляция сигнала реверса в Машине с CAN
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > АВТО электроника
syoma
Привет.
Я вообщем тут в немного дурацкую ситуевину попал - купил прибамбас, а он с моей машиной несовместим оказался.
В общем он читает по CANу инфу о положении руля и накладывает линии парковочной разметки на камеру. Сделано китайцами и поддержки нет. Подрубается в OBD-II, в шину CAN.
Проблема в том, что чтобы он начал работать - ему нужен сигнал, что включена задняя скорость, причем только по CANу. А у меня на машине Toyota Verso 2009 - похоже сигнал включения заднего хода вообще в CAN-шине не присутствует.
Так что я хочу его обмануть и подсунуть на CAN сообщение о включении задней скорости. Все железо, знания и софт у меня есть, вопрос только в том - что же это за сообщение.
Можете подсказать, в каком стандарте это описано или ID с данными просто - а я проэкспериментирую.
Спасибо.


RootSDF
Честно говоря я не знаю какой протокол у вас в машине. У меня есть информации только по протоколу J1939.
Из стандартных сообщений должно подойти ETC2 (Electronic Transmission Controller 2): 0x18F00503 - Id
А из данных это скорее всего параметр 523:
Bit Start Position /Bytes: 4
Length: 1 byte
SPN Description: Current Gear
SPN: 523

Нумерация байтов начинается с 1. Далее выдрано из описания:
"The gear currently engaged in the transmission or the last gear engaged while the transmission is in the process of shifting to the new or selected gear. Transitions toward a destination gear will not be indicated. Once the selected gear has been engaged then Current Gear will reflect that gear.
Data Length: 1 byte
Resolution: 1 gear value/bit , -125 offset
Data Range: -125 to 125
Operating Range: -125 to +125, negative values are reverse gears, positive values are forward gears, zero is neutral. 251 (0xFB) is park."
galjoen
Цитата(RootSDF @ Dec 16 2010, 21:32) *
У меня есть информации только по протоколу J1939.

Навеяло:
Где потерял?
- вон там.
А почему здесь ищешь?
- так ведь здесь светлее.

Не бывает в легковых машинах J1939, поэтому китайцы не станут под него девайс делать. Или он для грузовиков?
В легковых OBD, а там CAN по стандарту J2284, скорее всего. А там ID 11 бит и скорость 500 кбод. С ним я дело практически не имел, но думаю, что мало на каких машинах КПП в сети имеется, а китайцы вряд ли для редких машин такой девайс делать будут. Может там скорость машины со знаком передаётся? Какой там у скорости PID?
Если нет, то тогда по ID сообщений искать нужно.
Вот у Ауди датчик поворота руля ID=0x0C2 имеет, а коробка ID=0x440. Сообщения с такими ID в сети присутствуют?
Alex_VI
Каждый производитель лепит свой протокол. Более того, он отличается от модели к модели. Бесполезно спрашивать ID не называя ни марки машины, ни марки прибамбаса...
syoma
Спасибо, на выходных посмотрю, что у меня на шине присутствует.
Девайс вот такой: http://yatour.net/shop/?type=detail&id=49
Машину я в первом сообщении назвал.
Как видите, подключается ко многим машинам. Условие, чтобы была ESP.
По скорости оно явно не работает, так как тогда бы при движении назад включалась бы. А она не включается.
Alex_VI
Цитата(syoma @ Dec 21 2010, 10:29) *
Машину я в первом сообщении назвал.

прошу прощения, не внимательно прочитал..
Serg_el
Цитата(syoma @ Dec 16 2010, 12:24) *
Привет.
Я вообщем тут в немного дурацкую ситуевину попал - купил прибамбас, а он с моей машиной несовместим оказался.
В общем он читает по CANу инфу о положении руля и накладывает линии парковочной разметки на камеру. Сделано китайцами и поддержки нет. Подрубается в OBD-II, в шину CAN.
Проблема в том, что чтобы он начал работать - ему нужен сигнал, что включена задняя скорость, причем только по CANу. А у меня на машине Toyota Verso 2009 - похоже сигнал включения заднего хода вообще в CAN-шине не присутствует.
Так что я хочу его обмануть и подсунуть на CAN сообщение о включении задней скорости. Все железо, знания и софт у меня есть, вопрос только в том - что же это за сообщение.
Можете подсказать, в каком стандарте это описано или ID с данными просто - а я проэкспериментирую.
Спасибо.


Сигнал о текущей передаче КПП обычно присутствует на шине. Если есть железо и знания, то найти ID элементарно - подключаетесь КАН анализатором, проезжаете сотню метров с переключением передач и далее смотрим в то, что просканировали. Момент включения передачи можно опеределить по оборотам двигателя, далее смотрим какие пакеты и как изменились в этот момент.
alx125
Шины бывают разные
Между ними бываю шлюзы
reget
Нет данных о текущей передаче в шине - да быть такого не может. Видимо девайс не очень хорошо данные переваривает
galjoen
Цитата(reget @ Dec 23 2010, 00:58) *
Нет данных о текущей передаче в шине - да быть такого не может. Видимо девайс не очень хорошо данные переваривает

Более чем у половины грузовиков и автобусов (которые с J1587 или J1939) данных о передаче в сети нет. Да и откуда они там возьмутся, если КПП механика, пусть даже и с автоматическим сцеплением?
Serg_el
Пишу не из каких-либо предположений, а на основании опыта сканирования различных авто. Еще раз повторюсь - сигнал передачи может присутствовать в КАН шине, например, он есть в широко распространенном Форде (Фокус, Мондео, Фиеста, Фьюжн) (в том числе с механической КПП).
galjoen
У Форда Транзита (единственный авто с OBD каном, который я сканировал) я что то КПП в сети не нашёл. Хотя может просто плохо искал, т.к. такой задачи у меня не было.
Serg_el, если это не секрет, подскажите какой ID у сообщений с передачей у форда - я в логе у Транзита гляну.
Serg_el
Цитата(galjoen @ Dec 23 2010, 11:18) *
У Форда Транзита (единственный авто с OBD каном, который я сканировал) я что то КПП в сети не нашёл. Хотя может просто плохо искал, т.к. такой задачи у меня не было.
Serg_el, если это не секрет, подскажите какой ID у сообщений с передачей у форда - я в логе у Транзита гляну.

ID 0x3E9, start bit 8, size 4
syoma
Я тоже почти уверен, что информации о включенной передаче вперед на легковой машине с механической КПП в сети не будет, так как соостветсвующие датчики просто отсутствуют. Но для задней передачи всегда есть датчик, хотя бы для включения лампы заднего хода. Но для системы управления двигаетелем он не нужен, поэтому в CANе может присутствовать, а может и нет.
galjoen
Цитата(Serg_el @ Dec 23 2010, 13:28) *
ID 0x3E9

Таких сообщений у Транзита в разъёме OBD нет.
Хотя я что то засомневался в правильности снятия лога, т.к. не вижу в нём ID=0x7E8...0x7EA. А судя по описанию OBD (я в него только сейчас первый раз заглянул, поэтому может и не разобрался) такие ID обязательно должны присутствовать.
В общем вижу только:
Код
0F6   127   296   38A   409
      128         38B   4E2
      129         38E   4E3
      12A               4FE

Может у моей читалки была ошибка в софте? Надо будет ещё раз перечитать...
Serg_el
У Транзита протокол в принципе тот же, но его непосредственно не сканировал. Зато на Фокусе пакет точно есть.
Serg_el
Цитата(galjoen @ Dec 23 2010, 15:55) *
Таких сообщений у Транзита в разъёме OBD нет.
Хотя я что то засомневался в правильности снятия лога, т.к. не вижу в нём ID=0x7E8...0x7EA. А судя по описанию OBD (я в него только сейчас первый раз заглянул, поэтому может и не разобрался) такие ID обязательно должны присутствовать.
В общем вижу только:
Код
0F6   127   296   38A   409
      128         38B   4E2
      129         38E   4E3
      12A               4FE

Может у моей читалки была ошибка в софте? Надо будет ещё раз перечитать...


Похоже на какую-то ошибку. Т.к. у меня есть полное описание СAN протокола Ford, то могу сказать, что этих ID там нет. Кстати, текущая передача также содержится в пакете с ID 0x231.
Alex_VI
Цитата(syoma @ Dec 23 2010, 13:46) *
Я тоже почти уверен, что информации о включенной передаче вперед на легковой машине с механической КПП в сети не будет, так как соостветсвующие датчики просто отсутствуют. Но для задней передачи всегда есть датчик, хотя бы для включения лампы заднего хода. Но для системы управления двигаетелем он не нужен, поэтому в CANе может присутствовать, а может и нет.


Для определения номера передачи совсем не нужны физические датчики. Достаточно знать скорость автомобиля и обороты двигателя. Соответственно, ничего не мешает вычислять номер передачи и выдавать его в сеть. (Этим занимается любой ЭБУ двигателя)
galjoen
Цитата(Serg_el @ Dec 23 2010, 22:12) *
Похоже на какую-то ошибку. Т.к. у меня есть полное описание СAN протокола Ford, то могу сказать, что этих ID там нет. Кстати, текущая передача также содержится в пакете с ID 0x231.

Ошибку нашёл. Спасибо.
Ну не работал я никогда с ID 11 бит, а она только на это влияла, поэтому не выявленная и оставалась. Транзит прочитал просто так, из интереса, и был в полной уверенности, что прочитал правильно т.к. лог до сегодняшнего дня даже и не анализировал.
Но теперь мне интересно стало. Если не жалко, то протоколом поделитесь пожалуйста.
Serg_el
Цитата(galjoen @ Dec 23 2010, 23:36) *
Ошибку нашёл. Спасибо.
Ну не работал я никогда с ID 11 бит, а она только на это влияла, поэтому не выявленная и оставалась. Транзит прочитал просто так, из интереса, и был в полной уверенности, что прочитал правильно т.к. лог до сегодняшнего дня даже и не анализировал.
Но теперь мне интересно стало. Если не жалко, то протоколом поделитесь пожалуйста.


Извините, но информация о протоколе закрыта для распространения по требованию его разработчика.
galjoen
Цитата(Alex_VI @ Dec 23 2010, 23:09) *
Для определения номера передачи совсем не нужны физические датчики. Достаточно знать скорость автомобиля и обороты двигателя. Соответственно, ничего не мешает вычислять номер передачи и выдавать его в сеть. (Этим занимается любой ЭБУ двигателя)

Не всё так просто. Далеко не все датчики скорости направление выдают, поэтому задний ход определить нельзя. А некоторые даже и работать только с определённой скорости начинают. Датчики, где катушечка с магнитиком около зубчатого диска стоит, при малой скорости слишком малое напряжение вырабатывают, поэтому у всех американских тягачей скорости менее 20 км/час в сети не бывает, и спидометр тоже не показывает. Т.е. с 0 сразу скачёк на 20. А вот датчик нейтрали - у всех есть.

Цитата(Serg_el @ Dec 23 2010, 23:38) *
Извините, но информация о протоколе закрыта для распространения по требованию его разработчика.

Понятно. Интересно, а это у всех легковых машин так?
Alex_VI
Цитата(galjoen @ Dec 23 2010, 23:57) *
Не всё так просто. Далеко не все датчики скорости направление выдают, поэтому задний ход определить нельзя. А некоторые даже и работать только с определённой скорости начинают. Датчики, где катушечка с магнитиком около зубчатого диска стоит, при малой скорости слишком малое напряжение вырабатывают, поэтому у всех американских тягачей скорости менее 20 км/час в сети не бывает, и спидометр тоже не показывает. Т.е. с 0 сразу скачёк на 20. А вот датчик нейтрали - у всех есть.


Вообще, передаточное отношение у задней передачи отличается от передаточных передних. Поэтому вычислить заднюю передачу также не сложно. Разговор велся про легковые машины, у современных всех скорость показывает практически сразу.

Да и датчик заднего хода у всех есть
Serg_el
Цитата(galjoen @ Dec 23 2010, 23:57) *
Понятно. Интересно, а это у всех легковых машин так?


На счет всех машин сказать не могу, но, например, на Фокусе номер передачи появляется в пакете не сразу при переключении на эту передачу, а после отпускания сцепления. На Рено с автоматом висит сразу, даже без заведенного двигателя, но при вкл. зажигании.
syoma
Похоже, никудышный из меня хакер.
Подключился CAN анализатором к OBD разъему. Скорость там 500кбит и 11-бит идентификаторы.
При включении зажигания обмен там идет офигенный. Небольшой лог записал.
В итоге надыбал, что положение руля находится в сообщении с ID 0x25 DLC 8-байт в 1-ом и 2-ом байте. Сообщение траслируется циклически каждые 10мс. Причем положение обнуляется при отключении аккумулятора. Т.е. при прямо стоящих колесах данные не точно равны 0.
Текущие обороты двигателя есть в сообщении 0х1с4, которое транслируется каждые 4мс и 0х3B3, которое транслируется каждые 0,5с.
Сообщения или сигнала в CANе, соответствующего включению задней передачи я так и не обнаружил. Все делал на неподвижной машине, поэтому другие сообщения не расшифровывал.
Потом я отсоеденил CAN анализатор от шины и подключил его к моему устройству, чтобы проверить на что он реагирует. Как и ожидалось, при посылке сообщения 0x25 с любыми данными устройство реагирует и поворачивает линии. Все это в режиме меню.
При нормальной работе, как и ожидалось линии не показываются, если на CAN шине присуствует хоть какой-то обмен, если сообщений не слать, то появляется сообщение о неподключенном OBD.
Но мне надо ж найти сообщение о включении заднего хода, чтобы устройство перешло в рабочий режим. И я не нашел ничего лучшего (или худшего) чем перебрать все идентификаторы от 0 до 7FF с данными по 8 байт вида 0xFF ...
И тут на сообщении с идентификатором 0x7FF я эту штуку запорол... Короче она перешла на китайский язык(до этого была на русском). Тип модели, которую можно было бы выбрать остался только Audi A6. Появились изображения парктроников и все. А в CAN она стала выдавать сообшения с идентификаторами 0х200, 0x605. И реагировать на 0х21D изменением цифр на изображении парктроников.
Короче, я ее, похоже, в какой-то ну очень сервисный режим ввел, а вывести обратно уже не смог... Все на китайском. Повезу в магазин, наверное....
Punk
Не удивительно что запорол.....в области IDшников 0x7XX работает всякая диагноза и само собой через эту область проходят все процедуры конфигурирования итд...

Дааа...и если Вы сканировали тойоту, не факт что все пакеты отловить успевали....шинка там весьма нагружена, не каждый сниффер все тянет с отключеным фильтром.

И еще, вот файлик по ссылке гляньте, может чем поможет
http://can.web-box.ru/docs/vkusnoe-8
MEXAHuK
Цитата(Serg_el @ Dec 24 2010, 00:12) *
Похоже на какую-то ошибку. Т.к. у меня есть полное описание СAN протокола Ford, то могу сказать, что этих ID там нет. Кстати, текущая передача также содержится в пакете с ID 0x231.


Цитата(galjoen @ Dec 24 2010, 01:36) *
Ошибку нашёл. Спасибо.
Ну не работал я никогда с ID 11 бит, а она только на это влияла, поэтому не выявленная и оставалась.


Парни помогайте, я никак не могу понять, где ошибка.
Сканирую Ford Transit 2011. Получаю следующие идентификаторы:
0x0F6 0x127 0x128 0x129 0x12A 0x1F4 0x296 0x38A 0x38B 0x38E 0x400 0x405 0x409 0x442 0x443 0x4C2 0x4E2 0x4E3 0x4E4 0x4FE

Вот скриншот с окна программы-анализатора, ID 0x0F6h:

Нажмите для просмотра прикрепленного файла

Вот еще, ID 0x127h

Нажмите для просмотра прикрепленного файла

На скриншотах четко видно, что 11-битный ID расшифровывается вполне корректно:

00011110110b = 0x0F6h
00100100111b = 0x127h

Но уважаемый Serg_el пишет, что таких ID у форда нет.
Подскажите, в чем загвоздка?
Vasily_
Если вы видите в пакете ID 0x127h то в чем проблема? и с чего вы взяли что у всех фордов набор ID одинаковый?
MEXAHuK
Цитата(Vasily_ @ Jul 25 2015, 01:11) *
Если вы видите в пакете ID 0x127h то в чем проблема? и с чего вы взяли что у всех фордов набор ID одинаковый?

Ну вот из этой переписки, где коллега galjoen сканировал транзит и получил практически такой же список, как у меня,
а коллега Serg_el сообщил, что таких кодов у Форда быть не может:
Цитата(Serg_el @ Dec 24 2010, 00:12) *
Цитата(galjoen)

Код
0F6 127 128 129  12A 296 38A 38B 38E 409 4E2 4E3 4FE

Похоже на какую-то ошибку. Т.к. у меня есть полное описание СAN протокола Ford, то могу сказать, что этих ID там нет.

А затем коллега galjoen сообщает, что
Цитата(galjoen)
Ошибку нашёл. Спасибо.
Ну не работал я никогда с ID 11 бит, а она только на это влияла, поэтому не выявленная и оставалась. Транзит прочитал просто так, из интереса, и был в полной уверенности, что прочитал правильно т.к. лог до сегодняшнего дня даже и не анализировал.

А я не вижу никакой ошибки, вот потому и прошу помощи в ее обнаружении.
Doka
Цитата(Alex_VI @ Dec 24 2010, 06:05) *
Вообще, передаточное отношение у задней передачи отличается от передаточных передних. Поэтому вычислить заднюю передачу также не сложно. Разговор велся про легковые машины, у современных всех скорость показывает практически сразу.

Да и датчик заднего хода у всех есть


зачем так сложно? у большинства вендоров просто сообщение скорости передаётся со знаком.
т.о. отрицательная скорость будет свидетельстовать о включении задней передачи.
Увы, и считывание скорости и косвенное вычисление для задач ТС мало пригодны - предположу, что при парковке очень медленное движение колёс, чтобы по датчику АБС рассчитывать скорость.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.