CAN (англ. Controller Area Network — сеть контроллеров) — стандарт промышленной сети, ориентированный, прежде всего, на объединение в единую сеть различных исполнительных устройств и датчиков. Режим передачи — последовательный, широковещательный, пакетный.
CAN разработан компанией Robert Bosch GmbH в середине 1980-х и в настоящее время широко распространён в промышленной автоматизации, технологиях «умного дома», автомобильной промышленности и многих других областях. Стандарт для автомобильной автоматики.
Содержание
Описание стандарта [ править | править код ]
Непосредственно стандарт CAN компании Bosch определяет передачу в отрыве от физического уровня — он может быть каким угодно, например, радиоканалом или оптоволокном. Но на практике под CAN-сетью обычно подразумевается сеть топологии «шина» с физическим уровнем в виде дифференциальной пары, определённым в стандарте ISO 11898. Передача ведётся кадрами, которые принимаются всеми узлами сети. Для доступа к шине выпускаются специализированные микросхемы — драйверы CAN-шины.
Общие сведения [ править | править код ]
CAN является синхронной шиной с типом доступа Collision Resolving (CR, разрешение коллизии), который, в отличие от Collision Detect (CD, обнаружение коллизии) сетей (Ethernet), детерминировано (приоритетно) обеспечивает доступ на передачу сообщения, что особо ценно для промышленных сетей управления (fieldbus). Передача ведётся кадрами. Полезная информация в кадре состоит из идентификатора длиной 11 бит (стандартный формат) или 29 бит (расширенный формат, надмножество предыдущего) и поля данных длиной от 0 до 8 байт. Идентификатор говорит о содержимом пакета и служит для определения приоритета при попытке одновременной передачи несколькими сетевыми узлами.
Рецессивные и доминантные биты [ править | править код ]
Для абстрагирования от среды передачи спецификация CAN избегает описывать биты данных как «0» и «1». Вместо этого применяются термины «рецессивный» бит и «доминантный» бит, при этом подразумевается, что при передаче одним узлом сети рецессивного бита, а другим доминантного, принят будет доминантный бит. Например, при реализации физического уровня на радиоканале отсутствие сигнала означает рецессивный бит, а наличие — доминантный; тогда как в типичной реализации проводной сети рецессив бывает при наличии сигнала, а доминант, соответственно, при отсутствии. Стандарт сети требует от «физического уровня», фактически, единственного условия: чтобы доминантный бит мог подавить рецессивный, но не наоборот. Например, в оптическом волокне доминантному биту должен соответствовать «свет», а рецессивному — «темнота». В электрическом проводе может быть так: рецессивное состояние — высокое напряжение на линии (от источника с большим внутренним сопротивлением), доминантное — низкое напряжение (доминантный узел сети «подтягивает» линию на землю). Если линия находится в рецессивном состоянии, перевести её в доминантное может любой узел сети (включив свет в оптоволокне или закоротив высокое напряжение). Наоборот — нельзя (включить темноту нельзя).
Виды кадров [ править | править код ]
- Кадр данных (data frame) — передаёт данные;
- Кадр удаленного запроса (remote frame) — служит для запроса на передачу кадра данных с тем же идентификатором;
- Кадр перегрузки (overload frame) — обеспечивает промежуток между кадрами данных или запроса;
- Кадр ошибки (error frame) — передаётся узлом, обнаружившим в сети ошибку.
Кадры данных и запроса отделяются от предыдущих кадров межкадровым промежутком.
Формат кадра [ править | править код ]
Базовый формат кадра данных [ править | править код ]
Поле | Длина (в битах) | Описание |
---|---|---|
Начало кадра (SOF) | 1 | Сигнализирует начало передачи кадра |
Идентификатор | 11 | Уникальный идентификатор |
Запрос на передачу (RTR) | 1 | Должен быть доминантным |
Бит расширения идентификатора (IDE) | 1 | Должен быть доминантным (определяет длину идентификатора) |
Зарезервированный бит (r0) | 1 | Резерв |
Длина данных (DLC) | 4 | Длина поля данных в байтах (0-8) |
Поле данных | 0-8 байт | Передаваемые данные (длина в поле DLC) |
Контрольная сумма (CRC) | 15 | Контрольная сумма всего кадра |
Разграничитель контрольной суммы | 1 | Должен быть рецессивным |
Промежуток подтверждения (ACK) | 1 | Передатчик шлёт рецессивный, приёмник вставляет доминанту |
Разграничитель подтверждения | 1 | Должен быть рецессивным |
Конец кадра (EOF) | 7 | Должен быть рецессивным |
Первые 7 бит идентификатора не должны быть все рецессивными.
Расширенный формат кадра данных [ править | править код ]
Поле | Длина (в битах) | Описание |
---|---|---|
Начало кадра (SOF) | 1 | Сигнализирует начало передачи кадра |
Идентификатор A | 11 | Первая часть идентификатора |
Подмена запроса на передачу (SRR) | 1 | Должен быть рецессивным |
Бит расширения идентификатора (IDE) | 1 | Должен быть рецессивным (определяет длину идентификатора) |
Идентификатор B | 18 | Вторая часть идентификатора |
Запрос на передачу (RTR) | 1 | Должен быть доминантным |
Зарезервированные биты (r1 и r0) | 2 | Резерв |
Длина данных (DLC) | 4 | Длина поля данных в байтах (0-8) |
Поле данных | 0-8 байт | Передаваемые данные (длина в поле DLC) |
Контрольная сумма (CRC) | 15 | Контрольная сумма всего кадра |
Разграничитель контрольной суммы | 1 | Должен быть рецессивным |
Промежуток подтверждения (ACK) | 1 | Передатчик шлёт рецессивный, приёмник вставляет доминанту |
Разграничитель подтверждения | 1 | Должен быть рецессивным |
Конец кадра (EOF) | 7 | Должен быть рецессивным |
Идентификатор получается объединением частей A и B.
Формат кадра удаленного запроса [ править | править код ]
Совпадает с кадрами данных стандартного или расширенного формата, за двумя исключениями:
- В поле RTR рецессив вместо доминанты.
- Отсутствует поле данных.
Арбитраж доступа [ править | править код ]
При свободной шине любой узел может начинать передачу в любой момент. В случае одновременной передачи кадров двумя и более узлами проходит арбитраж доступа: передавая идентификатор, узел одновременно проверяет состояние шины. Если при передаче рецессивного бита принимается доминантный — считается, что другой узел передаёт сообщение с большим приоритетом, и передача откладывается до освобождения шины. Таким образом, в отличие, например, от Ethernet в CAN не происходит непроизводительной потери пропускной способности канала при коллизиях. Цена этого решения — возможность того, что сообщения с низким приоритетом никогда не будут переданы.
Контроль ошибок [ править | править код ]
CAN имеет несколько механизмов контроля и предотвращения ошибок:
- Контроль передачи: при передаче битовые уровни в сети сравниваются с передаваемыми битами.
- Дополняющие биты (bit stuffing): после передачи пяти одинаковых битов подряд автоматически передаётся бит противоположного значения. Таким образом кодируются все поля кадров данных или запроса, кроме разграничителя контрольной суммы, промежутка подтверждения и EOF.
- Контрольная сумма: передатчик вычисляет её и добавляет в передаваемый кадр, приёмник считает контрольную сумму принимаемого кадра в реальном времени (одновременно с передатчиком), сравнивает с суммой в самом кадре и в случае совпадения передаёт доминантный бит в промежутке подтверждения.
- Контроль значений полей при приёме.
Разработчики оценивают вероятность невыявления ошибки передачи как 4,7×10 −11 .
Скорость передачи и длина сети [ править | править код ]
Диапазон скоростей [ править | править код ]
Все узлы в сети должны работать с одной скоростью. Стандарт CAN не определяет скоростей работы, но большинство как отдельных, так и встроенных в микроконтроллеры адаптеров позволяют плавно менять скорость в диапазоне, по крайней мере, от 20 килобит в секунду до 1 мегабита в секунду. Существуют решения, выходящие далеко за рамки данного диапазона.
Предельная длина сети [ править | править код ]
Приведённые выше методы контроля ошибок требуют, чтобы изменение бита при передаче успело распространиться по всей сети к моменту замера значения. Это ставит максимальную длину сети в обратную зависимость от скорости передачи: чем больше скорость, тем меньше длина. Например, для сети стандарта ISO 11898 предельные длины составляют приблизительно:
1 Мбит/с | 40 м |
500 кбит/с | 100 м |
125 кбит/с | 500 м |
10 кбит/с | 5000 м |
Использование оптопар для защиты устройств от высоковольтных помех в сети ещё больше сокращает предельную длину, тем больше чем больше задержка сигнала в оптопаре. Сильно разветвлённые сети (паутина) также снижают скорость из-за множества отражений сигнала и большей электрической ёмкости шины.
Протоколы высокого уровня [ править | править код ]
Базовой спецификации CAN недостаёт многих возможностей, требуемых в реальных системах: передачи данных длиннее 8 байт, автоматического распределения идентификаторов между узлами, единообразного управления устройствами различных типов и производителей. Поэтому вскоре после появления CAN на рынке начали разрабатываться протоколы высокого уровня для него. В число распространённых на данный момент протоколов входят:
Применение CAN в автомобилестроении [ править | править код ]
Во всех высокотехнологичных системах современного автомобиля применяется CAN-протокол для связи ЭБУ с дополнительными устройствами и контроллерами исполнительных механизмов и различных систем безопасности. В некоторых автомобилях CAN связывает IMMO, приборные панели, SRS блоки и т. д.
Также протокол CAN ISO 15765-4 вошел в состав стандарта OBD-II.
Современный автомобиль, к сожалению или к счастью — решать Вам, уже не тот ящик на колесах, с полутора десятками проводов, в котором мог разобраться мало-мальски грамотный человек, и даже починить, если что-то сломалось…
Современный автомобиль — это уже компьютер на колесах, хотите ли Вы этого или нет… И даже если Вы и не подозреваете об этом, то только по причине того, что занимаются ремонтом Вашего автомобиля профессионалы. Именно они и должны выполнять все работы на Вашем авто. Соответственно и установку дополнительного оборудования лучше доверить специалистам.
Часто при обсуждении вопросов дополнительной охраны автомобиля приходится "читать лекции" клиентам, объясняя, иногда очень долго, почему на их автомобиль сигнализация должна ставиться не 1 час, а как минимум 10 часов, а иногда и полтора — два дня. И часто в этих разговорах приходится упоминать такое словосочетание как "Кан шина", что частенько вводит в ступор клиентов.
Так что же это такое — КАН ШИНА?
И для чего она в автомобиле?
Сначала ответ на вопрос — для чего?:
Как сэкономить медь?:
Подсчитано, что за последние пять лет число опций в автомобиле, являющихся в большинстве своем потребителями электрической энергии, увеличилось вдвое. И произошло это вовсе не по прихоти автопроизводителей, а благодаря растущим потребностям покупателей в комфорте и законодательным требованиям к безопасности и охране окружающей среды
Все бы ничего, но возможности электрооборудования не безграничны. И если раньше конструкторы решали вопросы, в основном связанные с увеличением надежности, то сейчас приходится думать над созданием принципиально новых схем, которые либо изменят традиционную "архитектуру" электрики, либо позволят ей приспособиться к поступи научно-технического прогресса.
Шины не для колес:
Использующаяся до сих пор однопроводная схема подразумевает, что отрицательные выводы всех потребителей электроэнергии соединяются с "массой" — кузовом и другими металлическими частями автомобиля, которые выступают в роли второго, минусового провода. Однако когда общая длина реальных проводов, подключенных от потребителей к плюсу генератора, достигла полукилометра, а их вес приблизился к центнеру, выяснилось, что однопроводная схема не столь уж и хороша, какой казалось прежде.
Поэтому появилась мультиплексная проводка, а с ней — шина CAN (от Controller Area Network), которую при традиционном сохранении минуса на "массе" применяют вместо "растолстевших" жгутов старой схемы на современных моделях машин, насыщенных электроприводами и электронными блоками.
Далее неплохая статья объясняющая принципы конфигурирования и управления всеми устройствами в современном автомобиле:
Бортовая электроника современного автомобиля в своем составе имеет большое количество исполнительных и управляющих устройств. К ним относятся всевозможные датчики, контроллеры и т.д.
Для обмена информацией между ними требовалась надежная коммуникационная сеть.
В середине 80-х годов прошлого столетия компанией BOSCH была предложена новая концепция сетевого интерфейса CAN (Controller Area Network).
CAN-шина обеспечивает подключение любых устройств, которые могут одновременно принимать и передавать цифровую информацию (дуплексная система). Собственно шины представляет собой витую пару. Данная реализация шина позволила снизить влияние внешних электромагнитных полей, возникающих при работе двигателя и других систем автомобиля. По такой шине обеспечивается достаточно высокая скорость передачи данных.
Как правило, провода CAN-шины оранжевого цвета, иногда они отличаются различными цветными полосами (CAN-High — черная, CAN-Low — оранжево-коричневая).
Благодаря применению данной системы из состава электрической схемы автомобиля высвободилось определенное количество проводников, которые обеспечивали связь, например, по протоколу KWP 2000 между контроллером системы управления двигателем и штатной сигнализацией, диагностическим оборудованием и т.д.
Скорость передачи данных по CAN-шине может достигать до 1 Мбит/с, при этом скорость передачи информации между блоками управления (двигатель — трансмиссия, ABS — система безопасности) составляет 500 кбит/с (быстрый канал), а скорость передачи информации системы "Комфорт" (блок управления подушками безопасности, блоками управления в дверях автомобиля и т.д.), информационно-командной системы составляет 100 кбит/с (медленный канал).
На рис. 1 показана топология и форма сигналов CAN-шины легкового автомобиля.
При передаче информации какого-либо из блоков управления сигналы усиливаются приемо-передатчиком (трансивером) до необходимого уровня.
Каждый подключенный к CAN-шине блок имеет определенное входное сопротивление, в результате образуется общая нагрузка шины CAN. Общее сопротивление нагрузки зависит от числа подключенных к шине электронных блоков управления и исполнительных механизмов. Так, например, сопротивление блоков управления, подключенных к CAN-шине силового агрегата, в среднем составляет 68 Ом, а системы "Комфорт" и информационно-командной системы — от 2,0 до 3,5 кОм.
Следует учесть, что при выключении питания происходит отключение нагрузочных сопротивлений модулей, подключенных к CAN-шине.
Электрические цепи автомобилей усложнялись и разрастались год от года. Первые автомобили обходились без генератора и аккумулятора – зажигание работало от магнето, а фары были ацетиленовые.
К середине 70-х годов в жгуты увязывались уже сотни метров электрических проводов, автомобили по оснащённости электрикой, соперничали с легкомоторной авиацией.
Идея упрощения электропроводки лежала на поверхности – хорошо бы проложить в автомобиле всего один провод, нанизать на него потребителей и возле каждого поставить некое управляющее устройство. Тогда по этому проводу можно было бы пустить и энергию для потребителей (лампочек, датчиков, исполнительных устройств) и управляющие сигналы.
К началу 90-х развитие цифровых технологий позволило приступить к осуществлению этой идеи — компаниями BOSCH и INTEL был разработан сетевой интерфейс CAN (Controller Area Network) для создания бортовых мультипроцессорных систем реального времени. В электронике проводную систему, по которой передаются данные, принято называть “шиной”.
Если данные передаются по двум проводам (т.н. “витая пара”) последовательно, импульс за импульсом – это будет последовательная шина (serial bus), если данные передаются по жгуту из нескольких проводов одновременно – это будет параллельная шина (parallel bus).
И хотя параллельная шина работает быстрее, для упрощения электропроводки автомобиля она не подходит – она её как раз только усложнит. Витая пара последовательной шины способна передавать до 1Мбит/сек, чего вполне достаточно.
Правила, по которым отдельные блоки обмениваются информацией, в электронике называются протоколом . Протокол позволяет посылать отдельным блокам отдельные команды, опрашивать каждый блок в отдельности или всех сразу. Кроме адресного обращения к устройствам, протокол предусматривает и возможность задания приоритетов самим командам. Например, команда на управление двигателем будет иметь приоритет перед командой на управление кондиционером.
Развитие и миниатюризация электроники позволяют теперь выпускать недорогие модули управления и связи, которые в автомобиле можно соединять в виде звезды, кольца или цепи.
Обмен информацией идет в обоих направлениях, т.е. можно не только включить например лампочку заднего хода, но и получить информацию светит ли она.
Получая информацию от различных устройств система управления двигателем выберет оптимальный режим, система кондиционирования включит отопление или охлаждение, система управления стеклоочистителем взмахнет щетками и т.п.
Значительно упрощается и система диагностики двигателя и всего автомобиля в целом.
И хотя главная мечта электрика – всего два провода по всей машине – ещё не сбылась, CAN шина значительно упростила электропроводку автомобиля и повысила общую надежность всей системы.
Итак, CAN-шина — это система цифровой связи и управления электрическими устройствами автомобиля, позволяющая собирать данные от всех устройств, обмениваться информацией между ними, управлять ими. Информация о состоянии устройств и командные (управляющие) сигналы для них передаются в цифровой форме по специальному протоколу двумя проводами, т.н. «витая пара». Кроме того к каждому устройству подается и питание от бортовой электросети, но в отличии от обычной проводки – все потребители соединены параллельно, т.к. нет необходимости вести от каждого выключателя до каждой лампочки свой провод. Это значительно упрощает монтаж, снижает число проводов в жгутах и повышает надёжность всей электросистемы.
Подробнее о CAN шине можно почитать "здесь"