CAN-шина в бортовой электронике

Михаил КАЛИНИН (взято с сайта  www.remontauto.ru)

Усложнение бортовой электронной сети современного автомобиля, увеличение количества исполнительных и управляющих устройств, всевозможных датчиков, контроллеров и, как следствие, объемов информационного обмена между ними привело к необходимости создания новой высокотехнологичной коммуникационной сети. Ею стала CAN-шина, пришедшая на смену менее производительным К- и L-линиям. 

Сегодня уже можно с полной уверенностью сказать, что CAN-шина — один из наиважнейших составных элементов бортовой электроники современного автомобиля. Обмен данными по ней осуществляется практически на всех новых машинах. Следовательно, по мере того как будут заканчиваться их гарантийные сроки, инженерам-диагностам независимых станций сталкиваться с «чудо-шиной» предстоит все чаще и чаще (а многие сталкиваются уже сейчас). Понимая это, наш журнал решил подготовить серию статей о CAN-коммуникации как таковой, ну а начать мы хотим с первого знакомства с передовой системой.

Немного истории

Все началось где-то около 20 лет назад, когда компаниями BOSCH и INTEL был разработан сетевой интерфейс CAN (Controller Area Network) для создания бортовых мультипроцессорных систем реального времени. Последняя спецификация интерфейса 2.0, разработанная фирмой BOSCH в 1992 г., является дополнением предыдущей версии.

Название «шина» пришло из компьютерной терминологии. Оно обозначает связанные друг с другом провода, по которым передаются электрические сигналы между структурными элементами системы (управляющими и исполнительными устройствами).


CAN-шина — это двухпроводная, последовательная, асинхронная шина с равноправными узлами и подавлением синфазных помех, с хорошим соотношением «цена/производительность». Первое применение коммуникация нашла в промышленных и индустриальных сетях (где очень хорошо себя зарекомендовала), после чего «плавно перетекла» в автомобилестроение. Это было не удивительно, ведь CAN характеризуется высокой скоростью передачи (гораздо большей, чем по К-линии), высокой помехоустойчивостью и способностью обнаруживать любые возникающие ошибки. CAN оказалась идеальным решением для любого приложения, где микроконтроллеры обмениваются сообщениями друг с другом и с удаленными периферийными устройствами. 

По сути CAN — это фактически Ethernet: шина очень многое наследует от локальных компьютерных сетей, но только в несколько урезанном виде. Урезанном, потому что некоторые функции ей, в общем-то, ни к чему — во главу угла прежде всего ставится высокая скорость и помехозащищенность. Благодаря тому, что CAN с успехом решает поставленные задачи, многие автопроизводители встраивают топологию CAN уже на этапе разработки автомобиля в конструкторском бюро. Однако, к сожалению, это не касается отечественного автопрома. И хотя новый вазовский контроллер ВOSCH М 7.9.7 имеет функции CAN, т. е. при желании в «Ладе» можно наладить CAN-коммуникацию, толку от этого не будет никакого, поскольку в наших автомобилях всего один контроллер — все широкие возможности передовой системы будут просто-напросто не востребованы.

Но мы немного отвлеклись. В 1992 г. всеми заинтересованными пользователями и производителями CAN было основано международное сообщество CAN in Automation (сокращенно CiA), а в ноябре 1993 г. CAN-сети был присвоен стандарт Международной организации по стандартизации ISO 11898. После подробной проработки и полной универсализации он приобрел следующий вид и теперь состоит из нескольких частей: стандарт ISO 11898-1 описывается как «уровень CAN связи данных» (CAN data link layer); ISO 11898-2 — как «неустойчивый к сбоям высокоскоростной физический уровень CAN» (Non fault-tolerant CAN physical layer); а ISO 11898-3 — как «устойчивый к сбоям низкоскоростной физический уровень CAN» (Fault-tolerant CAN physical layer). Стандарты ISO 11992 (интерфейсы для грузовиков и трейлеров) и ISO 11783 (машины для сельского и лесного хозяйства) определяют прикладные профили на основе CAN-технологии.

Так почему именно CAN?

Действительно, а почему нельзя было обойтись существовавшими прежде системами и, продолжая их совершенствование, добиться лучших показателей? Дело в том, что, несмотря на то что параллельная, т. е. одновременная передача данных (принцип действия предшествующих систем), хоть и обеспечивает, в общем-то, достаточно высокую скорость передачи, требует большого количества проводов: для любой передаваемой информационной единицы, для соединения каждого контроллера с другим контроллером необходим отдельный провод. 

Представляете, сколько проводов потребуется для современного автомобиля, в котором количество всевозможных электронных блоков измеряется десятками, если не сотнями! Одна только кузовная электроника представляет собой целую группу блоков, на каждый элемент которой приходится до 5–6 контролеров.А в двери автомобиля премьер-класса, например, может оказаться свыше 10 модулей.

И плюс еще «обязательные» ABS, подушки безопасности, блок управления двигателем, коробка передач, климатические системы, подвеска, светотехника, иммобилайзер, панель управления… и все это надо как-то объединить, заставить связываться друг с другом. Предыдущей технологии — коммуникации по многочисленным проводам — просто физически не хватало. И даже связки по К-линии (протокол ISO 9141) с имплементацией протокола более высокого уровня KWP 2000 (ISO 14230-3) было недостаточно — она уже не удовлетворяла предъявляемым требованиям и запросам автопроизводителей.

К тому же вы сами понимаете, что такое автомобиль и в каких условиях работает его электроника: наводки от высоковольтной системы, серьезные температурные флуктуации и т. д. А помехозащищенность одного провода крайне низка. При увеличении скорости передачи сигнала его достоверность из-за помех сильно нарушается.

Вот и был найден выход из положения: создать единое физическое пространство для обмена данными между элементами системы — последовательный цифровой интерфейс шины CAN.

При этом часть жгутов электропроводки заменяется двухпроводной CAN-сетью. Можно сказать, что таким образом система эволюционировала, выйдя на новый качественный уровень. Идея-то, по сути, лежала на поверхности. Сегодня чипы, полностью интегрирующие функции CAN, можно покупать чуть ли не на вес. Применяя CAN, можно без особых проблем построить внутреннюю автомобильную сеть, состоящую из сотен электронных модулей и блоков, каждый из которых будет знать, что происходит в системе, не укладывая под капот километры проводов. В стандарте OBD даже появились стандартные ошибки, начинающиеся с «U» и связанные исключительно с ошибками CAN-коммуникации. 

Хотя физически с точки зрения проводов CAN-линия ничем не отличается от К-линии и L-линии — тоже два провода: Can-High и Can-Low (соответственно: высокое и низкое напряжение). Однако CAN-шина построена на технологии «витая пара (аналогия с Ethernet на лицо) — Twisted Pair». А как известно, помехозащищенность витой пары в разы больше одиночного провода.

ВРЕЗ:

Провода CAN-шины, как правило, оранжевого цвета. Визуальное отличие Can-High от Can-Low — наличие на проводе Can-High черной полосы. Can-Low — оранжево-коричневый.

Вот именно по этим проводам и производится обмен данными между блоками управления. Они могут нести любую информацию, определенную автопроизводителем, причем скорость передачи этой информации может достигать 1 Мбит/с при высочайшей степени надежности прохождения сигнала. 

Форму сигнала вы видите на рис. 1.



Рис. 1

В статическом состоянии дифференциальные сигнальные линии находятся под потенциалом, приблизительно равным 2,5 V (максимальное напряжение по шине CAN — 5 V). Такое состояние называется рецессивным и соответствует «1». В доминантном состоянии, когда линии Can-Low и Can-High расходятся, мы получаем «0». Это позволяет контроллеру, считывающему сигнал, всегда знать, где единичка, а где нолик (доминантный бит «0» подавляет рецессивный бит «1»).

Подключение модулей электронной системы автомобиля к шине происходит посредством специального устройства — трансивера, основной элемент которого представляет собой дифференциальный усилитель. По сути, это приемопередатчик сигналов, установленный на входе. После обработки поступивших с линий Can-High и Can-Low сигналов он передает их непосредственно электронному модулю автомобиля.

Дифференциальный усилитель формирует выходное напряжение как разность между напряжениями на проводах High и Low шины CAN. Таким образом, исключается влияние величины базового напряжения (напряжения в рецессивном состоянии) или какого-либо иного напряжения, вызванного, например, внешними помехами.

Также на конечных узлах шины предусмотрены «терминаторы» — сопротивления порядка 75 Ом, для того чтобы гасить сигнал, потому что на такой скорости передачи отражение сигнала от конца провода очень сильно влияет на стабильность сигнала.


Возможности CAN

Использование CAN-коммуникации позволило одновременно подключать много контроллеров на одну шину. Но так как топология сети усложнилась, она стала немного более капризна к нюансам. То есть мы можем с уверенностью говорить о том, что это надежная шина, но шина именно капризная к нюансам, поскольку контроллеры, имея встроенные чипы с CAN, должны укладываться в жесткую структуру существующей топологии, которая программируется при создании автомобиля. При этом шинные системы имеют структурные различия, и каждый производитель придерживается своей топологии.



Известны структуры в виде цепи, звезды или кольца. Связанные по шине электронные модули: датчики, контроллеры и пр. называются абонентами шины (рис. 2).




Рис. 2

Главное достоинство шины состоит в том, что каждый блок, находящийся на шине, как мы уже сказали, всегда «слышит», что происходит в системе, он всегда «слышит» запрос другого блока, всегда присутствует на шине. Каждый модуль фактически равноправен. Любое сообщение может быть послано одному или нескольким узлам. Все узлы одновременно считывают с шины одну и ту же информацию, и уже каждый из них в отдельности решает, принять ли ему данное сообщение или игнорировать его. Кроме того, каждый блок можно запрограммировать так, чтобы он «слышал» только определенные блоки или группу блоков.

Подобная форма коммуникации — одновременный прием — очень важен для синхронизации в системах управления. При этом отказавшие узлы просто отключаются от обмена по шине. В терминологии CAN данная функция называется «мультимастер» (Multi Master). Благодаря ей реакция системы увеличивается многократно. 

Но не всегда есть необходимость в том, что бы «все слушали всех». Зачастую крайне важно отдать предпочтение в передаче одному или нескольким модулям, позволив им без помех общаться между собой. Для этого предусмотрена система распределения приоритетов между блоками. Реализуется она посредством своеобразных идентификаторов, определяющих статус того или иного модуля. Кроме того, этот же идентификатор обозначает и тип сообщения. Идентификатор, прописанный в стандарте CAN, это несколько бит в сообщениях, которыми обмениваются абоненты шины. Чем меньше битовое значение идентификатора (самый главный — это тот, чей идентификатор состоит из одних нулей), тем он главнее, тем выше его статус, тем выше его приоритет. Как только кто-то выходит на шину и собирается произвести свою передачу, происходит физическое сравнение идентификаторов — так называемый арбитраж шины. Предпочтение отдается наименьшему — все остальные сразу уходят и позволяют главному в данный момент блоку произвести передачу. 

То есть передача сообщения начинается с отправки на шину идентификатора. Если доступ к шине требуют несколько сообщений, то сначала будет передано сообщение с наиболее высоким приоритетом, т. е. с меньшим значением идентификатора, независимо от других сообщений и текущего состояния шины. Каждый узел перед передачей сообщения проверяет, работает ли узел с более высоким приоритетом. Если да, то он возвращается в состояние приемника и пытается передать сообщение в другое время. Это свойство имеет особое значение при использовании в системах управления реального времени, поскольку значение приоритета жестко определяет время ожидания.

Благодаря арбитражу шины сообщение с высшим приоритетом передается первым, обеспечивая функционирование системы в реальном масштабе времени и быструю передачу информации. Распределение приоритетов между различными типами сообщений задается разработчиком при проектировании сети.

Frame

Как уже было отмечено, информация по CAN-шине передается последовательно, поэтому ей как любой традиционной сетевой структуре присуще понятие кадра — фрейма. Фрейм — это описанная стандартом структурированная последовательность битов, складывающихся в байты и являющая собой в конечном итоге сообщение, которое принимается или передается абонентами шины.

Можно выделить два типа коммутации между блоками. Первый — когда один модуль передает данные, а другой их принимает. Второй — когда определенный модуль запрашивает у соседнего модуля информацию и получает ответ.

Следовательно, CAN-коммуникация подразумевает два вида фреймов. На рис. 3 вы видите кадр для передачи данных — Data Frame. 



Рис. 3 

Он состоит из трех основных частей: арбитражного поля, поля данных и контрольного поля. Арбитражное поле содержит идентификатор, о котором мы уже говорили, указывающий на тип сообщения (например, «обороты двигателя», «температура охлаждающей жидкости» и т. д.) и на приоритет доступа к шине. Данное поле может содержать различное количество бит в зависимости от разновидности протокола: в стандартном формате CAN V2.0A предусмотрен 11-разрядный идентификатор, а в расширенном CAN V2.0B — 29-разрядный. Далее идет поле данных, в котором содержится само сообщение («обороты двигателя составляют 2000 об./мин», «температура охлаждающей жидкости — 90 °C») длиной до восьми байт. И в конце передается два байта контрольной суммы — Cyclic Redundancy Check (CRC) для выявления и коррекции ошибок передачи. 

Второй тип кадров — кадр запроса информации Remote Frame (рис. 4). 



Рис. 4

В силу своего функционального предназначения он не содержит поля данных и состоит только из идентификатора и CRC. С его помощью «заинтересованный» блок просит запрашиваемый модуль передать ему информацию по тому параметру, который указан в идентификаторе кадра. И уже запрашиваемый модуль после связи с необходимыми датчиками (в нашем сравнении — «датчиком оборотов» или «датчиком температуры») передает обратно полноценный Data Frame, содержащий все необходимые данные. 

Кроме этого, в обоих типах кадров содержится следующая дополнительная информация:

– код длины данных, сообщающий, сколько байтов данных содержит сообщение; все узлы принимают кадр данных, но те из них, которым эта информация не нужна, ее не сохраняют; 

– для обеспечения синхронизации и контроля кадр содержит поля начала кадра — Start of Frame, конца кадра — End of Frame — и подтверждения — Acknowledgement Field; вход в режим синхронизации на шине осуществляется первым битом поля Start of Frame, далее синхронизация поддерживается фронтом при смене уровня посылаемых битов; также используется механизм битстаффинга — вставка дополнительного бита при следующих подряд пяти нулях или единицах. 

После фрейма идет либо межфреймовое пространство (Interframe Space), либо Overload Frame — используется, чтобы предусмотреть дополнительную задержку между предшествованием и следованием Data или Remote Frame, т. е. фрейм, связывающий несколько кадров.

Вообще, надо сказать, что фрейм — это одно из важнейших понятий в CAN. Зная, что такое кадр данных, из чего он состоит и для чего служит, мы лучше понимаем идеологию CAN как таковой.

Развитие CAN

Все плотнее интегрируясь в автомобильные электронные системы, в процессе своего развития и становления CAN-технология претерпевала различные изменения. На сегодняшний день мы можем говорить о трех классах, или разновидностях, шины, определяемых выполняемыми функциями. 

CAN Class C — это шина силового агрегата и систем активной безопастности. Это самый быстрый канал со скоростью передачи данных 500 кбит/с, служащий для связи между главными блоками управления (двигатель — трансмиссия — ABS — системы безопасности). Именно здесь нам важна скорость реагирования, способность мгновенно обрабатывать колоссальные объемы информации.

CAN Class В служит для связи менее значимых модулей и блоков, входящих в состав систем климат-контроля или, например, кузовной электроники. В данном случае скорость передачи уже не играет такой роли, да и объемы передаваемых данных не столь значительны, поэтому по CAN Class В информация передается со скоростью до 100 кбит/с.

Ну а к CAN Class А относятся совсем малозначительные блоки, поскольку скорость передачи составляет «всего» до 10 кбит/с. 

На сегодняшний день в большинстве случаев этих скоростей вполне хватает для обеспечения полноценного функционирования автомобильных электронных систем. Все абоненты шины своевременно получают и обрабатывают поступающую информацию, адекватно взаимодействуют друг с другом, и потому автовладелец не испытывает никаких неудобств в процессе движения, и что самое главное в аварийной ситуации — вовремя выстреливают подушки безопасности, натягиваются ремни безопасности и т. д. То есть все блоки действуют слаженно, а контролирующие устройства обеспечивают бесперебойное функционирование всей системы в целом.

Однако для мультимедиа производительности современного проводного CAN недостаточно. Перекачать DVD-видео, к примеру, уже не получится. А потому все чаще появляются усовершенствованные сети; для мультимедиа, в частности, отлично подходит оптоволоконная шина MOST.

Чтобы объединить все классы CAN и все дополнительные сети (такие, как MOST и ей подобные) в единое целое под руководством «самого главного и умного начальника», бортовой сети придали топологию звезды. А «самым главным и умным начальником» стал центральный шлюз (Gateway).



Шлюз — аппаратно-программный комплекс, передающий данные между несовместимыми прикладными программами или между сетями, использующими различные протоколы (этот термин также пришел из компьютерной сферы).


Центральный шлюз системы — это объединяющий модуль, отдельный блок управления, в который стекается вся информация; это контроллер самой шины CAN. Он не исполняет никаких функций, кроме самоконтроля, он регулярно опрашивает блоки управления, присутствуют они на шине или нет. Опять же, все это пришло из уже упомянутого Ethernet.

С другой стороны, блоку управления двигателем совершенно не обязательно слушать то, что «думает» блок управления стеклоподъемниками, поэтому шлюз является не только маршрутизатором контроля за шиной CAN, но отделяет различные подсистемы автомобиля друг от друга. Он подсоединяется на разъем OBD, и с него можно считать ошибки о состоянии CAN — например, есть ли отклик от такого-то блока или что-то еще. В нем хранятся ошибки о состоянии шины: обрыв сигнала, прерывание потока, обрыв коммуникации и т. д. То есть через него мы видим ошибки шины CAN.

Однако надо понимать, что, несмотря на такую структуру, наличие в автомобиле CAN-коммуникации отнюдь не подразумевает диагностики электронных систем по собственно CAN-интерфейсу. 

С точки зрения ремонта, CAN — очень сложная система, и, кроме того как проверить ее на целостность, без соответствующего оборудования мы ничего с ней сделать не можем. CAN — это шина, по которой с абсолютно невероятной скоростью летят какие-то данные, причем скорость такова, что далеко не каждый осциллограф может их считать.

Повторимся, наличие CAN-шины не говорит о том, что по ней можно диагностировать. В первых машинах, оснащенных CAN, данная сеть использовалась исключительно для связки контроллеров. Диагностика шла по К-линии и выдавалась на OBD-разъем. Это всегда надо учитывать при анализе путей диагностики конкретного автомобиля, чтобы не допускать ошибок. Очень многие, даже высокопрофессиональные, инженеры не понимают различия между диагностикой самой CAN-шины и диагностикой по CAN. К тому же на некоторых машинах самых последних моделей блок управления двигателем до сих пор диагностируется по К- и L-линиям.

Диагностика по CAN

Появление CAN значительно упростило работу мастеров. Если автомобиль подразумевает диагностику по CAN-шине, то обслужить его куда легче. Почему? Да потому, что раньше для каждого блока электронной системы требовался отдельный контакт, а теперь все модули объединены единой шиной, и стоит только подключиться к разъему, как вы сразу же видите всю картину.



О возможности диагностики по CAN говорит присутствие «ножек» в разъеме на соответствующих позициях.


На выходе только два контакта — Can-high и Can-Low, коммутация с которыми обеспечивает получение информации о каждом из имеющихся блоков. Тестер становится равнозначным участником обмена данными по шине и потому получает объективные сведения о состоянии каждого конкретного устройства. 

Но не все приборы могут диагностировать по CAN, и это тоже надо обязательно учитывать. С дилерскими вопросов не возникает — при условии, что данная конкретная модель автомобиля подразумевает подобную диагностику, они однозначно ее просчитают. А вот недилерские, и даже самые современные, зачастую не обладают необходимым функционалом. Так что, приобретая универсальные сканеры, обратите на это особое внимание, поскольку, как говорят специалисты, CAN с течением времени плавно вольется в систему диагностики и вытеснит прежние методы: автопроизводители, видя перспективы CAN-коммуникации, стали очень широко использовать ее.

Алексей Абрамов, компания «Бош»:

— Несомненно, очень скоро CAN вытесняет диагностику по K-линии, он фактически станет ей заменой. Как говорится, «атавизмы», конечно, могут оставаться, но основная нагрузка ляжет все-таки на CAN — он гораздо прогрессивнее. Сейчас, как мне кажется, мы наблюдаем переходный период. Автопроизводители прекрасно понимают, что в работе по всему миру еще очень много старого диагностического оборудования, не коммутирующегося с CAN, оборудования, которое обслуживает гигантский автопарк. И потому не делают резких шагов, стараясь поддержать старые приборы. Ведь, если сейчас все жестко обрубить, могут возникнуть большие проблемы с сервисом.



О стремительной популяризации CAN свидетельствует и тот факт, что в новом тысячелетии оригинальный протокол KWP2000OVERCAN был добавлен в OBD-стандарт (к сведению: KWP2000OVERCAN представляет собой классическую интеграцию диагностического протокола KWP2000, который является стандартом для EOBD, но имплементацию его не на K- и L-линях ISO9141, а на CAN).

Хотя сам по себе CAN не расширил, скажем так, поле зрения диагноста. Количество получаемых данных, количество считываемых ошибок осталось тем же самым. Можно привести отличный пример: две одинаковые машины с одинаковым двигателем, с одинаковой периферией, но из них одна может диагностироваться по CAN, а другая не может. Так вот, набор снятых с них данных, скорее всего, будет идентичным.

То есть по сути CAN, так же как и K-линия, — это мостик передачи данных, он не может ничего «придумать», все решает блок управления: какую точность он задаст, так и будет. Поэтому при диагностике преимущества CAN с точки зрения высокой технологичности шины как таковой никак не ощущаются, все быстродействие сети и ее помехозащищенность диагносту ровным счетом ничего не дают. Единственное — в режиме телеметрии CAN значительно удобнее. Если по К-линии сигналы передавались медленно, то по CAN-шине можно передавать очень хорошую телеметрию, но список параметров опять-таки останется прежним. 

Благодарим за помощь в подготовке материала компанию BOSCH