Когда я занялся данной темой я не смог найти информацию, которая мне бы в этом помогла.
Поэтому свои наработки выложу на всеобщее изучение.
Другим будет с чего начать.
Я не претендую на однозначность метода.
1. Первое с чего стоит начать работу это создание файла логирования КАН шины своего автомобиля. Но эта тема выходит за рамки статьи. Начнём с того, что он у меня уже есть.

Данные в шине сформированы в пакеты. Пакет имеет ID. ID это подпись агрегата, который данный пакет формирует. По нему принимающий агрегат его распознает и использует данные из него в своих интересах. Пакет имеет максимальную длину в 8 байт, но если последующие байты не нужны пакет может быть и короче.
Для примера строка с ID 1549 передается BSM (блоком управления кузовом) в M&A (приборную панель) информация в ней 8 байт, говорит о состоянии вкл/выкл всего света автомобиля и закрыты/открыты двери, багажник. Принимая эти данные приборная панель отображает их вам на своих экранах. Пакет передается с частотой 10 раз в секунду.








А вот дальше происходит анализ данных глазами.
Данные в шине разделяются мной на параметры (которые имеют 1-2-3-4 байта, байты состояния и костанты )
— Параметр, передает цифровое значение параметра (скорость, температура охлаждающей жидкости). Значения данные в таких параметрах изменяются плавно и имеют вид хорошо понятных графиков.



После распознавания параметра (для примера обороты двигателя) подбирается коэф соответствия (в моем случаи были 1/10 и 1/100, которые привязывают данный параметр в реальным измерениям).
— Байты состояний, в них каждый бит отвечает за состояние параметра да/нет. Графики таких байтов выглядят как прыгающие резко без переходных состояний уровни. Данный вид информации удобно расшифровывать в реальном масштабе времени сидя в машине. На монитор выводится состояние только этого пакета и изменяя состояние машины записываются показания данных байтов на бумажку. После расшифровки значения заносятся в шапку.

— константы. Это параметры которые за отслеживаемое время не менялись. Тут не надо расслабляться. В данных байтах может содержаться информация об агрегатах которые в отслеживаемое время не использовались, но может быть и постоянная величина.
Результаты:
ID 002
угол поворота руля.

ID 354
Скорость автомобиля

ID 60D
состояние автомобиля

а теперь со всеми этими данными будем делать адаптивное освещение.
Часть 2 www.drive2.ru/b/502602434170848168/
Еще данные для изучения
m.habr.com/ru/post/497140…80103-39664840.1591180103










Комментарии 59
Здравствуйте !
Я только начинаю вникать в каншину и сразу практически упёрся в стену.
Получил данные примерно в таком виде :
262496; 501; 8; 61; 0; 42; 16; 1; 0; 40; 1
262590; 506; 8; 16; 0; 42; 16; 84; 0; 0; 3
262650; 188; 6; 46; 0; 0; 0; 0; 0; 0; 0
262660; 189; 4; 46; 0; 0; 0; FF; FF; FF; FF
…
Только вот при копировании в эксель каждая строчка вставляется в одну ячейку.
Как распределить цыфры из строки по столбцам не подскажете ?
Не по одной же их вставлять ?
Использовать разделитель. Там при конвертации есть выбор. В твоем случаи ;
Это в экселе ?
Если не тяжело ткните носом в ссылку где показано как это делается.
Gagarin1977
Использовать разделитель. Там при конвертации есть выбор. В твоем случаи ;
Нашел, спасибо …
Добрый день! Подскажи, пожалуйста, есть ли какие либо стандартные адреса, или у каждого авто свои? Проги всякие, для EML, они же както считывают почти любой авто. Или в них зашиты профили? Спасибо!
Тут рассмотрены посылки которые летают в шине постоянно. 10-100 раз в секунду.
ЕЛМ работает на режиме запрос ответ (OBD). Этот протокол стандартизирован для диагностики автомобиля стандартным диагностическим оборудованием. Но не сильно(адреса основных параметров известны, но их много не было прописано и производитель может их использовать так и этак). И он медленный.
introway
Добрый день! Подскажи, пожалуйста, есть ли какие либо стандартные адреса, или у каждого авто свои? Проги всякие, для EML, они же както считывают почти любой авто. Или в них зашиты профили? Спасибо!
Поглядеть посылки OBD ты можешь в статье как команды управления тианой или что то такое. Я там глядел посылки от затычки которая звери на скорости закрывает.
Да я нашел много инфы, но как выковырять из посылки то, что нужно не знаю, мозги кипят )
Не ну тут всё ясно.
Это как раз посылки с кан шине как у меня.
Только сверху надо 2 ряда добавить с номерами байтов и номерами битов в байтах А у тебя буква столбца стоит.
Тогда станет проще.
Елм эти посылки видеть не может. Тк у него нет режима просто чтения всего подряд.
Не ну тут всё ясно. ))) — это не про меня… Если не трудно, подскажи, пожалуйста, как брать из строки определенные байты и биты. Мне нужны разные параметры…
introway
Да я нашел много инфы, но как выковырять из посылки то, что нужно не знаю, мозги кипят )
Берешь посылку. Умножаешь на маску 00000110000 где 1 это интересные тебе биты. Делаешь сдвиг вправо на количество нулей (в моём случаи 4) нужное количество раз. Получаешь цифру нужного тебе параметра.
если блок на руках не в машине, с него можно считать нужные пакеты?
Неа. Блок посылает в сеть пакеты с информацией. Ее надо откуда то получать. Датчики системы управления. Голый блок будет гнать в лучшем случае пустую информацию.
т.е. выдернуть нужное возможно только в машине?
Скорее всего да. С подключением всех систем. Иначе блок засветит ошибку и уйдет в аут.
спс за ответы, печально
Часто блоки еще активируются при запуске. И без пароля не будут функционировать. Ваг еще любит файл конфигурации. Когда без битика функция не работает. На столе это очень редкий случай в старой машине. И разгадать что там за параметр…
если машина есть насколько быстро вылавливаются нужные пакеты?
Блоки посылают пакеты обычно 100 раз в секунду или 10 раз. Соответственно доли секунды хватит.
swatmkp
если машина есть насколько быстро вылавливаются нужные пакеты?
Только имей ввиду что сейчас в машинах шин может быть несколько. В обд разьем бывает вывод информации через шлюз (который пропускает не всё).
в общем чтобы выловить нужные пакеты тот еще секас ))
Комментарий удалён
спасибо огромное!
И больше всего меня интересуют кажется пакеты 1f9, 231
233
23d
23e
342
512
551
580
эти пакеты у меня пропадают при отключении ЭБУ :)
очень интересные данные, спасибо!
По уму самое центальное место для этой информации это opendbc DBC файлы, я туда например добавил github.com/commaai/opendb…er/nissan_xterra_2011.dbc
у нас очень похоже одинаковые пакеты. я нашёл в интернете примерно пять разрозненных мест про Nissan — мои ссылки github.com/rusefi/rusefi/issues/2278
лично я делаю свой ЭБУ в режиме хобби и сейчас удивляюсь, как мало пакетов у Ниссана в сравнении с например VAG.
ты свой итоговый XLS со всеми разгаданными полями где-то опубликовал, или можно его попросить? обещаю конвертировать в DBC формат и опубликовать в opendbc то, что совпадёт с моей машиной :)
Пытаюсь найти пакет, который нужно отправить для имитации:
— нажатия кнопки открытия багажника
— нажатия кнопки закрытия багажника
Для этого ждал, пока блоки уснут, запускал сниффер на canny7 и записывал в течении 10-20 секунд (допустим 5 коротких нажатий на кнопку). Пример с фильтрацией в экселе на скриншоте.
Сообщений на Volvo, платформе P3 (XC60 2013) дохрена.
Не уверен что ищу правильно, ведь 5 нажатий не обязательно = 5 идентичным сообщениям, может "проскочить" и больше?
Ну так сравнить когда отправлял и нет. Разница будет в отправлении.
Комментарий удалён
Я планирую отслеживать несколько регистров таких как (спорт режим, обороты двигателя и ещё несколько в том же духе), так вот хотел посмотреть как у вас реализовано выделение конкретного ID и обработки уже байт с данными, в интернете есть примеры, но если была бы возможность хотел посмотреть как реализовали вы это)
Ну я это делал так
www.drive2.ru/b/500830846060593163/
Аааа я просто тоже купил Canny 7, но пока не сдался хочу обойдись более дешёвым способом в виде ардуино)
Canny 7 лежит на крайняк его поставлю он да всё на нём понятно если знаешь какие данные откуда брать он отлично справляется))
Спасибо!)
7 можно использовать даже если не понятно чтоти куда. Тк имеет функцию логгера. Когда знаешь что и куда тут дешевле стм. Но я с ним кан не юзал. Ибо нужно низкоуровневое программирование а я железячник. И тут не ферштейн.
А что за функция логгера? я честно ещё сильно с ним не познакомился) по случаю повезло взять дешево
На 7 есть функция кан снифера. Это когда он читает и показывает, что творится с шине. Те можно мониторить что меняется в шине, когда срабатывает то или это событие. И его можно отследить.
Потеплеет буду к шине цепляться, пока пластик дубовый( к обв не хочу, хочу сразу к той шине которая нужна мне а она в багажнике
Отличная работа. Спасибо. Не чего не понятно )) нужно заваривать чаёк и изучать )
Огромное спасибо! Очень познавательно!
Пасиб, брат. Интересно, а мою VAN шину твой канснифер осилит…
Хотел сделать подсветку поворотов на крете с помощью ардуино, но после прочтения ваших статей видимо буду делать на canny 5 nano) Но есть несколько вопросов к вам, как прошедшему через всё это.
1. Сложно ли отследить данные о повороте руля и текущей скорости? Ролик посмотрел на сайте canny, все изменяемые данные подсвечиваются, это хорошо, но не понятно группируются ли строки по ID устройства или просто кидает в лог каждое состояние отдельной строкой? И вообще может ли canny 5 nano логировать шину или только 7ой? Или ID устройств можно узнать в реальном времени, без логирования?
2. Получилось ли у вас доделать адаптивное освещение (записи в блоге не нашел)? Как я понимаю у вас примерно такой же как и у меня алгоритм для этого: на скоростях до определённого лимита при повороте руля включается подсветка нужной стороны? Или какой-то другой алгоритм? Можете его описать парой слов?
3. В этой статье в алгоритме контроля положения руля в условиях значения Y это угол поворота руля? В каком виде только не понятно, на 16СС не похоже…
4. Для чего использовался контроль состояния кузова?
5. По алгоритму плавного гашения не совсем понял. Плавное гашение боковой подсветки (при чём вижу только для левой подсветки алгоритм в 1ой сверху группе блоков, для правой видимо в 3ей группе блоков)? Зачем тогда при включенных габаритах на скорости от 1 до 20 выдавать сигнал старт и для чего он? Пока писал это всё до меня похоже дошло: выдача сигнала старт на скорости от 1 до 20 и при включенных габаритах означает то, что весь этот алгоритм работает только на этих скоростях и с включенными габаритами?
6. Можно ли получить файл прошивки с полным алгоритмом чтобы осмотреть всю картину целиком?
7. Зачем пьезоизлучатель? Для сигнала о том что подсветка включена? Она же автоматически включается/отключается, зачем тогда это вроде как лишнее напоминание?
8. Как я понимаю распиновка диагностического разъёма у всех производителей разная?
Извиняюсь за такой шквал вопросов, но тема очень заинтересовала)
1. Сложности никакой если данные в шине есть и ты знаешь где они. Но покажет тебе шину только канни7 5 этого не умеет.
2. Доделать получилось а на машину установить пока нет.
4. Что бы не включать подсветку когда светло.
5. Да :)
6. Да почту пришлю.
7. Он для отладки. С ним удобнее.
8. Распиновка стандартная, но бывают извращения.
на фото у вас canny 5, изначально знали где нужные данные или каким-то другим устройством считывали? elm327 подойдёт для считывания?
в пункте 5 уже ведь проверка на включенные габариты есть (можно переделать на ближний) тогда пункт 4 лишним получается)
Елм не годится. Канхакер кансканер или канни 7. У меня есть и 5 и 7 ка и kviser что на фотках в схеме. Логику работы можно менять на любую.
Спасибо, метод прекрасный!
Его использование помогло мне расшифровать данные скорости из блока АБС Мерседес www.drive2.ru/l/513926304425313069/
Отличная работа!
Спс.
А можно считывать с помощью канни7.
Да. Сложно сделать лог. А в реальном времени вообще сказка. С этого начинал.
Shmeel83
А можно считывать с помощью канни7.
Есть ограничения. Всю шину сразу он не успевает, но можно сканить каждый id по отдельности. И сохранять не больше 1000 строк за раз. Но в целом очень рабочий вариант.
Я про софт для компа.
С квайзером идет набор софта. В том числе и логгер.
Чем изначально лог записывали?
А что нибудь китайское есть для этого?) Тема интересная
Брал их поделки, но софт так и не заставил их работать. Канхакер. Я первое время перебивался canny7. У него ограничения есть но по цене качеству лучшее.
Канни7 разве может сделать именно лог?
И касаемо анализа — вроде же есть тулзы, которые упрощают анализ, разбивают по ID там и т.д?
Лог может но через попу. До 1000 строк копируешь и переносишь в свой файл копипастом.
Подскажешь какие буду рад. Тут метод универсальный и гибкий хоть и муторный.
Teemon-khv
Канни7 разве может сделать именно лог?
И касаемо анализа — вроде же есть тулзы, которые упрощают анализ, разбивают по ID там и т.д?
Кстати канни таким софтом занимается и лог обещал припилить, но обещанного …
…ёпсель-мопсель скок циферек,
респект,
в закладки…
В избранное!
Из серии "Очень надо"…
Вот это я понимаю — ТРУД!