Как проверить шину lin в автомобиле
LIN — цифровая шина в автомобиле
Sync Break — передача данных всегда начинается с притягиванию к нулю шины не менее чем на 13 тактов. Увидев эту притяжку, все устройства на шине оживают, и понимают, что сейчас пойдет что то интересное и начинают ждать. А далее следует:
Sync Field — сигнал синхронизации. Все устройства на шине обязаны подстроится под этот сигнал и подстроить свои тактовые сигналы.
PID Field — служебный байт, который содержит адрес конкретного устройства на шине, последующую длину данных байт и два бита контроля ошибок
Data — передаваемые данные, до восьми байт
Checksum — контрольная сумма
Общее описание стало понятно, пора было собрать макетную плату контроллера шины.
За основу взят микроконтроллер ATTiny13 и транслятор-приемник шины LIN TJA1020 Регулятор положения сделан на обычном энкодере. Вот получилась такая схема:
Далее пошло изучение даташита контроллера шагового мотора. AMIS-30621 это контроллер последнего поколения, который включает в себя все, что можно. Он имеет ЦАП, контроль тока, контроль температуры, напряжения, режим разгона-торможения, настройку силы тока и еще кучу настраиваемых параметров. Достаточно ему подать команду, насколько нужно нашагать, остальное полностью он делает сам. Очень умный драйвер короче. Даташит немного замудреный, много неясностей было при прочтении, но в итоге удалось оживить этого монстра, читать с него данные и управлять им. Вот пример из анализатора:
А вот пример из кода:
Сначала нужно считать данные состояния, это обязательное условие из даташита:
void GetFullStatus (void)
<
// PREPARING FRAME
SyncLIN (); // Sync Break и Sync Field
DataTX(0b00111100); // Identifier
DataTX(0x80); // AppCMD
DataTX(0x81); // CMD
DataTX(0b11110000); // slave address
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0b00001101); // CHK байт контроля ошибок
// READING FRAME
SyncLIN (); // Sync Break и Sync Field
DataTX(0B01111101);
В ответ драйвер мотора посылает восемь байт своего состояния, после этого можно слать команду установки на нужную позицию — мотор оживает и делает нужное количество шагов:
SyncLIN ();// Sync Break и Sync Field
DataTX(0x3c); // Identifier
DataTX(0x80); // AppCMD
DataTX(0x8b); // CMD
DataTX(0xf0); // AD1[6:0] slave address 1 шагового мотора
DataTX(0x55); // DATA нужная позиция 1 мотора (16 бит, поэтому в два захода)
DataTX(0xff); // DATA нужная позиция 1 мотора
DataTX(0xNN); // DATA slave address 2-го шагового мотора
DataTX(0xNN); // DATA нужная позиция 2 мотора (16 бит, поэтому в два захода)
DataTX(0xNN); // DATA нужная позиция 2 мотора
DataTX(0xNN); // CHK контрольная сумма
Это минимальный код, заставляющий двигаться шаговый мотор. В железе это вышло так:
Внизу: плата контроллера
Слева: программатор
Вверху: шаговый мотор и драйвер
Плата драйвера крупнее:
В итоге можно организовать корректор вертикального положения фар, управляемый при помощи энкодера (управлять шаговым мотором при помощи шагового энкодера — что может быть лучше?) с отдельным управлением левой и правой фарой (для сервисной настройки фар) с возможностью оперативного изменения угла энкодером и все это от одного управляющего проводка.
Что такое LIN шина и как я восстанавливал стекло подъемники.
Для начала предыстория.
При покупке машины мне сказали что есть проблема со стекло подъемниками, а точнее с водительским и пультом управления на двери водителя. А по весне в одно утро выйдя к машине я обнаружил наполовину открытое задние правое стекло.
Изучив кучу статей как и кто ремонтировал стекло подъемники был составлен план действий.
1- Проверка всех разъемов в стойках
2- Проверка жгутов проводов в дверях
3- По очередное отключение исполнительных блоков для выявления неисправного.
4- Визуальный осмотр исполнительных блоков
5- Проверка шины управления LIN
Так выглядит сигнал в спокойном состояние при подаче команды добавляется еще один БИТ и его добавление выглядит как всплеск амплитуды. Проверять сигнал я решил на блоке кнопок водителя так как все вело к нему. Проверив предварительно что шина не коратит на массу я подключил осциллограф к тонкому красному проводу с синей полосой.
И увиденное меня удивило сигнал был сильно искажен дополнительными помехами но откуда они взялись? Отключаю по одному блоки управления на дверях нет изменения отключаю по одному блоки кнопок и после отключения водительского блока сигнал выравнялся.
Так истина где то рядом). разрезаю провод LIN блика кнопок водителя и подсоединяю его обратно. Смотрю что твориться по сигналу чисто с блока и понимаю что искажения идут с него.Но при этом при нажатие на клавиши в сигнале присутствуют изменения.
Причина ясна что то в блоке кнопок водителя работает не так. Для полной уверенности разобрал его и осмотрел сфоткал все элементы (микросхемы). И обнаружил что на выходе блока стоит преобразователь сигнала и судя по всему именно он то и бздит.
Стоимость нового блока за номером 3746100XK80XA89 от 4800 до 6300
Б.У. 900 р
Заказал с разбора не заюзаный.
После установки все заработало.
Одновременно с работой над стекло подъемниками переделал подключение авто сигнализации — убрал не нужные сопли.и пере подключил концевики дверей через диоды для развязки.
Ремонт LIN-шины
Итак, с самой покупки автомобиля у меня не работала задняя дверь. Ну как не работала? Точнее работала, но не полностью. Закрыть и открыть ее можно было вручную, а центральный замок на ней не срабатывал. Плюс стекло можно было опустить и поднять только кнопкой на этой двери, а кнопку на водительской двери она не слушала. Короче, жила как затворник, отдельно от всех. Выбилась, так сказать, из компании))
VIDA ругалась на lin-шину. DDM-B1A9887 Цепь #1 шины LIN. Ошибки сигнала / сообщения шины. Сообщение об отсутствии.
То есть блок двери водителя не видит блок управления левой задней двери.
Почему это может быть? Отсутствие питания на блоке или обрыв lin-шины.
Предохранитель целый, обшивка двери снята, питание на блоке проверено. Всё норм. Тогда надо искать обрыв шины.
Но сначала немного теории. Что же за зверь такой lin-шина и в чем ее основное отличие от can-шины.
Шина LIN — это простая последовательная однопроводная ( в отличие от двухпроводной can-шины) шина для автомобильных применений и используется в тех случаях когда применение CAN шины — дорого. По шине LIN управляются различные приводы (корректоры фар, заслонки климатической системы, приводы центрального замка), а так же собирается информация с простых датчиков (датчики дождя, света, температуры). Особенностью шины LIN является то, что в сети присутствует два вида узлов: Master и Slave, Master — ведущий, Slave — подчиненный. Master (в нашем случае — это блок управления водительской двери) может опрашивать Slave (в нашем случае — это блоки управления в остальных дверях) о его состоянии, будить его, отправлять ему команды. Когда говорит Master, все остальные молчат. Тогда как по can-шине все блоки могут общаться одновременно.
Открыв схему, увидел что провод шины имеет зеленый с белым цвета.
Далее действовал чисто логически, что меня и не подвело.
На самих дверных картах и по кузову провода закреплены достаточно жестко и что должно случиться, чтобы они порвались, мне неизвестно.
А вот слабые места — это переходы в резиновой гофре из салона в двери. Здесь они постоянно изгибаются туда-сюда.
Задняя левая дверь вообще обычно используется реже всех остальных. И я решил посмотреть что же происходит в гофре водительской двери.
Скидываем дверь (занимает две минуты):
— отсоединяем разъем от двери,
— откручиваем два болта на 10 (указаны стрелками),
— откручиваем ограничитель открывания двери,
— поднимаем дверь вверх и снимаем (как межкомнатную).
Стаскиваем гофру с разъема и находим нашего оборванца.
Стаскиваем гофру дальше и видим еще много чудес порванной изоляции.
Ну что ж, будем восстанавливать. Снимаем заглушку с разъема
поддеваем иголочкой защелку пина
.
Далее сращиваем провода. Кто-то делает это через обжимы. Я сделал скрутку, запаял ее и посадил сверху термоусадку. Далее по очереди (чтоб не перепутать положение) вытаскиваем пин каждого провода с порванной изоляцией и на место обрыва сажаем термоусадку.
Сборка производится в обратном порядке.
Если на петлях больше никакие болты не трогали, то и регулировка двери не понадобится.
По итогу все заработало даже без скидывания ошибок.
Рекомендую всем владельцам авто с пробегом 200000+ километров снять дверь и распотрошить гофру даже если ничего не беспокоит. Думаю, что примерно такую же картину в плане изоляции увидят все.
Всем читающим спасибо.
Всем добра!
Автомобильный справочник
для настоящих любителей техники
LIN шина
LIN протокол разработан для создания дешевых локальных сетей обмена данными на коротких расстояниях. Он служит для передачи входных воздействий, состояний переключателей на панелях управления, а также ответных действий различных устройств, соединенных в одну систему через LIN.
Первая спецификация стандарта под брендом LIN была издана в 1999 году по инициативе консорциума европейских автопроизводителей и других известных компаний, включая Audi AG, BMW AG, Daimler Chrysler AG, Motorola Inc., Volcano Communications Technologies AB, Volkswagen AG и VolvoCar Corporation. Последняя спецификация, LIN 2.2, издана в 2010 году. В настоящее время документы стандарта переданы под контроль Международной организации по стандартизации (ISO), где стандарту был присвоено новое наименование ISO 17987. В связи с политикой ISO копия стандарта стала платной.
Шина LIN
LIN шина (локальная сеть воздействия) была разработана для удовлетворения потребностей в связи для систем класса А (см. табл. «Классификация шинных систем» ) с использованием самого экономичного оборудования. Типичные области применения:
Текущую спецификацию LIN можно найти на сайте консорциума LIN.
Важные особенности шины LIN:
Система передачи в шине LIN
Шина LIN представляет собой неэкранированный однопроводный кабель. Уровень шины может принимать два логических состояния. Доминантный уровень соответствует напряжению приблизительно 0 В (масса) и представляет собой логический 0. Рецессивный Уровень соответствует напряжению батареи Ubatt и представляет собой логическую 1.
Из-за наличия разных вариантов электрических цепей уровни могут быть разными. Определение допусков на передачу и прием в области рецессивных и доминантных уровней обеспечивает стабильную передачу данных. Диапазоны допусков шире на приемном конце (рис. «Уровень напряжения на линии данных шины LIN» ), чтобы действительные сигналы тоже можно было получать, несмотря па излучаемые помехи.
Скорость передачи по шине LIN ограничена величиной 20 кбит/с. Это компромисс между большой крутизной фронта импульсов, необходимой для синхронизации ведомых устройств, с одной стороны, и небольшой его крутизной, необходимой для улучшения ЕМС — с другой. Рекомендуемая скорость передачи составляют 2400, 9600 и 19200 бит/с. Минимально допустимая скорость составляет 1 кбит/с.
Максимальное количество узлов не регламентируется в спецификации LIN. Теоретически оно ограничено количеством доступных идентификаторов сообщений. Возможности линии и узла и крутизна фронта импульсов ограничивают сочетание длины и количества узлов сети LIN. Рекомендуется не более 16 узлов.
Пользователи шины обычно располагаются в линейной топологии; однако эта топология не является обязательной.
Доступ к шине LIN
Доступ к шине LIN обеспечивается на основе доступа «ведущий-ведомый». В сети имеется ведущее устройство, инициирующее каждое сообщение. Ведомое устройство имеет возможность ответить. Обмен сообщениями происходит между ведущим и одним, несколькими либо всеми ведомыми устройствами.
Во время обмена сообщениями между ведущим и ведомым устройством возможны следующие взаимосвязи:
Протокол LIN
Фрейм данных LIN
Информация на шине LIN встраивается в определенный фрейм данных, фрейм LIN (рис. «Фрейм LIN» ). Инициированное ведущим устройством сообщение начинается с заголовка. В поле сообщения (ответ) содержится различная информация, зависящая от типа сообщения. Если ведущее устройство передает инструкции ведомому устройству, то оно описывает поле сообщения данными, которые должно использовать ведомое устройство. В случае запроса данных адресуемое ведомое устройство описывает поле сообщения данными, запрошенными ведущим устройством.
Заголовок
Заголовок состоит из разрыва синхронизации, поля синхронизации и поля идентификации.
Синхронизация LIN
Синхронизация происходит в начале каждого фрейма для обеспечения последовательной передачи данных между ведущим и ведомыми устройствами. Сначала разрывом синхронизации четко определяется начало фрейма. Он состоит из не менее 13 последовательных доминантных уровней и одного рецессивного уровня.
После разрыва синхронизации ведущее устройство передает поле синхронизации, состоящее из последовательности битов 01010101. Это дает ведомым устройствам возможность адаптироваться к временной оси ведущего. Тактовый импульс ведущего устройства не должен отличаться от номинального значения более чем на ±0,5%. Тактовый импульс ведомых устройств перед синхронизацией может иметь разброс ±15 %, если синхронизация к концу сообщения достигает уровня ±2 %. Таким образом, ведомым устройствам не нужен дорогой кварцевый генератор — они могут быть выполнены, например, с экономичной резистивно-емкостной цепью.
Идентификатор LIN
Третий байт в заголовке служит идентификатором LIN. По аналогии с шиной CAN здесь используется адресация по содержанию — идентификатор дает информацию о содержании сообщения. Все подключенные к шине узлы на основании этой информации решают, намерены ли они получить и обработать сообщение или же проигнорировать его (фильтрация при приемке).
Шесть или восемь битов в поле идентификатора определяют сам идентификатор; из них получается 64 возможных идентификатора (ID). Имеются следующие значения:
Из 64 возможных сообщений 32 могут содержать только два байта данных, 16 — четыре байта данных, и остальные 16 — восемь байтов данных.
Последние два разряда в поле идентификации содержат контрольные суммы, защищающие идентификатор от ошибок при передаче и неправильного распределения сообщений.
Поле данных
После передачи ведущим устройством заголовка начинается передача фактических данных. Ведомые устройства по переданному идентификатору определяют, являются ли они адресатами и, при необходимости, отправляют ответ в поле данных.
В один фрейм можно включить несколько сигналов. Здесь у каждого сигнала есть один генератор, т.е. он всегда описывается одним и тем же узлом сети. Во время работы не разрешается сопоставлять сигналу другой генератор, что возможно в других сетях с управлением по времени.
Данные в ответе ведомого устройства защищаются контрольной суммой (CS).
Описательный файл LIN
Конфигурация шины LIN, т.е. спецификация пользователей сети, сигналов и фреймов, выполняется в описательном файле LIN. Спецификация LIN для этой цели имеет подходящий язык конфигурации.
Из описательного файла LIN автоматически генерируется набор кодов на С и файлов заголовков; эти коды и файлы используются для реализации функций ведущего и ведомых устройств в ЭБУ, расположенных на шине. Таким образом, описательный файл LIN служит для конфигурации всей сети LIN. Это общий интерфейс между автопроизводителем и поставщиками ведущих и ведомых устройств.
Составление графика отправки сообщений
Таблица-график в описательном файле LIN определяет порядок и время отправки сообщений. Часто запрашиваемая информация отправляется время от времени. Когда таблица проработана, ведущее устройство снова начинает с первого сообщения. Последовательность обработки можно изменить в зависимости от режима работы (например, активна/неактивна диагностика, включено/ выключено зажигание).
Таким образом, известен фрейм передачи каждого сообщения. Детерминированные характеристики гарантируются тем фактом, что все передачи инициируются ведущим Устройством в случае управления доступом по принципу «ведущий-ведомый».
Управление сетью LIN
Для минимизации тока замкнутой цепи узлы сети LIN можно переводить в спящий режим. Это можно сделать двумя способами. Ведущее устройство передает команду «перейти в спящий режим» зарезервированным идентификатором 60, либо ведомые устройства переходят в спящий режим автоматически, если в течение относительно длительного времени (4 секунды) не было передачи данных по шине. И ведущее, и ведомые устройства могут снова активировать сеть. Для этого необходимо передать сигнал активации. Он состоит из байта данных с номером 128, обозначающим содержание. После перерыва времени бита 4-64 (разграничитель активации) все узлы должны быть инициализированы и способны ответить ведущему устройству.
Шина LIN. Сканирование “молчащих” блоков и датчиков
Как было описано в предыдущей статье, в структуре шины LIN есть Master узел и Slave узлы. Master опрашивает узлы Slave, а те ему отвечают. В большинстве случаев если просто подать питание на Slave и посмотреть что происходит на его выходе шины LIN, то мы ничего не увидим, поскольку Slave ожидает запрос или пакет от Master узла.
Master узлом как правило является какой-либо блок управления: Блок управления двигателем, салоном, креслами и т. д. А Slave узлы это различные цифровые датчики, приводы, блоки кнопок управления или джойстики.
Что же делать если стоит задача “оживить” Slave в отрыве от мастера? Например во время проведения ремонта с целью выяснить исправность Slave узла и вообще шины LIN.
Для решения этой задачи удобно использовать LIN адаптер LIN-K совместно с USB-CAN интерфейсом CAN-Hacker. Программное обеспечение нашего анализатора шины LIN позволяет автоматически искать запросы для Slave узлов сети LIN.
Блок управления стеклоподъемниками автомобиля LADA. Slave узел на шине LIN
В качестве примера рассмотрим работу с блоком управления стеклоподъемниками от автомобиля LADA Granta.
Блок управления стеклоподъемнками является Slave узлом в LIN шине автомобиля LADA, а Master узлом является блок управления комфортом, который отправляет запросы на Slave узлы, а те в свою очередь отвечают ему о своем состоянии. В частности блок управления стеклоподъемниками отвечает статусом нажатия кнопок.
Блок комфорта автомобиля LADA. Master на шине LIN
Если соединить эти блоки в сеть и параллельно подключить LIN анализатор LIN-K на скорости 9600 бод и будем нажимать кнопки на блоке стеклоподъемников, то мы увидим следующий обмен с пакетами имеющими >
Пакеты с данными: 00 00 00 C0 – говорят о том, что кнопки не нажаты, если же нули меняются на другие числа, например 20 02 00 С0 говорят о нажатии кнопок.
Теперь представим, что мастер узла в лице блока комфорта у нас нет, а запустить Slave – блок стеклоподъемников нужно. Для этого подадим питание на исследуемый блок и LIN адаптер и подключимся к выводу LIN.
Выберем в программе LIN-K виртуальный COM порт к которому подключен наш LIN адаптер, нажмем Connect. Затем установим скорость LIN 9600 бод и нажмем Open LIN.
Настроим LIN-K на передачу запросов в заданном диапазоне – функция Bombing
В такой конфигурации LIN-K будет передавать запросы узлу Slave в диапазоне всех возможных ID на шине LIN от 0 до 0x3C. С каждым ID будет передаваться по 10 запросов.
В случае если Slave прореагирует на отправленный запрос мы увидим этот факт в окне приема:
Как видно из скриншота Slave прореагировал на посылаемый ему запрос с >
Следует обратить внимание на то, что в передаваемых LIN анализатором ID автоматически рассчитываются биты защиты и значение ID отличается от значения в счетчике, например по счетчику а передаваемое значение с битами защиты будет равно =0x42
Далее мы можем убрать флаг Bombing и установить значение ID для Master запроса = 03 и мы будем получать ответы от “ожившего” блока кнопок