Controller Area Network

Поделись знанием:
Перейти к: навигация, поиск

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) — передаётся узлом, обнаружившим в сети ошибку.

Кадры данных и запроса отделяются от предыдущих кадров межкадровым промежутком.

Формат кадра

Базовый формат кадра данных

Поле Длина (в битах) Описание
Начало кадра 1 Сигнализирует начало передачи кадра
Идентификатор 11 Уникальный идентификатор
Запрос на передачу (RTR) 1 Должен быть доминантным
Бит расширения идентификатора (IDE) 1 Должен быть доминантным (определяет длину идентификатора)
Зарезервированный бит (r0) 1 Резерв
Длина данных (DLC) 4 Длина поля данных в байтах (0-8)
Поле данных 0-8 байт Передаваемые данные (длина в поле DLC)
Контрольная сумма (CRC) 15 Контрольная сумма всего кадра
Разграничитель контрольной суммы 1 Должен быть рецессивным
Промежуток подтверждения (ACK) 1 Передатчик шлёт рецессивный, приёмник вставляет доминанту
Разграничитель подтверждения 1 Должен быть рецессивным
Конец кадра (EOF) 7 Должен быть рецессивным

Первые 7 бит идентификатора не должны быть все рецессивными.

Расширенный формат кадра данных

Поле Длина (в битах) Описание
Начало кадра 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 вошел в состав стандарта OBDII.

Преимущества и недостатки

Преимущества

  • Возможность работы в режиме жёсткого реального времени.
  • Простота реализации и минимальные затраты на использование.
  • Высокая устойчивость к помехам.
  • Арбитраж доступа к сети без потерь пропускной способности.
  • Надёжный контроль ошибок передачи и приёма.
  • Широкий диапазон скоростей работы.
  • Большое распространение технологии, наличие широкого ассортимента продуктов от различных поставщиков.

Недостатки

  • Небольшое количество данных, которое можно передать в одном пакете (до 8 байт).
  • Большой размер служебных данных в пакете (по отношению к полезным данным).
  • Отсутствие единого общепринятого стандарта на протокол высокого уровня, однако же, это и достоинство. Стандарт сети предоставляет широкие возможности для практически безошибочной передачи данных между узлами, оставляя разработчику возможность вложить в этот стандарт всё, что туда сможет поместиться. В этом отношении CAN подобен простому электрическому проводу. Туда можно «затолкать» любой поток информации, который сможет выдержать пропускная способность шины. Известны примеры передачи звука и изображения по шине CAN (Россия). Известен случай создания системы аварийной связи вдоль автодороги длиной несколько десятков километров (Германия). (В первом случае нужна была большая скорость передачи и небольшая длина линии, во втором случае — наоборот). Изготовители, как правило, не афишируют, как именно они используют полезные байты в пакете.

См. также

Напишите отзыв о статье "Controller Area Network"

Ссылки

  • [www.canopen.org CANopen Special Interest Group]
  • [www.can-cia.org Международная организация CAN In Automation]
  • [www.kvaser.com/about-can/higher-layer-protocols/cankingdom/ Официальный сайт ассоциации CAN Kingdom]
  • [www.odva.org/ ODVA — сайт ассоциации-разработчика DeviceNet]
  • [can.marathon.ru/node/38 Литература по CAN от производителя CAN-совместимых устройств]
  • [www.canny.ru Автомобильные CAN-адаптеры]
  • [www.chipnews.ru/html.cgi/arhiv/01_02/stat-56.htm Автомобильный стандарт LIN]
  • [www.kvaser.com/about-can/the-can-protocol/ Протокол CAN Тур]

Отрывок, характеризующий Controller Area Network

Князь Андрей с удивлением и грустью разочарования слушал его смех и смотрел на смеющегося Сперанского. Это был не Сперанский, а другой человек, казалось князю Андрею. Всё, что прежде таинственно и привлекательно представлялось князю Андрею в Сперанском, вдруг стало ему ясно и непривлекательно.
За столом разговор ни на мгновение не умолкал и состоял как будто бы из собрания смешных анекдотов. Еще Магницкий не успел докончить своего рассказа, как уж кто то другой заявил свою готовность рассказать что то, что было еще смешнее. Анекдоты большею частью касались ежели не самого служебного мира, то лиц служебных. Казалось, что в этом обществе так окончательно было решено ничтожество этих лиц, что единственное отношение к ним могло быть только добродушно комическое. Сперанский рассказал, как на совете сегодняшнего утра на вопрос у глухого сановника о его мнении, сановник этот отвечал, что он того же мнения. Жерве рассказал целое дело о ревизии, замечательное по бессмыслице всех действующих лиц. Столыпин заикаясь вмешался в разговор и с горячностью начал говорить о злоупотреблениях прежнего порядка вещей, угрожая придать разговору серьезный характер. Магницкий стал трунить над горячностью Столыпина, Жерве вставил шутку и разговор принял опять прежнее, веселое направление.
Очевидно, Сперанский после трудов любил отдохнуть и повеселиться в приятельском кружке, и все его гости, понимая его желание, старались веселить его и сами веселиться. Но веселье это казалось князю Андрею тяжелым и невеселым. Тонкий звук голоса Сперанского неприятно поражал его, и неумолкавший смех своей фальшивой нотой почему то оскорблял чувство князя Андрея. Князь Андрей не смеялся и боялся, что он будет тяжел для этого общества. Но никто не замечал его несоответственности общему настроению. Всем было, казалось, очень весело.
Он несколько раз желал вступить в разговор, но всякий раз его слово выбрасывалось вон, как пробка из воды; и он не мог шутить с ними вместе.
Ничего не было дурного или неуместного в том, что они говорили, всё было остроумно и могло бы быть смешно; но чего то, того самого, что составляет соль веселья, не только не было, но они и не знали, что оно бывает.
После обеда дочь Сперанского с своей гувернанткой встали. Сперанский приласкал дочь своей белой рукой, и поцеловал ее. И этот жест показался неестественным князю Андрею.
Мужчины, по английски, остались за столом и за портвейном. В середине начавшегося разговора об испанских делах Наполеона, одобряя которые, все были одного и того же мнения, князь Андрей стал противоречить им. Сперанский улыбнулся и, очевидно желая отклонить разговор от принятого направления, рассказал анекдот, не имеющий отношения к разговору. На несколько мгновений все замолкли.
Посидев за столом, Сперанский закупорил бутылку с вином и сказав: «нынче хорошее винцо в сапожках ходит», отдал слуге и встал. Все встали и также шумно разговаривая пошли в гостиную. Сперанскому подали два конверта, привезенные курьером. Он взял их и прошел в кабинет. Как только он вышел, общее веселье замолкло и гости рассудительно и тихо стали переговариваться друг с другом.
– Ну, теперь декламация! – сказал Сперанский, выходя из кабинета. – Удивительный талант! – обратился он к князю Андрею. Магницкий тотчас же стал в позу и начал говорить французские шутливые стихи, сочиненные им на некоторых известных лиц Петербурга, и несколько раз был прерываем аплодисментами. Князь Андрей, по окончании стихов, подошел к Сперанскому, прощаясь с ним.
– Куда вы так рано? – сказал Сперанский.
– Я обещал на вечер…
Они помолчали. Князь Андрей смотрел близко в эти зеркальные, непропускающие к себе глаза и ему стало смешно, как он мог ждать чего нибудь от Сперанского и от всей своей деятельности, связанной с ним, и как мог он приписывать важность тому, что делал Сперанский. Этот аккуратный, невеселый смех долго не переставал звучать в ушах князя Андрея после того, как он уехал от Сперанского.
Вернувшись домой, князь Андрей стал вспоминать свою петербургскую жизнь за эти четыре месяца, как будто что то новое. Он вспоминал свои хлопоты, искательства, историю своего проекта военного устава, который был принят к сведению и о котором старались умолчать единственно потому, что другая работа, очень дурная, была уже сделана и представлена государю; вспомнил о заседаниях комитета, членом которого был Берг; вспомнил, как в этих заседаниях старательно и продолжительно обсуживалось всё касающееся формы и процесса заседаний комитета, и как старательно и кратко обходилось всё что касалось сущности дела. Он вспомнил о своей законодательной работе, о том, как он озабоченно переводил на русский язык статьи римского и французского свода, и ему стало совестно за себя. Потом он живо представил себе Богучарово, свои занятия в деревне, свою поездку в Рязань, вспомнил мужиков, Дрона старосту, и приложив к ним права лиц, которые он распределял по параграфам, ему стало удивительно, как он мог так долго заниматься такой праздной работой.


На другой день князь Андрей поехал с визитами в некоторые дома, где он еще не был, и в том числе к Ростовым, с которыми он возобновил знакомство на последнем бале. Кроме законов учтивости, по которым ему нужно было быть у Ростовых, князю Андрею хотелось видеть дома эту особенную, оживленную девушку, которая оставила ему приятное воспоминание.
Наташа одна из первых встретила его. Она была в домашнем синем платье, в котором она показалась князю Андрею еще лучше, чем в бальном. Она и всё семейство Ростовых приняли князя Андрея, как старого друга, просто и радушно. Всё семейство, которое строго судил прежде князь Андрей, теперь показалось ему составленным из прекрасных, простых и добрых людей. Гостеприимство и добродушие старого графа, особенно мило поразительное в Петербурге, было таково, что князь Андрей не мог отказаться от обеда. «Да, это добрые, славные люди, думал Болконский, разумеется, не понимающие ни на волос того сокровища, которое они имеют в Наташе; но добрые люди, которые составляют наилучший фон для того, чтобы на нем отделялась эта особенно поэтическая, переполненная жизни, прелестная девушка!»
Князь Андрей чувствовал в Наташе присутствие совершенно чуждого для него, особенного мира, преисполненного каких то неизвестных ему радостей, того чуждого мира, который еще тогда, в отрадненской аллее и на окне, в лунную ночь, так дразнил его. Теперь этот мир уже более не дразнил его, не был чуждый мир; но он сам, вступив в него, находил в нем новое для себя наслаждение.
После обеда Наташа, по просьбе князя Андрея, пошла к клавикордам и стала петь. Князь Андрей стоял у окна, разговаривая с дамами, и слушал ее. В середине фразы князь Андрей замолчал и почувствовал неожиданно, что к его горлу подступают слезы, возможность которых он не знал за собой. Он посмотрел на поющую Наташу, и в душе его произошло что то новое и счастливое. Он был счастлив и ему вместе с тем было грустно. Ему решительно не об чем было плакать, но он готов был плакать. О чем? О прежней любви? О маленькой княгине? О своих разочарованиях?… О своих надеждах на будущее?… Да и нет. Главное, о чем ему хотелось плакать, была вдруг живо сознанная им страшная противуположность между чем то бесконечно великим и неопределимым, бывшим в нем, и чем то узким и телесным, чем он был сам и даже была она. Эта противуположность томила и радовала его во время ее пения.
Только что Наташа кончила петь, она подошла к нему и спросила его, как ему нравится ее голос? Она спросила это и смутилась уже после того, как она это сказала, поняв, что этого не надо было спрашивать. Он улыбнулся, глядя на нее, и сказал, что ему нравится ее пение так же, как и всё, что она делает.
Князь Андрей поздно вечером уехал от Ростовых. Он лег спать по привычке ложиться, но увидал скоро, что он не может спать. Он то, зажжа свечку, сидел в постели, то вставал, то опять ложился, нисколько не тяготясь бессонницей: так радостно и ново ему было на душе, как будто он из душной комнаты вышел на вольный свет Божий. Ему и в голову не приходило, чтобы он был влюблен в Ростову; он не думал о ней; он только воображал ее себе, и вследствие этого вся жизнь его представлялась ему в новом свете. «Из чего я бьюсь, из чего я хлопочу в этой узкой, замкнутой рамке, когда жизнь, вся жизнь со всеми ее радостями открыта мне?» говорил он себе. И он в первый раз после долгого времени стал делать счастливые планы на будущее. Он решил сам собою, что ему надо заняться воспитанием своего сына, найдя ему воспитателя и поручив ему; потом надо выйти в отставку и ехать за границу, видеть Англию, Швейцарию, Италию. «Мне надо пользоваться своей свободой, пока так много в себе чувствую силы и молодости, говорил он сам себе. Пьер был прав, говоря, что надо верить в возможность счастия, чтобы быть счастливым, и я теперь верю в него. Оставим мертвым хоронить мертвых, а пока жив, надо жить и быть счастливым», думал он.


В одно утро полковник Адольф Берг, которого Пьер знал, как знал всех в Москве и Петербурге, в чистеньком с иголочки мундире, с припомаженными наперед височками, как носил государь Александр Павлович, приехал к нему.
– Я сейчас был у графини, вашей супруги, и был так несчастлив, что моя просьба не могла быть исполнена; надеюсь, что у вас, граф, я буду счастливее, – сказал он, улыбаясь.
– Что вам угодно, полковник? Я к вашим услугам.
– Я теперь, граф, уж совершенно устроился на новой квартире, – сообщил Берг, очевидно зная, что это слышать не могло не быть приятно; – и потому желал сделать так, маленький вечерок для моих и моей супруги знакомых. (Он еще приятнее улыбнулся.) Я хотел просить графиню и вас сделать мне честь пожаловать к нам на чашку чая и… на ужин.
– Только графиня Елена Васильевна, сочтя для себя унизительным общество каких то Бергов, могла иметь жестокость отказаться от такого приглашения. – Берг так ясно объяснил, почему он желает собрать у себя небольшое и хорошее общество, и почему это ему будет приятно, и почему он для карт и для чего нибудь дурного жалеет деньги, но для хорошего общества готов и понести расходы, что Пьер не мог отказаться и обещался быть.
– Только не поздно, граф, ежели смею просить, так без 10 ти минут в восемь, смею просить. Партию составим, генерал наш будет. Он очень добр ко мне. Поужинаем, граф. Так сделайте одолжение.
Противно своей привычке опаздывать, Пьер в этот день вместо восьми без 10 ти минут, приехал к Бергам в восемь часов без четверти.
Берги, припася, что нужно было для вечера, уже готовы были к приему гостей.
В новом, чистом, светлом, убранном бюстиками и картинками и новой мебелью, кабинете сидел Берг с женою. Берг, в новеньком, застегнутом мундире сидел возле жены, объясняя ей, что всегда можно и должно иметь знакомства людей, которые выше себя, потому что тогда только есть приятность от знакомств. – «Переймешь что нибудь, можешь попросить о чем нибудь. Вот посмотри, как я жил с первых чинов (Берг жизнь свою считал не годами, а высочайшими наградами). Мои товарищи теперь еще ничто, а я на ваканции полкового командира, я имею счастье быть вашим мужем (он встал и поцеловал руку Веры, но по пути к ней отогнул угол заворотившегося ковра). И чем я приобрел всё это? Главное умением выбирать свои знакомства. Само собой разумеется, что надо быть добродетельным и аккуратным».