Сеть контроллеров ( CAN ) — это стандарт шины транспортного средства, разработанный для обеспечения эффективной связи, в первую очередь, между электронными блоками управления (ЭБУ). Первоначально разработанный для снижения сложности и стоимости электропроводки в автомобилях посредством мультиплексирования , протокол шины CAN с тех пор был принят в различных других контекстах. Этот основанный на широковещании , ориентированный на сообщения протокол обеспечивает целостность данных и приоритезацию с помощью процесса, называемого арбитражем , позволяя устройству с наивысшим приоритетом продолжать передачу, если несколько устройств пытаются отправить данные одновременно, в то время как другие отступают. Его надежность повышается за счет дифференциальной сигнализации , которая смягчает электрические помехи. Распространенные версии протокола CAN включают CAN 2.0, CAN FD и CAN XL, которые различаются по возможностям скорости передачи данных и максимальным размерам полезной нагрузки данных.
Разработка шины CAN началась в 1983 году в компании Robert Bosch GmbH . [1] Протокол был официально представлен в 1986 году на конференции Общества инженеров-автомобилестроителей (SAE) в Детройте , штат Мичиган . Первые чипы контроллера CAN были представлены Intel в 1987 году, а вскоре после этого — Philips . [1] Выпущенный в 1991 году, Mercedes-Benz W140 стал первым серийным автомобилем, оснащенным мультиплексной системой проводки на основе CAN. [2] [3]
Bosch опубликовал несколько версий спецификации CAN. Последняя из них — CAN 2.0, опубликованная в 1991 году. Эта спецификация состоит из двух частей. Часть A предназначена для стандартного формата с 11-битным идентификатором, а часть B — для расширенного формата с 29-битным идентификатором. Устройство CAN, использующее 11-битные идентификаторы, обычно называется CAN 2.0A, а устройство CAN, использующее 29-битные идентификаторы, обычно называется CAN 2.0B. Эти стандарты свободно доступны от Bosch вместе с другими спецификациями и техническими документами . [4]
В 1993 году Международная организация по стандартизации (ISO) выпустила стандарт CAN ISO 11898, который позже был реструктурирован в две части: ISO 11898-1, который охватывает уровень канала передачи данных , и ISO 11898-2, который охватывает физический уровень CAN для высокоскоростного CAN. ISO 11898-3 был выпущен позже и охватывает физический уровень CAN для низкоскоростного, отказоустойчивого CAN. Стандарты физического уровня ISO 11898-2 и ISO 11898-3 не являются частью спецификации Bosch CAN 2.0.
В 2012 году Bosch выпустила CAN FD 1.0 или CAN с гибкой скоростью передачи данных. Эта спецификация использует другой формат кадра, который допускает другую длину данных, а также опциональное переключение на более высокую скорость передачи данных после принятия решения об арбитраже. CAN FD совместим с существующими сетями CAN 2.0, поэтому новые устройства CAN FD могут сосуществовать в одной сети с существующими устройствами CAN, используя те же параметры связи CAN 2.0. По состоянию на 2018 год [обновлять]Bosch активно расширял стандарты CAN.
Шина CAN является одним из пяти протоколов, используемых в стандарте диагностики транспортных средств бортовой диагностики (OBD)-II. Стандарт OBD-II является обязательным для всех легковых и легких грузовиков, продаваемых в Соединенных Штатах с модельного года 1996. Стандарт EOBD является обязательным для всех бензиновых транспортных средств, продаваемых в Европейском Союзе с 2001 года, и всех дизельных транспортных средств с 2004 года. [5]
Современный автомобиль может иметь до 70 электронных блоков управления (ЭБУ) для различных подсистем. [6] Обычно самым большим процессором является блок управления двигателем . Другие используются для автономного вождения, усовершенствованной системы помощи водителю (ADAS), трансмиссии , подушек безопасности , антиблокировочной системы тормозов/ABS , круиз-контроля , электроусилителя руля , аудиосистем, электрических стеклоподъемников , дверей, регулировки зеркал, аккумуляторных и зарядных систем для гибридных/электрических автомобилей и т. д. Некоторые из них образуют независимые подсистемы, но связь среди других имеет важное значение. Подсистема может нуждаться в управлении исполнительными механизмами или получении обратной связи от датчиков. Стандарт CAN был разработан для удовлетворения этой потребности. Одним из ключевых преимуществ является то, что взаимосвязь между различными системами автомобиля может позволить реализовать широкий спектр функций безопасности, экономичности и удобства с использованием только программного обеспечения — функциональность, которая увеличила бы стоимость и сложность, если бы такие функции были жестко подключены с использованием традиционной автомобильной электрики. Вот некоторые примеры:
В последние годы был введен стандарт шины LIN (локальная соединительная сеть) в дополнение к CAN для некритических подсистем, таких как системы кондиционирования воздуха и информационно-развлекательные системы, где скорость передачи данных и надежность не столь важны.
Благодаря своему наследию CAN 2.0 является наиболее широко используемым протоколом с максимальным размером полезной нагрузки восемь байт и типичной скоростью передачи данных 500 кбит/с. Классический CAN, который включает CAN 2.0A (стандартный CAN) и CAN 2.0B (расширенный CAN), в первую очередь отличается длиной поля идентификатора: CAN 2.0A использует 11-битный идентификатор, в то время как CAN 2.0B использует 29-битный идентификатор. Более длинный идентификатор в CAN 2.0B позволяет использовать большее количество уникальных идентификаторов сообщений, что выгодно в сложных системах со многими узлами и типами данных. Однако это увеличение количества уникальных идентификаторов сообщений также увеличивает длину кадра, что, в свою очередь, снижает максимальную скорость передачи данных. Кроме того, расширенный идентификатор обеспечивает более точный контроль над приоритетностью сообщений из-за большего количества доступных значений идентификатора. Однако это может привести к проблемам совместимости; Устройства CAN 2.0B, как правило, могут взаимодействовать с устройствами CAN 2.0A, но не наоборот, из-за потенциальных ошибок при обработке более длинных идентификаторов. Высокоскоростной CAN 2.0 поддерживает скорости передачи данных от 40 кбит/с до 1 Мбит/с и является основой для протоколов более высокого уровня. Напротив, низкоскоростной CAN 2.0 поддерживает скорости передачи данных от 40 кбит/с до 125 кбит/с и обеспечивает отказоустойчивость, позволяя продолжать связь, несмотря на неисправность одного из двух проводов, при этом каждый узел поддерживает собственное завершение. [4] [9] [10] [11]
CAN FD (Flexible Data-Rate), стандартизированный как ISO 11898-1, был разработан Bosch и выпущен в 2012 году для удовлетворения потребности в увеличении передачи данных в современных высокопроизводительных транспортных средствах. Он предлагает переменные скорости передачи данных во время передачи одного кадра, позволяя фазе арбитража происходить на более низкой скорости передачи данных для надежной связи, в то время как полезная нагрузка данных передается на более высокой скорости передачи данных для повышения пропускной способности, что особенно полезно в электрически шумных средах для лучшей помехоустойчивости. CAN FD также вводит гибкий размер поля данных, увеличивая максимальный размер с 8 байт до 64 байт. Эта гибкость обеспечивает более эффективную передачу данных за счет сокращения количества кадров, необходимых для больших передач данных, что выгодно для таких приложений, как данные датчиков с высоким разрешением или обновления программного обеспечения.
CAN FD поддерживает обратную совместимость с устройствами CAN 2.0, используя тот же формат кадра, что и CAN 2.0B, с добавлением нового поля управления для указания того, является ли кадр кадром CAN FD или стандартным кадром CAN 2.0. Это позволяет устройствам CAN FD сосуществовать с устройствами CAN 2.0 на одной шине, в то время как более высокие скорости передачи данных и большие объемы данных доступны только при взаимодействии с другими устройствами CAN FD. [11] [10] [12]
CAN XL, специфицированный CiA 610-1 и стандартизированный как часть ISO11898-1, поддерживает полезную нагрузку до 2048 байт и скорость передачи данных до 20 Мбит/с. Он устраняет разрыв между CAN FD и Ethernet (100BASE-T1), сохраняя при этом преимущества разрешения коллизий CAN. Контроллеры CAN XL также могут обрабатывать классическую связь CAN и CAN FD, обеспечивая совместимость в смешанных сетях. Его большие поля данных позволяют использовать протоколы более высокого уровня, такие как IP (Internet Protocol) и туннелирование кадров Ethernet . [4] [13] [14]
CAN — это стандарт последовательной шины с несколькими ведущими устройствами для соединения электронных блоков управления (ЭБУ), также известных как узлы ( автомобильная электроника — это основная область применения). Для связи на шине CAN требуются два или более узлов. Узел может взаимодействовать с устройствами от простой цифровой логики, например PLD , через FPGA до встроенного компьютера, работающего под управлением обширного программного обеспечения. Такой компьютер также может быть шлюзом, позволяющим компьютеру общего назначения (например, ноутбуку) взаимодействовать через порт USB или Ethernet с устройствами на шине CAN.
Все узлы соединены друг с другом через физически обычную двухпроводную шину . Провода представляют собой витую пару с характеристическим сопротивлением 120 Ом (номинальное) .
Эта шина использует дифференциальные сигналы проводного И. Два сигнала, CAN high (CANH) и CAN low (CANL), либо приводятся в «доминантное» состояние с CANH > CANL, либо не приводятся и вытягиваются пассивными резисторами в «рецессивное» состояние с CANH ≤ CANL. Бит данных 0 кодирует доминантное состояние, в то время как бит данных 1 кодирует рецессивное состояние, поддерживая соглашение проводного И, которое дает узлам с более низкими идентификационными номерами приоритет на шине.
Стандарт ISO 11898-2 , также называемый высокоскоростным CAN (скорость передачи данных до 1 Мбит/с на CAN, 5 Мбит/с на CAN-FD), использует линейную шину, на каждом конце которой установлен резистор сопротивлением 120 Ом.
Высокоскоростная передача сигналов CAN переводит провод CANH в состояние 3,5 В, а провод CANL в состояние 1,5 В, когда какое-либо устройство передает доминантный сигнал (0), в то время как если ни одно устройство не передает доминантный сигнал, согласующие резисторы пассивно возвращают два провода в рецессивное (1) состояние с номинальным дифференциальным напряжением 0 В. (Приемники считают любое дифференциальное напряжение менее 0,5 В рецессивным.) Доминирующее дифференциальное напряжение составляет номинальное значение 2 В. Доминирующее синфазное напряжение (CANH+CANL)/2 должно быть в пределах от 1,5 до 3,5 В от общего, в то время как рецессивное синфазное напряжение должно быть в пределах ±12 от общего.
ISO 11898-3 , также называемый низкоскоростным или отказоустойчивым CAN (до 125 кбит/с), использует линейную шину, звездообразную шину или несколько звездообразных шин, соединенных линейной шиной, и заканчивается в каждом узле частью общего сопротивления окончания. Общее сопротивление окончания должно быть близко к 100 Ом , но не менее .
Низкоскоростная отказоустойчивая сигнализация CAN работает аналогично высокоскоростной CAN, но с большими перепадами напряжения. Доминирующее состояние передается путем перемещения CANH к напряжению питания устройства (5 В или 3,3 В), а CANL к 0 В при передаче доминанты (0), в то время как согласующие резисторы переводят шину в рецессивное состояние с CANH на 0 В и CANL на 5 В. Это позволяет использовать более простой приемник, который просто учитывает знак CANH−CANL. Оба провода должны выдерживать напряжение от −27 до +40 В без повреждения.
Как в высокоскоростном, так и в низкоскоростном CAN скорость перехода выше, когда происходит переход от рецессивного к доминантному, поскольку провода CAN активно управляются. Скорость перехода от доминантного к рецессивному зависит в первую очередь от длины сети CAN и емкости используемого провода.
Высокоскоростной CAN обычно используется в автомобильных и промышленных приложениях, где шина идет от одного конца среды до другого. Отказоустойчивый CAN часто используется, когда группы узлов должны быть соединены вместе.
Спецификации требуют, чтобы напряжение на шине поддерживалось в пределах минимального и максимального синфазного напряжения, но не определяют, как поддерживать напряжение на шине в этом диапазоне.
Шина CAN должна быть терминирована. Терминирующие резисторы необходимы для подавления отражений , а также для возврата шины в рецессивное или неактивное состояние.
Высокоскоростной CAN использует резистор 120 Ом на каждом конце линейной шины. Низкоскоростной CAN использует резисторы на каждом узле. Могут использоваться другие типы терминации, такие как Terminating Bias Circuit, определенная в ISO11783 . [9]
АКонцевая цепь смещения обеспечивает питание и заземление в дополнение к сигнализации CAN на четырехпроводном кабеле. Это обеспечивает автоматическое электрическое смещение и завершение на каждом конце каждого сегмента шины . Сеть ISO11783 предназначена для горячего подключения и удаления сегментов шины и ЭБУ.
Каждый узел требует
Каждый узел может отправлять и получать сообщения, но не одновременно. Сообщение или кадр в основном состоит из идентификатора (ID), который представляет приоритет сообщения, и до восьми байтов данных. CRC, слот подтверждения [ACK] и другие накладные расходы также являются частью сообщения. Улучшенный CAN FD увеличивает длину раздела данных до 64 байтов на кадр. Сообщение передается последовательно на шину с использованием формата без возврата к нулю (NRZ) и может быть получено всеми узлами.
Устройства, которые подключены к сети CAN, обычно представляют собой датчики , исполнительные механизмы и другие устройства управления. Эти устройства подключаются к шине через хост-процессор , контроллер CAN и трансивер CAN.
Передача данных CAN использует метод побитового арбитража без потерь для разрешения конфликтов. Этот метод арбитража требует, чтобы все узлы в сети CAN были синхронизированы для одновременной выборки каждого бита в сети CAN. Вот почему некоторые называют CAN синхронным. К сожалению, термин синхронный неточен, поскольку данные передаются в асинхронном формате, а именно без тактового сигнала.
В спецификациях CAN используются термины доминантные биты и рецессивные биты, где доминантный — это логический 0 (активно приводимый к напряжению передатчиком), а рецессивный — это логическая 1 (пассивно возвращаемый к напряжению резистором). Состояние бездействия представлено рецессивным уровнем (логическая 1). Если один узел передает доминантный бит, а другой узел передает рецессивный бит, то происходит столкновение, и побеждает доминантный бит. Это означает, что нет задержки для сообщения с более высоким приоритетом, а узел, передающий сообщение с более низким приоритетом, автоматически пытается повторно передать шестибитные тактовые импульсы после окончания доминантного сообщения. Это делает CAN очень подходящей в качестве приоритетной системы связи в реальном времени.
Точные напряжения для логического 0 или 1 зависят от используемого физического уровня, но основной принцип CAN требует, чтобы каждый узел прослушивал данные в сети CAN, включая сам передающий узел(ы). Если логическая 1 передается всеми передающими узлами одновременно, то логическая 1 видна всем узлам, включая как передающий узел(ы), так и принимающий узел(ы). Если логический 0 передается всеми передающими узлами одновременно, то логический 0 видна всем узлам. Если логический 0 передается одним или несколькими узлами, а логическая 1 передается одним или несколькими узлами, то логический 0 видна всем узлам, включая узел(ы), передающий логическую 1. Когда узел передает логическую 1, но видит логический 0, он понимает, что возникла конкуренция, и прекращает передачу. Используя этот процесс, любой узел, который передает логическую 1, когда другой узел передает логический 0, теряет арбитраж и выбывает. Узел, который теряет арбитраж, повторно ставит свое сообщение в очередь для последующей передачи, и поток битов кадра CAN продолжается без ошибок, пока не останется только один узел, передающий. Это означает, что узел, который передает первую 1, теряет арбитраж. Поскольку идентификатор бита 11 (или 29 для CAN 2.0B) передается всеми узлами в начале кадра CAN, узел с наименьшим идентификатором передает больше нулей в начале кадра, и это узел, который выигрывает арбитраж или имеет наивысший приоритет.
Например, рассмотрим сеть CAN с 11-битным идентификатором, с двумя узлами с идентификаторами 15 (двоичное представление, 00000001111) и 16 (двоичное представление, 00000010000). Если эти два узла передают одновременно, каждый из них сначала передаст стартовый бит, а затем первые шесть нулей своего идентификатора, без принятия арбитражного решения.
Когда передается бит ID 4, узел с ID 16 передает 1 (рецессивный) для своего ID, а узел с ID 15 передает 0 (доминантный) для своего ID. Когда это происходит, узел с ID 16 знает, что он передал 1, но видит 0 и понимает, что произошла коллизия, и он проиграл арбитраж. Узел 16 прекращает передачу, что позволяет узлу с ID 15 продолжить передачу без потери данных. Узел с наименьшим ID всегда выигрывает арбитраж и, следовательно, имеет наивысший приоритет.
Скорость передачи данных до 1 Мбит/с возможна при длине сети менее 40 м. Уменьшение скорости передачи данных позволяет увеличить расстояние передачи данных (например, 500 м при 125 кбит/с). Улучшенный стандарт CAN FD позволяет увеличить скорость передачи данных после арбитража и может увеличить скорость раздела данных в десять и более раз от скорости передачи данных арбитража.
Идентификаторы сообщений должны быть уникальными [10] на одной шине CAN, в противном случае два узла продолжат передачу за пределами поля арбитража (ID), что приведет к ошибке.
В начале 1990-х годов выбор идентификаторов для сообщений производился просто на основе идентификации типа данных и узла-отправителя; однако, поскольку идентификатор также использовался в качестве приоритета сообщения, это приводило к плохой производительности в реальном времени. В таких сценариях обычно требовалось низкое использование шины CAN, около 30%, чтобы гарантировать, что все сообщения будут соответствовать своим срокам. Однако, если идентификаторы вместо этого определяются на основе крайнего срока сообщения, чем ниже числовой идентификатор и, следовательно, тем выше приоритет сообщения, то использование шины от 70 до 80% обычно может быть достигнуто до того, как будут пропущены какие-либо сроки сообщения. [15]
Все узлы в сети CAN должны работать с одинаковой номинальной скоростью передачи данных, но шум, фазовые сдвиги, допуски генератора и дрейф генератора означают, что фактическая скорость передачи данных может не совпадать с номинальной скоростью передачи данных. [16] Поскольку отдельный тактовый сигнал не используется, необходимы средства синхронизации узлов. Синхронизация важна во время арбитража, поскольку узлы в арбитраже должны иметь возможность видеть как свои переданные данные, так и переданные данные других узлов одновременно. Синхронизация также важна для того, чтобы гарантировать, что изменения в синхронизации генератора между узлами не приведут к ошибкам.
Синхронизация начинается с жесткой синхронизации на первом рецессивно-доминантном переходе после периода простоя шины (стартовый бит). Повторная синхронизация происходит на каждом рецессивно-доминантном переходе в течение кадра. Контроллер CAN ожидает, что переход произойдет в кратное номинальному времени бита. Если переход не происходит в точное время, ожидаемое контроллером, контроллер соответствующим образом корректирует номинальное время бита.
Настройка выполняется путем деления каждого бита на ряд временных интервалов, называемых квантами, и назначения определенного числа квантов каждому из четырех сегментов внутри бита: синхронизация, распространение, фазовый сегмент 1 и фазовый сегмент 2.
Количество квантов, на которые делится бит, может варьироваться в зависимости от контроллера, а количество квантов, назначаемых каждому сегменту, может варьироваться в зависимости от скорости передачи данных и условий сети.
Переход, который происходит до или после ожидаемого, заставляет контроллер вычислять разницу во времени и удлинять фазовый сегмент 1 или укорачивать фазовый сегмент 2 к этому времени. Это эффективно корректирует синхронизацию приемника с передатчиком для их синхронизации. Этот процесс повторной синхронизации выполняется непрерывно при каждом рецессивном переходе к доминантному, чтобы гарантировать, что передатчик и приемник остаются синхронизированными. Непрерывная повторная синхронизация уменьшает ошибки, вызванные шумом, и позволяет принимающему узлу, который был синхронизирован с узлом, проигравшим арбитраж, повторно синхронизироваться с узлом, который выиграл арбитраж.
Протокол CAN, как и многие сетевые протоколы, можно разложить на следующие уровни абстракции :
Большая часть стандарта CAN применяется к слою передачи. Слою передачи получает сообщения от физического уровня и передает их на уровень объектов. Слою передачи отвечает за синхронизацию битов, кадрирование сообщений, арбитраж, подтверждение, обнаружение и сигнализацию ошибок, а также ограничение сбоев. Он выполняет:
Шина CAN ( ISO 11898 -1:2003) изначально специфицировала протокол канального уровня только с абстрактными требованиями к физическому уровню, например, утверждая использование среды с множественным доступом на уровне битов посредством использования доминантных и рецессивных состояний. Электрические аспекты физического уровня (напряжение, ток, количество проводников) были определены в стандарте ISO 11898 -2:2003, который в настоящее время широко принят. Однако механические аспекты физического уровня (тип и номер разъема, цвета, метки, распиновка) еще не были формально определены. В результате автомобильный ЭБУ обычно будет иметь определенный — часто заказной — разъем с различными видами кабелей, из которых два являются линиями шины CAN. Тем не менее, появилось несколько фактических стандартов для механической реализации, наиболее распространенным из которых является 9-контактный разъем типа D-sub со следующей распиновкой:
Этот фактический механический стандарт для CAN может быть реализован с узлом, имеющим как мужской, так и женский 9-контактный разъемы D-sub, электрически соединенные друг с другом параллельно внутри узла. Питание шины подается на мужской разъем узла, а шина получает питание от женского разъема узла. Это соответствует соглашению электротехники, согласно которому источники питания заканчиваются на женских разъемах. Принятие этого стандарта устраняет необходимость изготовления специальных разветвителей для подключения двух наборов шинных проводов к одному разъему D в каждом узле. Такие нестандартные (специальные) жгуты проводов (разветвители), которые соединяют проводники за пределами узла, снижают надежность шины, исключают взаимозаменяемость кабелей, снижают совместимость жгутов проводов и увеличивают стоимость.
Отсутствие полной спецификации физического уровня (механического в дополнение к электрическому) освободило спецификацию шины CAN от ограничений и сложности физической реализации. Однако это оставило реализации шины CAN открытыми для проблем совместимости из-за механической несовместимости. Чтобы улучшить совместимость, многие производители транспортных средств разработали спецификации, описывающие набор разрешенных приемопередатчиков CAN в сочетании с требованиями к паразитной емкости на линии. Разрешенная паразитная емкость включает как конденсаторы, так и защиту от электростатического разряда (ESD [17] по ISO 7637-3). Помимо паразитной емкости, системы 12 В и 24 В не имеют одинаковых требований с точки зрения максимального напряжения линии. Действительно, во время событий запуска от внешнего источника линии легковых автомобилей могут достигать 24 В, в то время как системы грузовых автомобилей могут достигать 36 В. Появляются новые решения, позволяющие использовать один и тот же компонент как для CAN, так и для CAN FD (см. [18] ).
Помехоустойчивость по ISO 11898 -2:2003 достигается путем поддержания дифференциального импеданса шины на низком уровне с помощью резисторов с низким значением (120 Ом) на каждом конце шины. Однако в состоянии покоя шина с низким импедансом, такая как CAN, потребляет больше тока (и мощности), чем другие сигнальные шины на основе напряжения. В системах шин CAN работа сбалансированной линии , когда ток в одной сигнальной линии точно уравновешивается током в противоположном направлении в другом сигнале, обеспечивает независимый, стабильный опорный сигнал 0 В для приемников. Передовая практика определяет, что сбалансированные сигналы пары шины CAN должны передаваться по витой паре проводов в экранированном кабеле для минимизации радиочастотного излучения и снижения восприимчивости к помехам в и без того шумной радиочастотной среде автомобиля.
ISO 11898-2 обеспечивает некоторую устойчивость к синфазному напряжению между передатчиком и приемником за счет наличия шины 0 В, проходящей вдоль шины, для поддержания высокой степени связи по напряжению между узлами. Кроме того, в фактической механической конфигурации, упомянутой выше, включена шина питания для распределения питания на каждый из узлов приемопередатчика. Конструкция обеспечивает общее питание для всех приемопередатчиков. Фактическое напряжение, которое должно подаваться шиной, и какие узлы к нему применяются, зависят от приложения и формально не указаны. Общая практика проектирования узлов предусматривает, что каждый узел оснащен приемопередатчиками, которые оптически изолированы от своего узла-хоста и получают линейно регулируемое напряжение питания 5 В для приемопередатчиков от универсальной шины питания, предоставляемой шиной. Обычно это обеспечивает рабочий запас на шине питания, достаточный для обеспечения взаимодействия между многими типами узлов. Типичные значения напряжения питания в таких сетях составляют от 7 до 30 В. Однако отсутствие формального стандарта означает, что разработчики систем несут ответственность за совместимость шин питания.
ISO 11898 -2 описывает электрическую реализацию, сформированную из многоточечной односторонней сбалансированной конфигурации линии с резисторным завершением на каждом конце шины. В этой конфигурации доминирующее состояние утверждается одним или несколькими передатчиками, переключающими CAN− для подачи 0 В и (одновременно) переключающими CAN+ на напряжение шины +5 В, тем самым формируя путь тока через резисторы, которые завершают шину. Таким образом, оконечные резисторы образуют существенный компонент системы сигнализации и включены не только для ограничения отражения волны на высокой частоте.
В рецессивном состоянии сигнальные линии и резистор(ы) остаются в состоянии высокого импеданса относительно обеих шин. Напряжения как на CAN+, так и на CAN− стремятся (слабо) к напряжению посередине между шинами. Рецессивное состояние присутствует на шине только тогда, когда ни один из передатчиков на шине не утверждает доминантное состояние.
В доминирующем состоянии сигнальные линии и резистор(ы) переходят в состояние с низким импедансом относительно рельсов, так что ток течет через резистор. Напряжение CAN+ стремится к +5 В, а CAN− стремится к 0 В.
Независимо от состояния сигнала сигнальные линии всегда находятся в состоянии низкого импеданса по отношению друг к другу благодаря оконечным резисторам на конце шины.
Эта стратегия сигнализации существенно отличается от других технологий передачи по сбалансированной линии, таких как RS-422 /3, RS-485 и т. д., которые используют дифференциальные линейные драйверы/приемники и используют систему сигнализации, основанную на дифференциальном режиме напряжения сбалансированной линии, пересекающего воображаемый 0 В. Множественный доступ в таких системах обычно опирается на среду, поддерживающую три состояния (активный высокий, активный низкий и неактивный три-состояние), и рассматривается во временной области. Множественный доступ по шине CAN достигается электрической логикой системы, поддерживающей всего два состояния, которые концептуально аналогичны сети «проводное И».
Сеть CAN может быть настроена для работы с двумя различными форматами сообщений (или кадров ): стандартным или базовым форматом кадров (описанным в CAN 2.0 A и CAN 2.0 B) и расширенным форматом кадров (описанным только в CAN 2.0 B). Единственное различие между этими двумя форматами заключается в том, что базовый кадр CAN поддерживает длину 11 бит для идентификатора, а расширенный кадр CAN поддерживает длину 29 бит для идентификатора, состоящего из 11-битного идентификатора (базовый идентификатор) и 18-битного расширения (расширение идентификатора). Различие между базовым форматом кадров CAN и расширенным форматом кадров CAN осуществляется с помощью бита IDE, который передается как доминантный в случае 11-битного кадра и передается как рецессивный в случае 29-битного кадра. Контроллеры CAN, которые поддерживают сообщения расширенного формата кадров, также могут отправлять и получать сообщения в базовом формате кадров CAN. Все кадры начинаются с бита начала кадра (SOF), который обозначает начало передачи кадра.
CAN имеет четыре типа кадров:
Кадр данных — единственный кадр для фактической передачи данных. Существует два формата сообщений:
Стандарт CAN требует, чтобы реализация принимала базовый формат кадра и могла принимать расширенный формат кадра, но должна допускать расширенный формат кадра.
Формат кадра следующий: значения бит описаны для сигнала CAN-LO.
Формат кадра следующий, см. таблицу ниже:
Два поля идентификатора (A и B) объединяются, образуя 29-битный идентификатор.
В случае одновременной передачи кадра данных и удаленного кадра с тем же идентификатором, кадр данных выигрывает арбитраж благодаря доминирующему биту RTR, следующему за идентификатором.
Кадр ошибки состоит из двух разных полей:
Существует два типа флагов ошибок:
В CAN имеется два счетчика ошибок:
Кадр перегрузки содержит два битовых поля: Флаг перегрузки и Разделитель перегрузки. Существует два вида условий перегрузки, которые могут привести к передаче флага перегрузки:
Начало кадра перегрузки из-за случая 1 разрешено начинать только в момент первого бита ожидаемого перерыва, тогда как кадры перегрузки из-за случая 2 начинаются на один бит после обнаружения доминирующего бита. Флаг перегрузки состоит из шести доминирующих битов. Общая форма соответствует форме активного флага ошибки. Форма флага перегрузки разрушает фиксированную форму поля перерыва. Как следствие, все другие станции также обнаруживают состояние перегрузки и со своей стороны начинают передачу флага перегрузки. Ограничитель перегрузки состоит из восьми рецессивных битов. Ограничитель перегрузки имеет ту же форму, что и ограничитель ошибки.
Слот подтверждения используется для подтверждения получения действительного кадра CAN. Каждый узел, который получает кадр, не обнаруживая ошибки, передает доминантный уровень в слоте ACK и, таким образом, переопределяет рецессивный уровень передатчика. Если передатчик обнаруживает рецессивный уровень в слоте ACK, он знает, что ни один приемник не нашел действительного кадра. Принимающий узел может передать рецессивный уровень, чтобы указать, что он не получил действительный кадр, но другой узел, который получил действительный кадр, может переопределить его доминантным. Передающий узел не может знать, что сообщение было получено всеми узлами в сети CAN.
Часто режим работы устройства заключается в повторной передаче неподтвержденных кадров снова и снова. Это может привести к переходу в пассивное состояние ошибки.
Кадры данных и удаленные кадры отделяются от предыдущих кадров битовым полем, называемым межкадровым пространством. Межкадровое пространство состоит как минимум из трех последовательных рецессивных (1) бит. После этого, если обнаружен доминирующий бит, он будет считаться битом начала кадра следующего кадра. Кадры перегрузки и кадры ошибок не имеют межкадрового пространства, а несколько кадров перегрузки не разделяются межкадровым пространством. Межкадровое пространство содержит битовые поля перерыва и простоя шины, а также приостановки передачи для пассивных станций с ошибками, которые были передатчиками предыдущего сообщения. [19]
Чтобы обеспечить достаточное количество переходов для поддержания синхронизации, бит противоположной полярности вставляется после пяти последовательных битов той же полярности. Эта практика называется бит-стаффингом и необходима из-за кодирования без возврата к нулю (NRZ), используемого в CAN. Заполненные кадры данных распаковываются приемником.
Все поля в кадре заполняются, за исключением разделителя CRC, поля ACK и конца кадра, которые имеют фиксированный размер и не заполняются. В полях, где используется заполнение битами, шесть последовательных битов одинаковой полярности (111111 или 000000) считаются ошибкой. Активный флаг ошибки может быть передан узлом при обнаружении ошибки. Активный флаг ошибки состоит из шести последовательных доминантных битов и нарушает правило заполнения битами.
Заполнение битами означает, что кадры данных могут быть больше, чем можно было бы ожидать, просто перечисляя биты, показанные в таблицах выше. Максимальное увеличение размера кадра CAN (базовый формат) после заполнения битами в случае
который наполняется как (куски начинки выделены жирным шрифтом):
Сам бит заполнения может быть первым из пяти последовательных идентичных битов, поэтому в худшем случае на четыре исходных бита приходится один бит заполнения.
Размер базовой рамы ограничен
где n — количество байтов данных, максимум 8.
Поскольку — размер кадра до заполнения, то в худшем случае один бит будет добавляться через каждые четыре исходных бита после первого (отсюда и −1 в числителе), и из-за расположения битов заголовка только 34 из 44 из них могут быть подвергнуты битовому заполнению.
Нежелательным побочным эффектом схемы бит-стаффинга является то, что небольшое количество ошибок в битах в полученном сообщении может испортить процесс дестаффинга, что приведет к распространению большего количества ошибок через дестаффинговое сообщение. Это снижает уровень защиты, который в противном случае был бы предложен CRC против исходных ошибок. Этот недостаток протокола был устранен в кадрах CAN FD путем использования комбинации фиксированных бит-стаффинга и счетчика, который регистрирует количество вставленных бит-стаффинга.
Серия стандартов ISO 11898 определяет физический и канальный уровень (уровни 1 и 2 модели ISO/OSI ) категории последовательной связи, называемой сетью контроллеров, которая поддерживает распределенное управление в реальном времени и мультиплексирование для использования в дорожных транспортных средствах. [20]
Существует несколько стандартов физического уровня CAN и других стандартов:
ISO 11898-1:2015 определяет уровень канала передачи данных (DLL) и физическую сигнализацию сети контроллеров (CAN). [13] В этом документе описывается общая архитектура CAN с точки зрения иерархических уровней в соответствии с эталонной моделью ISO для взаимодействия открытых систем (OSI), установленной в ISO/IEC 7498-1 , и приводятся характеристики для настройки обмена цифровой информацией между модулями, реализующими CAN DLL, с подробной спецификацией подуровня управления логическим каналом (LLC) и подуровня управления доступом к среде (MAC) .
ISO 11898-2:2016 определяет высокоскоростной (скорость передачи до 1 Мбит/с) блок доступа к среде (MAU) и некоторые функции интерфейса, зависящего от среды (MDI) (согласно ISO 8802-3), которые составляют физический уровень сети контроллеров. ISO 11898-2 использует двухпроводную сбалансированную схему сигнализации. Это наиболее используемый физический уровень в приложениях для силовых агрегатов транспортных средств и промышленных сетях управления.
ISO 11898-3:2006 определяет низкоскоростной, отказоустойчивый, зависящий от среды интерфейс для организации обмена цифровой информацией между электронными блоками управления автотранспортных средств, оснащенных CAN, со скоростью передачи данных от 40 кбит/с до 125 кбит/с.
ISO 11898-4:2004 определяет синхронизированную по времени связь в CAN (TTCAN). Он применим к настройке синхронизированного по времени обмена цифровой информацией между электронными блоками управления (ECU) дорожных транспортных средств, оснащенных CAN, и определяет сущность синхронизации кадров, которая координирует работу как логической связи, так и управления доступом к среде в соответствии с ISO 11898-1, чтобы обеспечить синхронизированный по времени график связи.
ISO 11898-5:2007 определяет физический уровень CAN для скоростей передачи до 1 Мбит/с для использования в дорожных транспортных средствах. Он описывает функции блока доступа к среде, а также некоторые зависящие от среды интерфейсные функции в соответствии с ISO 8802-2. Это представляет собой расширение ISO 11898-2, касающееся новых функций для систем, требующих функций низкого энергопотребления при отсутствии активной связи по шине.
ISO 11898-6:2013 определяет физический уровень CAN для скоростей передачи до 1 Мбит/с для использования в дорожных транспортных средствах. Он описывает функции блока доступа к среде, а также некоторые зависящие от среды интерфейсные функции в соответствии с ISO 8802-2. Это представляет собой расширение ISO 11898-2 и ISO 11898-5, определяющее механизм выборочного пробуждения с использованием настраиваемых кадров CAN.
ISO 16845-1:2016 предоставляет методологию и абстрактный набор тестов, необходимые для проверки соответствия любой реализации CAN стандарту CAN, указанному в ISO 11898-1.
ISO 16845-2:2018 устанавливает тестовые случаи и требования к тестированию для реализации плана тестирования, проверяющего, соответствует ли CAN-трансивер с реализованными функциями выборочного пробуждения указанным функциональным возможностям. Вид тестирования, определенный в ISO 16845-2:2018, называется тестированием соответствия.
Файлы CAN DBC — это стандартизированные файлы ASCII, используемые для определения сообщений, отправляемых по шине CAN. Они определяют формат и назначение каждого типа сообщения, включая идентификаторы сообщений, имена сигналов, масштабирование, смещения и типы данных, а также предоставляют совместимую помощь в разработке приложений шины CAN.
Поскольку стандарт CAN не включает в себя общие функции связи, такие как управление потоком , адресация устройств и транспортировка блоков данных, превышающих одно сообщение, и, прежде всего, данные приложений, было создано много реализаций протоколов более высокого уровня. Некоторые из них стандартизированы для бизнес-области, хотя все они могут быть расширены каждым производителем. Для легковых автомобилей каждый производитель имеет свой собственный стандарт.
CAN in Automation (CiA) — международная организация пользователей и производителей, которая разрабатывает и поддерживает протоколы более высокого уровня на основе CAN и их международную стандартизацию. [12] Среди этих спецификаций:
Группа CANopen Special Interest Group (SIG) "Lift Control", основанная в 2001 году, разрабатывает профиль приложения CANopen CiA 417 для систем управления лифтами . Она работает над расширением функций, улучшением технического содержания и обеспечением соответствия действующим правовым стандартам для систем управления лифтами. Первая версия CiA 417 была опубликована (доступна для членов CiA) летом 2003 года, версия 2.0 — в феврале 2010 года, версия 2.1.0 — в июле 2012 года, версия 2.2.0 — в декабре 2015 года и версия 2.3.1 — в феврале 2020 года.
Йорг Хельмих (ELFIN GmbH) является председателем этой SIG и управляет вики-сайтом сообщества CANopen lift с контентом о CANopen lift.
CAN — это протокол низкого уровня, который по сути не поддерживает никаких функций безопасности. В стандартных реализациях CAN также нет шифрования, что делает эти сети открытыми для перехвата кадров «человек посередине». В большинстве реализаций ожидается, что приложения будут развертывать собственные механизмы безопасности; например, для аутентификации входящих команд или наличия определенных устройств в сети. Неспособность реализовать адекватные меры безопасности может привести к различным видам атак, если противнику удастся вставить сообщения в шину. [21] Хотя существуют пароли для некоторых критически важных для безопасности функций, таких как изменение прошивки, программирование ключей или управление приводами антиблокировочной системы тормозов, эти системы не реализованы повсеместно и имеют ограниченное количество пар начальное число/ключ.
При разработке или устранении неполадок шины CAN проверка аппаратных сигналов может быть очень важна. Логические анализаторы и анализаторы шин — это инструменты, которые собирают, анализируют, декодируют и сохраняют сигналы, чтобы люди могли просматривать высокоскоростные формы сигналов в свободное время. Существуют также специальные инструменты, а также мониторы шины CAN.
АМонитор шины CAN — это инструмент анализа, часто представляющий собой комбинацию аппаратного и программного обеспечения , используемый при разработке оборудования, использующего шину CAN.
Обычно монитор шины CAN прослушивает трафик на шине CAN, чтобы отобразить его в пользовательском интерфейсе. Часто монитор шины CAN предлагает возможность имитировать активность шины CAN, отправляя кадры CAN на шину. Поэтому монитор шины CAN можно использовать для проверки ожидаемого трафика CAN от заданного устройства или для имитации трафика CAN, чтобы проверить реакцию от заданного устройства, подключенного к шине CAN.
Bosch владеет патентами на эту технологию, хотя патенты, связанные с исходным протоколом, уже истекли. Производители CAN-совместимых микропроцессоров платят Bosch лицензионные сборы за использование торговой марки CAN и любых новых патентов, связанных с CAN FD, и они обычно передаются покупателю в цене чипа. Производители продуктов с пользовательскими ASIC или FPGA, содержащими CAN-совместимые модули, должны платить сбор за лицензию на протокол CAN, если они хотят использовать торговую марку CAN или возможности CAN FD. [22]