ISO 15765-4 CAN
CAN (англ. Controller Area Network — сеть контроллеров) — стандарт промышленной сети, ориентированный прежде всего на объединение в единую сеть различных исполнительных устройств и датчиков. Режим передачи — последовательный, широковещательный, пакетный.
CAN разработан компанией Robert Bosch GmbH в середине 1980-х и в настоящее время широко распространён в автомобильной промышленности, промышленной автоматизации, технологиях «умного дома» и многих других областях.
В 2000 году, когда все ведущие мировые производители осознали, что единые системы управления и диагностики автомобиля просто необходимы, был введен новый стандарт — EOBD (EURO OBD), основным отличием которого является закрепление протокола управления автомобильными подсистемами CAN, разработанного фирмой Bosch и реализованного на ряде моделей европейских и азиатских производителей. Но диагностический разъем OBD-II не изменился, поскольку в нем уже были зарезервированы контакты для реализации связи по интерфейсу CAN. Стандарт EOBD иногда называют европейским, а OBD-II — американским, хотя это не совсем корректно, так как EOBD представляет собой уже управляющий интерфейс. В американских автомобильных системах и сканерах до сих пор употребляется термин OBD-II, даже если сканер поддерживает диагностику и управление по CAN (поддержка интерфейса CAN обычно специально оговаривается). Напротив, утверждение, что система поддерживает стандарт EOBD, часто лишь означает, что поддерживается расширенный перечень параметров и кодов неисправностей, принятый в EOBD, но при этом совсем необязательно, что система должна работать по всем протоколам, заявленным в этом стандарте, и управляться по интерфейсу CAN.
ISO 15765-1, ISO 15765-2, ISO 15765-3, ISO 15765-4 — CAN bus (или ISO 15031-1, ISO 11898-2 и прочие для CAN ранних версий) — это самый быстрый протокол из имеющихся, который обеспечивает скорость до 1 Мбит/c.
Интерфейс CAN по протоколу ISO 15765-4 является наиболее прогрессивным, но он несовместим с более ранними реализациями CAN по ISO 15031-1, ISO 11898-2 и др.
В стандарте OBD-II, как мы уже отмечали, CAN теоретически предусматривался, но реально его никто не реализовывал (хотя соответствующие контакты на стандартном 16-контактном разъеме OBD-II были зарезервированы), а в EOBD он стал уже одним из основных рабочих стандартов обмена данными. Поэтому поддержка автомобилем или сканером OBD-II интерфейса CAN должна специально оговариваться (в американских сканерах и автомобилях для американского рынка название EOBD обычно не используется), но с 2008 года все легковые автомобили, продающиеся на территории США, поддерживают шину CAN.
CAN использует контакты 6 и 14.
Техническая реализация
Синхронная шина, с типом доступа Collision Resolution (CR), который в отличие от Collision Detect (CD) сетей (Ethernet — это CD) детерминировано (приоритетно) обеспечивает доступ на передачу сообщения, что особо ценно для промышленных сетей управления. Передача ведётся кадрами. Полезная информация в кадре состоит из идентификатора длиной 11 бит (стандартный формат) или 29 бит (расширенный формат, надмножество предыдущего) и поля данных длиной от 0 до 8 байт. Идентификатор говорит о содержимом пакета и служит для определения приоритета при попытке одновременной передачи несколькими сетевыми узлами.
Арбитраж доступа
При свободной шине любой узел может начинать передачу в любой момент. В случае одновременной передачи кадров двумя и более узлами проходит арбитраж доступа: передавая адрес источника, узел одновременно проверяет состояние шины. Если при передаче рецессивного бита принимается доминантный — считается, что другой узел передаёт сообщение с большим приоритетом и передача откладывается до освобождения шины. Таким образом, в отличие, например, от Ethernet в CAN не происходит непроизводительной потери пропускной способности канала при коллизиях. Цена этого решения — вероятность того, что сообщения с низким приоритетом никогда не будут переданы.
Контроль ошибок
CAN имеет несколько механизмов контроля и предотвращения ошибок:
- Контроль передачи: при передаче битовые уровни в сети сравниваются с передаваемыми битами.
- Дополняющие биты (bit stuffing): после передачи пяти одинаковых битов подряд автоматически передаётся бит противоположного значения. Таким образом кодируются все поля кадров данных или запроса, кроме разграничителя контрольной суммы, промежутка подтверждения и EOF.
- Контрольная сумма: передатчик вычисляет её и добавляет в передаваемый кадр, приёмник считает контрольную сумму принимаемого кадра в реальном времени (одновременно с передатчиком), сравнивает с суммой в самом кадре и в случае совпадения передаёт доминантный бит в промежутке подтверждения.
- Контроль значений полей при приёме.
Разработчики оценивают вероятность невыявления ошибки передачи как 4,7×10-11.
Предельная длина сети
Приведённые выше методы контроля ошибок требуют, чтобы изменение бита при передаче успело распространиться по всей сети к моменту замера значения. Это ставит максимальную длину сети в обратную зависимость от скорости передачи: чем больше скорость, тем меньше длина. Например, для скорости в 1 Мбит/с предельная длина сети составит около 40 метров.
Преимущества и недостатки
Преимущества
- Возможность работы в режиме жёсткого реального времени.
- Простота реализации и минимальные затраты на использование.
- Высокая устойчивость к помехам.
- Арбитраж доступа к сети без потерь пропускной способности.
- Надёжный контроль ошибок передачи и приёма.
- Широкий диапазон скоростей работы.
- Большое распространение технологии, наличие широкого ассортимента продуктов от различных поставщиков.
Недостатки
- Максимальная длина сети обратно пропорциональна скорости передачи.
- Большой размер служебных данных в пакете (по отношению к полезным данным).
- Отсутствие единого общепринятого стандарта на протокол высокого уровня, но это же может быть и достоинством, т.к. предоставляет разработчикам большую свободу.
Техническая спецификация шины CAN доступна здесь. (английский язык)
Неполный список автомобилей с шиной CAN
Lada Granta, Largus, Priora (2011--), Kalina (2011--), Samara (2011--)
Audi A3 (2004-2009), A3 (2010--), A4 (2008--), A5, A6 (2004--), Q5, Q7, allroad (2006--), A8 (2003-2009), Audi TT (2006--), А8 (2010--)
Mercedes-Benz кузов 221, 216, 204, 212, 164, 251, 211, 219, 209, 169, 245, 463, 203, 171, 639, 906
BMW-1(E87, 81, 82, 88), BMW-3 (E90, 91, 92, 93), BMW-5 (E60, 61), BMW-6 (E63, 64), BMW-7 (F01, 02), BMW X1 (E84), BMW X5 (E70), BMW X6 (E71), BMW-7 (E65/66), BMW Гран Туризмо, BMW-5 (F10)
Volkswagen Touareg, Passat B6, Passat CC, Golf 5, Golf 6, Jetta (2006--), Golf Plus, Caddy (2004--), Touran, Tiguan, Multivan, Polo (2005-2009), Polo sedan(2010 - ), Scirocco, Crafter; Amarok (2010)
Skoda Octavia A5 (2005-2008), Octavia FL (2009--), Superb (2009--), Fabia (2008--), Roomster, Octavia Tour, Yeti
Opel Astra H, Astra J, Zafira B, Corsa D, Vectra C, Insignia, Antara
Ford Focus, C-MAX, KUGA, S-MAX, MONDEO (2007--), GALAXY (2007--), FIESTA (2009--), FUSION
Infiniti FX35, FX50, EX35, G35X, G37, M35, M45
Mazda 2, 3 (2009--), 6 (2008--)
Porsche Cayenne, Panamera
Mini Cooper (2009--)
Peugeot 207, 308, 407, 4007, Partner ( 2009 — )
Citroen C3, С4, С5, С3 Picasso, С4 Picasso, Berlingo (2009--)
Land Rover Discovery 4, Range Rover (2010 —), Range Rover Sport (2010—); Freelander (2008--)
Lexus LX 570, RX (2009--), LS 460, GX 460
Seat Altea (2004--), Leon (2006--), Ibiza (2009- )
Cadillac Escalade (2007—), SRX, CTS
Hummer H2
Volvo S–60 (2005--), V–70 (2005-2008), V–70XC (2005-2007), XC–70 (2005-2007), S–80 (2005-2006), XC–90 (2005--), S–80 (2007--), XC–60, XC–70 (2008--),С–30, С–70, S-40 (2004--), V–50;
Renault Fluence, Koleos, Megane (2009--) Laguna (2008--)