Опции темы
Оценка этой темы
Отображение
Видео:CAN шина👏 Как это работаетСкачать
Управление функциями комфорта автомобиля по CAN шине
Как здесь уже много раз писалось, наша любимая корпорация Toyota «выпилила» из прошивки ECU (ЭБУ) для Российского рынка функции настройки опций комфорта (блокирование / разблокирование замков дверей по скорости либо по запуску / останову двигателя, закрытие стекол при постановке на охрану и т.д.). И теперь мы лишены тех функций, которые, наверное, есть уже на каждом корейце )
Однако возможности электроники автомобиля всё же позволяют осуществлять эти функции путем управления блоками и устройствами через шину CAN. Примером тому служат китайские поделки, которые вставляются в диагностический разъем OBD2, и так или иначе выполняют данные функции (пример таких устройств можно посмотреть здесь https://ru.aliexpress.com/item/Autom. AbTest=ae803_2). Но у китайцев как всегда извечная проблема: вроде и работает устройство, но не так, как хотелось бы.
Появилась идея повторить эту поделку (например, на Ардуино), но с более качественным софтом и с расширенными функциями.
Но для этого необходимо разобраться, какие пакеты «ходят» по нашей CAN шине и чем они управляют. И разобраться с этим совместными усилиями было бы намного проще.
Пока вижу следующие проблемы для исследования (постановка задачи):
1. Выбор железа (адаптера), способного принимать из CAN шины пакеты для их анализа и передавать обратно управляющие команды.
На данный момент я успел поиграться с адаптером ELM327 Blutooth, с ним нормально работает диагностический софт типа Torque, Carista и другие. Но соединить этот адаптер с какой-либо терминальной программой для прослушивания шины пока не удалось.
2. Выбор софта (программы) для получения и отображения пакетов из шины и передачи команд в шину. Есть немецкая программа под Windows, CanHacker. Пока остановился на ней.
3. Проведение реверс инжиниринга протокола обмена блоков автомобиля по CAN шине. Здесь нас интересует скорее медленная шина комфорта. И протоколы обмена для нее точно разные у каждого производителя и возможно разные для разных моделей и годов выпуска одного производителя. Поэтому надо с этим разбираться.
4. Собственно то, ради чего всё это затевалось — создание программы по управлению функциями комфорта.
В настоящий момент мне видится предпочтительной разработка на Ардуино, как наиболее доступная с точки зрения железа и среды программирования (Arduino IDE).
5. Как взгляд на перспективу — использование головного устройства (а в комплектации Exclusive это сейчас голова на Андроиде) для управления перечисленными выше функциями и отображения информации. Эту задачу можно, в принципе, рассматривать как отдельную и дополнительную.
Кому интересна эта тема, предлагаю обсудить здесь.
Возможно, кто-то уже копал в данном направлении и может поделиться своими идеями, опытом, наработками. Это было бы очень ценно.
Видео:Экспресс диагностика CAN шины на автомобиле. №21Скачать
Camry 2017 CAN шина, уровень топлива
Очень часто в процессе работы с телематическим оборудованием для мониторинга транспорта требуется контролировать уровень топлива в баке. Сигнал уровня топлива можно измерить как непосредственно на датчике уровня топлива подключив его к аналоговому входу блока мониторинга так и найти этот сигнал уже в оцифрованном виде в CAN шине транспортного средства. Вариант c получением уровня топлива по CAN значительно удобнее, поскольку сразу можно получитать большое количество других параметров из одной точки подключения. Но в случае с CAN есть проблема – Как найти пакет несущий в себе информацию об уровне топлива? Этот сигнал изменяется очень медленно, достать датчик уровня топлива из бака не всегда удобно и не всегда возможно.
В этой статье мы расскажем о поиске сигнала уровня топлива в CAN шине на примере автомобиля Toyota Camry V55 2017 г.в. Но сначала посмотрите видео:
Прежде чем подключаться к CAN и смотреть данные необходимо сузить пространство поиска, для этого изучим документацию на автомобиль и выясним как блок управления осуществляет фактическое измерение сигнала с датчика уровня топлива.
При изучении схем было выяснено, что датчик уровня топлива подключен непосредственно к панели приборов и именно панель приборов осуществляет фактическое измерение уровня топлива. Датчик уровня топлива подключен двумя проводами: Фиолетовый и Серый. Фиолетовый – общий а серый – сигнал уровня топлива.
Так же выяснить какой блок осуществляет измерение можно при помощи диагностического сканера. Для этого нужно заходить в каждый блок по отдельности, и смотреть в текущих параметрах есть ли там уровень топлива. Но в этом случае есть вероятность сбиться с правильного пути. Уровень топлива может и быть в текущих параметрах, но поступать он будет в исследуемый блок из другого места.
Итак, мы выяснили что уровень сигнала с датчика уровня топлива измеряет панель – демонтируем панель с автомобиля и подключим ее на лабораторном столе к источнику питания и анализатору CAN шины – CAN-Hacker. Точки подключения питания и CAN так же легко найти в документации.
Читайте также: Какие шины подходят для ниссан ноут
После подачи питания панель сразу начинает ругаться на низкий уровень топлива в баке.
На вход сигнала уровня топлива подключим низкоомный резистор или обычную лампочку накаливания, другой вывод которой подцепим к массе (GND)
Через некоторое время стрелка уровня топлива поползет в большую сторону. Этот процесс достаточно медленный поскольку измерение сигнала уровня топлива осуществляется с большим периодом для компенсации качания поплавка в баке. Процесс этот можно ускорить просто отключив-подключив питание панели.
Что же происходит в это время в CAN шине? Откроем программу CAN-Hacker и посмотрим
На скриншоте уже выделен пакет с несущий в себе информацию об уровне топлива. Как он был обнаружен? При подключении было видно что данные меняются достаточно быстро в пакета с ID меньше 0x614. Поэтому решено было смотреть на статичные данные в нижней части таблицы. При отключении лампочки от входа уровня топлива данные в пакете 617 менялись на такие:
Значение FF FF указывают на отсутствие датчика уровня топлива. Если мы вместо лампочки подключим низкоомный переменный резистор или сам датчик уровня топлива и будем изменять его сопротивление то данные в пятом и шестом байтах будут пропорционально изменяться с некоторой задержкой.
Уже после публикации видео внимательный зритель под ником may87ist указал на пакет с За что ему большое Спасибо. В этом пакете в шестом байте передается ОДНОБАЙТОВОЕ значение уровня топлива с меньшей дискретностью (точностью), но отслеживать это значение можно с более высокой скоростью. Все это сподвигло составить небольшую таблицу соответствия сопротивления датчика уровня топлива, значений в CAN и показаниями стрелки:
Для пакета с двухбайтовое значение:
02 40 73 Ohm На деление меньше макс
02 15 112 Ohm 3/4 бака
02 0A 148 Ohm между 1/2 и 3/4
01 8A 185 Ohm на деление больше половины
01 43 223 Ohm на деление больше половины
Для пакета с однобайтовое значение:
E6 73 Ohm На одно деление меньше максимального
CE 112 Ohm 3/4 бака
B2 148 Ohm между 1/2 и 3/4
93 185 Ohm На деление больше половины
73 223 Ohm На деление меньше половины
Таким способом можно достаточно уверенно находить медленно изменяющиеся сигналы на любом автомобиле. Так же нужно понимать что знание устройства автомобиля и принципов построения систем измерения каждой конкретной марки значительно ускоряет процесс поиска любых сигналов в CAN шине.
Видео:Поиск уровня топлива в CAN шине Toyota Camry 2017Скачать
13.35 Цифровая шина данных CAN
На автомобиле применены несколько сетевых шин обмена данными CAN (Controller Area Network) между блоками (модулями) управления различных систем и контроллерами исполнительных устройств автомобиля.
Отдельные блоки управления объединены друг с другом в общую сеть и могут обмениваться данными.
Шина является двунаправленной, т.е. любое подключённое к ней устройство может принимать и передавать сообщения.
Сигнал с чувствительного элемента (датчика) поступает в ближайший блок управления, который обрабатывает его и передаёт на шину данных CAN.
Любой блок управления, подключённый к шине данных CAN, может считывать этот сигнал, вычислять на его основе значение управляющего воздействия и управлять исполнительным сервомеханизмом.
Обмен данными по шине CAN
При обычном кабельном соединении электрических и электронных устройств осуществляется прямое соединение каждого блока управления со всеми датчиками и исполнительными элементами, от которых он получает результаты измерений или которыми управляет.
Усложнение системы управления приводит к чрезмерной длине или многочисленности кабельных линий.
По сравнению со стандартной кабельной разводкой шина данных обеспечивает:
- Уменьшение количества кабелей. Провода от датчиков тянутся только к ближайшему блоку управления, который преобразует измеренные значения в пакет данных и передаёт его в шину CAN.
- Управлять исполнительным механизмом может любой блок управления, который по шине CAN получает соответствующий пакет данных, и на его основе рассчитывает значение управляющего воздействия на сервомеханизм.
- Улучшение электромагнитной совместимости.
- Уменьшение количества штекерных соединений и уменьшение количества контактных выводов на блоках управления.
- Снижение веса.
- Уменьшение количества датчиков, т.к. сигналы одного датчика (например, с датчика температуры охлаждающей жидкости) могут быть использованы различными системами.
- Улучшение возможностей диагностирования. Т.к. сигналы одного датчика (например, сигнал скорости) используются различными системами, то в случае, если сообщение о неисправности выдают все использующие данный сигнал системы, неисправным является, как правило, датчик или блок управления, обрабатывающий его сигналы. Если же сообщение о неисправности поступает только от одной системы, хотя данный сигнал используется и другими системами, то причина неисправности, чаще всего, заключена в обрабатывающем блоке управления или сервомеханизме.
- Высокая скорость передачи данных – возможна до 1Мбит/с при максимальной длине линии 40 м. В настоящее время на а/м скорость передачи данных составляет от 83 Кбит/с до 500 Кбит/с.
- Несколько сообщений могут поочерёдно передаваться по одной и той же линии.
Читайте также: Ли шин йонг биография спортсмена
Шина данных CAN состоит из двужильного провода, выполненного в виде витой пары. К этой линии подключены все устройства (блоки управления устройствами).
Передача данных осуществляется с дублированием по обоим проводам, причём логические уровни шины данных имеют зеркальное отображение (то есть, если по одному проводу передаётся уровень логического нуля, то по другому проводу передаётся уровень логической единицы, и наоборот).
Двухпроводная схема передачи используется по двум причинам: для выявления ошибок и как основа надёжности.
Если пик напряжения возникает только на одном проводе (например, вследствие проблем с ЭМС (электромагнитная совместимость)), то блоки-приёмники могут идентифицировать это как ошибку и проигнорировать этот пик напряжения.
Если же произойдёт короткое замыкание или обрыв одного из двух проводов шины данных CAN, то благодаря интегрированной программно-аппаратной системе надёжности произойдёт переключение в режим работы по однопроводной схеме. Повреждённая передающая линия использоваться не будет.
Порядок и формат передаваемых и принимаемых пользователями (абонентами) сообщений определён в протоколе обмена данными.
Существенным отличительным признаком шины данных CAN по сравнению с другими шинными системами, базирующимися на принципе абонентской адресации, является соотнесённая с сообщением адресация.
Это значит, что каждому сообщению по шине данных CAN присваивается его постоянный адрес (идентификатор), маркирующий содержание этого сообщения (например: температура охлаждающей жидкости). Протокол шины данных CAN допускает передачу до 2048 различных сообщений, причём адреса с 3 по 2048 являются постоянно закреплёнными.
Объём данных в одном сообщении по шине данных CAN составляет 8 байт.
Блок-приёмник обрабатывает только те сообщения (пакеты данных), которые сохранены в его списке принимаемых по шине данных CAN сообщений (контроль приемлемости).
Пакеты данных могут передаваться только в том случае, если шина данных CAN свободна (т.е., если после последнего пакета данных последовал интервал в 3 бита, и никакой из блоков управления не начинает передавать сообщение).
При этом логический уровень шины данных должен быть рецессивным (логическая «1»).
Если несколько блоков управления одновременно начинают передавать сообщения, то вступает в силу принцип приоритетности, согласно которому сообщение по шине данных CAN с наивысшим приоритетом будет передаваться первым без потери времени или битов (арбитраж запросов доступа к общей шине данных).
Каждый блок управления, утрачивающий право арбитража, автоматически переключается на приём и повторяет попытку отправить своё сообщение, как только шина данных CAN снова освободится.
Кроме пакетов данных существует также пакет запроса определённого сообщения по шине данных CAN.
В этом случае блок управления, который может предоставить запрашиваемый пакет данных, реагирует на данный запрос.
В обычном режиме передачи пакеты данных имеют следующие конфигурации блоков (фреймы):
• Data Frame (фрейм сообщения) для передачи сообщений по шине данных CAN (например: температура охлаждающей жидкости).
• Remote Frame (фрейм запроса) для запроса сообщений по шине данных CAN от другого блока управления.
• Error Frame (фрейм ошибки) все подключённые блоки управления уведомляются о том, что возникла ошибка и последнее сообщение по шине данных CAN является недействительным.
Протокол шины данных CAN поддерживает два различных формата фреймов сообщения по шине данных CAN, которые различаются только по длине идентификатора:
- стандартный формат;
- расширенный формат.
В настоящее время используется стандартный формат.
Пакет данных для передачи сообщений по шине данных CAN состоит из семи последовательных полей:
• Start of Frame (стартовый бит): Маркирует начало сообщения и синхронизирует все модули.
• Arbitration Field (идентификатор и запрос): Это поле состоит из идентификатора (адреса) в 11 бит и 1 контрольного бита (Remote Transmission Request-Bit). Этот контрольный бит маркирует пакет как Data Frame (фрейм сообщения) или как Remote Frame (фрейм запроса) без байтов данных.
• Control Field (управляющие биты): Поле управления (6 бит) содержит IDE-бит (Identifier Extension Bit) для распознавания стандартного и расширенного формата, резервный бит для последующих расширений и — в последних 4 битах — количество байтов данных, заложенных в Data Field (поле данных).
• Data Field (данные): Поле данных может содержать от 0 до 8 байт данных. Сообщение по шине данных CAN длиной 0 байт используется для синхронизации распределённых процессов.
• CRC Field (контрольное поле): Поле CRC (Cyclic-Redundancy-Check Field) содержит 16 бит и служит для контрольного распознавания ошибок при передаче.
• ACK Field (подтверждение приёма): Поле ACK (Acknowledgement Field) содержит сигнал подтверждения приёма всех блоков-приёмников, получивших сообщение по шине CAN без ошибок.
• End of Frame (конец фрейма): Маркирует конец пакета данных.
• Intermission (интервал): Интервал между двумя пакетами данных. Интервал должен составлять не менее 3 битов. После этого любой блок управления может передавать следующий пакет данных.
• IDLE (режим покоя): Если ни один блок управления не передаёт сообщений, то шина CAN остаётся в режиме покоя до передачи следующего пакета данных.
Читайте также: A0009058504 датчик давления воздуха шин
Для обработки данных в режиме реального времени должна быть обеспечена возможность их быстрой передачи.
Это предполагает не только наличие линии с высокой физической скоростью передачи данных, но и требует также оперативного предоставления доступа к общей шине CAN, если нескольким блокам управления необходимо одновременно передать сообщения.
С целью разграничения передаваемых по шине данных CAN сообщений по степени срочности, для отдельных сообщений предусмотрены различные приоритеты.
Угол опережения зажигания, например, имеет высший приоритет, значения пробуксовки — средний, а температура наружного воздуха — низший приоритет.
Приоритет, с которым сообщение передаётся по шине CAN, определяется идентификатором (адресом) соответствующего сообщения.
Идентификатор, соответствующий меньшему двоичному числу, имеет более высокий приоритет, и наоборот.
Протокол шины данных CAN основывается на двух логических состояниях: Биты являются или «рецессивными» (логическая «1»), или «доминантными» (логический «0»). Если доминантный бит передаётся как минимум одним модулем, то рецессивные биты, передаваемые другими модулями, перезаписываются.
Если несколько блоков управления одновременно начинают передачу данных, то конфликт доступа к общей шине данных разрешается посредством «побитового арбитража запросов общего ресурса» с помощью соответствующих идентификаторов.
При передаче поля идентификатора блок-передатчик после каждого бита проверяет, обладает ли он ещё правом передачи, или уже другой блок управления передаёт по шине данных CAN сообщение с более высоким приоритетом.
Если передаваемый первым блоком-передатчиком рецессивный бит перезаписывается доминантным битом другого блока-передатчика, то первый блок-передатчик теряет своё право передачи (арбитраж) и становится блоком-приёмником.
Первый блок управления (N I) утрачивает арбитраж с 3-го бита.
Третий блок управления (N III) утрачивает арбитраж с 7-го бита.
Второй блок управления (N II) сохраняет право доступа к шине данных CAN и может передавать своё сообщение.
Другие блоки управления попытаются передать свои сообщения по шине данных CAN только после того, как она снова освободится. При этом право передачи опять будет предоставляться в соответствии с приоритетностью сообщения по шине данных CAN.
Помехи могут приводить к ошибкам в передаче данных. Такие, возникающие при передаче, ошибки следует распознавать и устранять. Протокол шины данных CAN различает два уровня распознавания ошибок:
- механизмы на уровне Data Frame (фрейм сообщения);
- механизмы на уровне битов.
Механизмы на уровне Data Frame
На основе передаваемого по шине данных CAN сообщения блок-передатчик рассчитывает контрольные биты, которые передаются вместе с пакетом данных в поле «CRC Field» (контрольные суммы). Блок-приёмник заново вычисляет эти контрольные биты на основе принятого по шине данных CAN сообщения и сравнивает их с контрольными битами, полученными вместе с этим сообщением.
Этот механизм проверяет структуру передаваемого блока (фрейма), то есть перепроверяются битовые поля с заданным фиксированным форматом и длина фрейма.
Распознанные функцией Frame Check ошибки маркируются как ошибки формата.
Механизмы на уровне битов
Каждый модуль при передаче сообщения отслеживает логический уровень шины данных CAN и определяет при этом различия между переданным и принятым битом. Благодаря этому обеспечивается надёжное распознавание глобальных и возникающих в блоке-передатчике локальных ошибок по битам.
В каждом пакете данных между полем «Start of Frame» и концом поля «CRC Field» должно быть не более 5 следующих друг за другом битов с одинаковой полярностью.
После каждой последовательности из 5 одинаковых битов блок-передатчик добавляет в поток битов один бит с противоположной полярностью.
Блоки-приёмники удаляют эти биты после приёма сообщения по шине данных CAN.
Если какой-либо модуль шины данных CAN распознаёт ошибку, то он прерывает текущий процесс передачи данных, отправляя сообщение об ошибке. Сообщение об ошибке состоит из 6 доминантных битов.
Благодаря сообщению об ошибке все подключённые к шине данных CAN блоки управления оповещаются о возникшей локальной ошибке и соответственно игнорируют переданное до этого сообщение.
После короткой паузы все блоки управления снова смогут передавать сообщения по шине данных CAN, причём первым опять будет отправлено сообщение с наивысшим приоритетом.
Блок управления, чьё сообщение по шине данных CAN обусловило возникновение ошибки, также начинает повторную передачу своего сообщения (функция Automatic Repeat Request).
Для разных областей управления применяются различные шины CAN. Они отличаются друг от друга скоростью передачи данных.
Скорость передачи по шине данных CAN области «двигатель и ходовая часть» (CAN-C) составляет 125 Кбит/с, а шина данных CAN «Салон» (CAN-B) вследствие меньшего количества особо срочных сообщений рассчитана на скорость передачи данных только 83 Кбит/с.
Обмен данными между двумя шинными системами осуществляется через так называемые «межсетевые шлюзы», т.е. блоки управления, подключённые к обеим шинам данных.
Оптоволоконная шина D2B (Digital Daten-Bus) данных применена для области «Аудио/коммуникации/навигация». Оптоволоконный кабель может передавать существенно больший объём информации, чем шина с медным кабелем.
- Свежие записи
- Нужно ли менять пружины при замене амортизаторов
- Скрипят амортизаторы на машине что делать
- Из чего состоит стойка амортизатора передняя
- Чем стянуть пружину амортизатора без стяжек
- Для чего нужны амортизаторы в автомобиле
🎬 Видео
Кан шина, что это? Поймет школьник! принцип работыСкачать
Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.Скачать
Блокировка can-шины в фаре Toyota/Lexus. Шок для опытных установщиков. Зачем думать и читать схемыСкачать
поиск нерабочей can шины, часть дваСкачать
CAN-Hacker Как искать пакеты в CAN шине на примере Toyota Prius-C AquaСкачать
Ремонт ошибок CAN шины Check Engine u0001 , u0141 , u1403 , u1110 , u110cСкачать
Что такое CAN шинаСкачать
Can адаптер Simple Soft XP для ToyotaСкачать
Подробно про CAN шинуСкачать
Для чего служит CAN-шина в сигнализацииСкачать
Toyota Camry 70 кузов настройка датчиков шин. Прошивка.Скачать
Чего ожидать от Камри 70 2.5 на пробеге 200+ тысяч км?Скачать
Check VSC Sistem, больное место камри 40.Скачать
iCAN для Toyota CamryСкачать
Can Bus - что это такое ? Зачем нужен ? Как настроить ?Скачать
CAN-шина, простой поиск данных в кан шине автомобиля. Как расшифровать и найти данные в кан шине?Скачать