Вы сели в свою машину, нажали кнопку запуска, и двигатель мгновенно ожил, но как ваша машина решила, должна она заводиться или нет?
Ну а чтобы машина завелась, с брелока связались несколько антенн и электронных блоков управления. Протокол Controller Area Network (CAN) обеспечивает надлежащую связь между вашим брелком, антеннами и ЭБУ внутри вашего автомобиля.
Так что же такое протокол CAN и как он помогает устройствам систем вашего автомобиля работать вместе? Что ж, давайте узнаем.
Что такое протокол CAN и зачем он нужен?
Раньше в автомобилях не было большого количества электроники. На самом деле, если вы хотели завести свой автомобиль в начале 1900-х годов, вам приходилось выходить из машины и проворачивать двигатель вручную.
Сегодняшние автомобили, наоборот, имеют несколько электронных датчиков, и электронные устройства следят за всем, от температуры в салоне до оборотов коленчатого вала.
При этом данные, полученные от этих датчиков, не представляют никакой ценности, пока не будут обработаны. Эта обработка данных выполняется вычислительными устройствами, известными как электронные блоки управления (ECU).
В отличие от компьютера с одним ЦП, в автомобиле имеется несколько ЭБУ, каждый из которых отвечает за выполнение определенной задачи. Хотя эти ECU могут эффективно выполнять одну задачу, они должны работать вместе, чтобы обеспечить такие функции, как АБС а также ESC усердно работать.
В связи с этим все ЭБУ на автомобиле должны быть подключены. Для выполнения этих соединений можно использовать топологию «точка-точка», где каждый блок управления двигателем напрямую подключается к каждому другому блоку управления двигателем. Однако такая архитектура сделает систему сложной. Фактически, современный автомобиль имеет более 70 блоков управления двигателем, и соединение их один к одному увеличило бы вес проводки в геометрической прогрессии.
Чтобы решить эту проблему, Bosch вместе с Mercedes-Benz и Intel в 1986 году создали протокол Controller Area Network. Этот протокол позволял блокам управления обмениваться данными друг с другом, используя общую шину данных, известную как шина CAN.
Как работает CAN?
Протокол CAN представляет собой методологию обмена сообщениями, основанную на наборе кабелей витой пары для передачи данных. Эти провода известны как CAN high и CAN low.
Для обеспечения передачи данных по этим проводам изменяются уровни их напряжения. Эти изменения уровней напряжения затем преобразуются в логические уровни, позволяющие ЭБУ автомобиля взаимодействовать друг с другом.
Для передачи логической единицы по шине CAN напряжение обеих линий устанавливается равным 2,5 вольта. Это состояние также известно как рецессивное состояние, что означает, что шина CAN доступна для использования любым ЭБУ.
Наоборот, по шине CAN передается логический 0, когда линия CAN high находится под напряжением 3,5 вольт, а линия CAN low — 1,5 вольта. Это состояние шины также известно как доминирующее состояние, которое сообщает каждому ECU в системе, что другой ECU передает, поэтому они должны дождаться окончания передачи, прежде чем начать передачу своего сообщения.
Чтобы разрешить эти изменения напряжения, ЭБУ автомобиля подключаются к шине CAN через приемопередатчик CAN и контроллер CAN. Приемопередатчик отвечает за преобразование уровней напряжения на шине CAN в уровни, понятные ЭБУ. Контроллер, с другой стороны, используется для управления полученными данными и обеспечения выполнения требований протокола.
Все эти ЭБУ, подключенные к CAN-шине, могут передавать данные по витому кабелю, но есть одна загвоздка, по CAN-шине может передаваться только сообщение с наивысшим приоритетом. Чтобы понять, как ЭБУ передает данные по шине CAN, нам необходимо понять структуру сообщений протокола CAN.
Понимание структуры сообщений протокола CAN
Всякий раз, когда два ЭБУ хотят обмениваться данными, сообщения с приведенной ниже структурой передаются по шине CAN.
Эти сообщения передаются путем изменения уровней напряжения на шине CAN, а конструкция витой пары проводов CAN предотвращает повреждение данных во время передачи.
- СОФ: Сокращенно от Start Of Frame, бит SOF представляет собой кадр данных с одним доминирующим битом. Этот бит передается узлом, когда он хочет отправить данные по шине CAN.
- Идентификатор: Идентификатор в протоколе CAN может иметь размер 11 или 29 бит. Размер идентификатора зависит от версии используемого протокола CAN. Если используется расширенная версия CAN, то размер идентификатора составляет 29 бит, а в остальных случаях размер идентификатора составляет 11 бит. Основная цель идентификатора — определить приоритет сообщения.
- РТР: Запрос удаленной передачи или RTR используется узлом, когда данные необходимо запросить у другого узла. Для этого узел, которому нужны данные, отправляет сообщение с рецессивным битом в кадре RTR на предполагаемый узел.
- Дополнения: Код длины данных определяет размер данных, передаваемых в поле данных.
- Поле данных: Это поле содержит полезные данные. Размер этой полезной нагрузки составляет 8 байт, но более новые протоколы, такие как CAN FD, увеличивают размер этой полезной нагрузки до 64 байт.
- CRC: Поле CRC, сокращенно от Cyclic Redundancy Check, представляет собой кадр проверки ошибок. То же самое имеет размер 15 бит и вычисляется как приемником, так и передатчиком. Передающий узел создает CRC для данных при передаче. При получении данных получатель вычисляет CRC для полученных данных. Если оба CRC совпадают, целостность данных подтверждается. Если нет, данные содержат ошибки.
- Поле подтверждения: Как только данные получены и не содержат ошибок, принимающий узел вводит доминантный бит в кадр подтверждения и отправляет его обратно передатчику. Это сообщает передатчику, что данные были получены и не содержат ошибок.
- Конец кадра: Как только передача данных завершена, передаются семь последовательных рецессивных битов. Это гарантирует, что все узлы знают, что узел завершил передачу данных, и они могут передавать данные по шине.
В дополнение к битам, указанным выше, в протоколе CAN есть несколько битов, зарезервированных для использования в будущем.
Упрощение CAN на примере
Теперь, когда у нас есть общее представление о том, как выглядит сообщение на шине CAN, мы можем понять, как данные передаются между разными ЭБУ.
Для простоты предположим, что наш автомобиль имеет 3 ЭБУ: Node 1, Node 2 и Node 3. Из 3 ЭБУ узел 1 и узел 2 хотят обмениваться данными с узлом 3.
Давайте посмотрим, как протокол CAN помогает обеспечить связь в таком сценарии.
- Определение состояния шины: Все ЭБУ автомобиля подключены к CAN-шине. В нашем примере Узел 1 и Узел 2 хотят отправить данные на другой ЭБУ; перед этим оба ЭБУ должны проверить состояние шины CAN. Если шина находится в доминирующем состоянии, то ЭБУ не могут передавать данные, поскольку шина используется. С другой стороны, если шина находится в рецессивном состоянии, ЭБУ могут передавать данные.
- Отправка начала кадра: Если дифференциальное напряжение на шине CAN равно нулю, то и Узел 1, и Узел 2 изменяют состояние шины на доминирующее. Для этого напряжение CAN high поднимают до 3,5 вольт, а напряжение CAN low уменьшают до 1,5 вольт.
- Определение того, какой узел может получить доступ к шине: После отправки SOF оба узла конкурируют за доступ к шине CAN. Шина CAN использует протокол множественного доступа/обнаружения коллизий с контролем несущей (CSMA/CD), чтобы решить, какой узел получит доступ. Этот протокол сравнивает идентификаторы, переданные обоими узлами, и дает доступ к тому, у которого более высокий приоритет.
- Отправка данных: Как только узел получает доступ к шине, поле данных вместе с CRC отправляется получателю.
- Проверка и завершение связи: При получении данных узел 3 проверяет CRC полученных данных. Если ошибок нет, узел 3 отправляет сообщение CAN передающему узлу с доминантным битом в кадре подтверждения вместе с EOF для прекращения связи.
Различные типы CAN
Хотя структура сообщения, используемая протоколом CAN, остается прежней, скорость передачи данных и размер битов данных изменяются для передачи данных с более высокой пропускной способностью.
Из-за этих различий протокол CAN имеет разные версии, и их обзор приведен ниже:
- Высокоскоростной CAN: Данные по проводам CAN передаются последовательно, и эта передача может выполняться с разной скоростью. Для высокоскоростного CAN эта скорость составляет 1 Мбит/с. Из-за этой высокой скорости передачи данных высокоскоростные могут использоваться для ЭБУ, которые управляют силовым агрегатом и системами безопасности.
- Низкоскоростная CAN: В случае низкоскоростного CAN скорость передачи данных снижается до 125 кбит/с. Поскольку низкая скорость может обеспечить более низкую скорость передачи данных, она используется для подключения ЭБУ, которые управляют комфортом пассажира, например, кондиционер или информационно-развлекательная система.
- Может ФД: CAN FD, сокращение от CAN с гибкой скоростью передачи данных, является новейшей версией протокола CAN. Он увеличивает размер кадра данных до 64 байт и позволяет блокам управления передавать данные со скоростью от 1 Мбит/с до 8 Мбит/с. Эта скорость передачи данных может управляться ЭБУ в режиме реального времени в зависимости от системных требований, что позволяет передавать данные на более высоких скоростях.
Каково будущее автомобильной связи?
Протокол CAN позволяет нескольким ЭБУ связываться друг с другом. Эта связь обеспечивает такие функции безопасности, как электронный контроль устойчивости и усовершенствованные системы помощи водителю, такие как обнаружение слепых зон и адаптивный круиз-контроль.
Тем не менее, с появлением расширенных функций, таких как автономное вождение, объем данных, передаваемых по шине CAN, увеличивается в геометрической прогрессии. Чтобы включить эти функции, на рынок выходят более новые версии протокола CAN, такие как CAN FD.