Шина LIN (Local Interconnect Network)
В середине 90-х годов для обеспечения безопасности и комфорта на автомобиле «представительского» класса могло быть от 10 до 15 блоков управления.
В настоящее время такого количества блоков управления уже недостаточно, оно увеличилось, возможно, в два раза (или больше).
Такое стремительное увеличение количества блоков управления заставило производителей искать новые пути решения задач для поддержания бесперебойной и стабильной связи между блоками управления.
И в настоящий момент уже существуют следующие технологии передачи данных:
– шина LIN (однопроводная шина)
– шина MOST (оптоволоконная шина)
– беспроводная шина Bluetoot h
В данной статье мы рассмотрим шину LIN .
Шина под названием » LIN » — это сокращение от полного названия: » Local Interconnect Network «, то есть, «локальная коммутируемая сеть».
Это означает. что все коммутируемые блоки управлению подключены и располагаются в пределах одного ограниченного пространства, например, крыши автомобиля, двери автомобиля и так далее.
Обмен данными между коммутируемыми блоками системы LIN происходят по шине данных CAN .
У шины LIN есть особенность: она однопроводная.
Цвет изоляции провода — фиолетовый (на нем может быть цветная маркировка).
Толщина провода (площадь поперечного сечения) составляет около 0.35 мм2.
Провода шины LIN экранировать не обязательно.
Однако, как уже говорилось, скорости передачи данных по шине CAN и шине LIN различные.
Различными также являются и сигналы.
Для этого был придуман так называемый «Блок управления LIN-Master «, который является своеобразным «переводчиком» между шиной LIN и шиной CAN :
У этого блока существует довольно много задач:
— контроль передачи данных
— контроль скорости передачи данных
— постоянная диагностика работоспособоности всех блоков, подключенных к шине LIN
Итак, что такое LIN Master мы разобрались.
Но есть еще такое понятие, как LIN Slave .
Это не что иное, как исполнительные механизмы, электронные или электронномеханические узлы или блоки, получающие команды от блока LIN Master .
Но не только команды.
Может (и постоянно идет) опрос всех подключенных компонентов по текущему и фактическому состоянию, для своевременного обнаружения неисправности и возможности выполнять заданные функции.
Как видно из фото 1, для нескольких исполнительных механизмов требуется только один контакт () в блоке pin LIN Master .
Скорость передачи данных в шине LIN невысокая и составляет приблизительно от 5 до 25 кбит\сек.
Рецессивный уровень
Если на шину данных LIN не будет послана телеграмма или рецессивный бит, то на шину данных подается напряжение, практически равное напряжению аккумуляторной батареи.
Доминантный уровень
Для передачи доминирующего бита по шине данных LIN в передающем блоке управления шина данных замыкается на массу через приемопередатчик (трансивер) — см. фото 2 :
Надежность и стабильность передачи данных обеспечивается установлением определенных допусков в сигналах на рецессивном и доминантном уровнях.
Между блоками Slave и Master постоянно «курсируют» телеграммы определенной формы.
Блок управления LIN Master периодически посылает телеграммы, которые строго разделены на четыре составляющие:
1 — пауза в синхронизации
2 — ограничение синхронизации
3 — поле синхронизации
4 — поле идентификатора
В посланной телеграмме, так называемая «пауза в синхронизации» нужна для того, что бы «сообщить» блокам о том, что посылается телеграмма. Минимальная пауза в синхронизации равняется времени передачи 13 битов. Пауза посылается с доминантным уровнем.
Поле синхронизации требуется для того, что бы все исполнительные блоки могли настроиться или проверить свои настройки перед приемом телеграммы — оно состоит из строго определенной последовательности битов 0101010101.
LIN — цифровая шина в автомобиле
LIN -шина, это однопроводная цифровая шина для управления по одному проводу группой разнообразных исполнительных устройств, широко применяемая в современных автомобилях. Например двигателями заслонок климата, корректорами фар, замками и стеклоподъемниками дверей и т.п. Конкретно у меня сейчас стоит задача заставить управлять шаговыми двигателями корректора фар. Шаговые двигатели управляются драйвером-контроллером AMIS-30621 Моя задача сделать контроллер, который бы умел контролировать и управлять шаговыми моторчиками корректора фар. А чтоб сделать контроллер, необходимо изучить сам протокол данных LIN и конкретно сам даташит драйвера.
Протокол 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 bus что это
LIN (англ. Local Interconnect Network — локальная сеть) — стандарт промышленной сети, разработанный консорциумом европейских автопроизводителей и других известных компаний, включая Audi AG, BMW AG, Daimler Chrysler AG, Motorola Inc., Volcano Communications Technologies AB, Volkswagen AG и VolvoCar Corporation.
Протокол LIN предназначен для создания дешёвых локальных сетей обмена данными на коротких расстояниях. Он служит для передачи входных воздействий, состояний переключателей на панелях управления и так далее, а также ответных действий различных устройств, соединённых в одну систему через LIN, происходящих в так называемом «человеческом» временном диапазоне (порядка сотен миллисекунд).
Основные задачи, возлагаемые на LIN консорциумом европейских автомобильных производителей — объединение автомобильных подсистем и узлов (таких как дверные замки, стеклоочистители, стеклоподъёмники, управление магнитолой и климат-контролем, электролюк и так далее) в единую электронную систему. LIN-протокол утверждён Европейским Автомобильным Консорциумом как дешёвое дополнение к сверхнадёжному протоколу CAN.
LIN и CAN дополняют друг друга и позволяют объединить все электронные автомобильные приборы в единую многофункциональную бортовую сеть. Причём область применения CAN — участки, где требуется сверхнадёжность и скорость; область же применения LIN — объединение дешёвых узлов, работающих с малыми скоростями передачи информации на коротких дистанциях и сохраняющих при этом универсальность, многофункциональность, а также простоту разработки и отладки. Стандарт LIN включает технические требования на протокол и на среду передачи данных. Как последовательный протокол связи, LIN эффективно поддерживает управление электронными узлами в автомобильных системах с шиной класса «А» (двунаправленный полудуплексный), что подразумевает наличие в системе одного главного (англ. master ) и нескольких подчинённых (англ. slave ) узлов.