Вопрос

Почему в автомобилях используется несколько шин CAN?

По шине CAN есть несколько вопросов, но ни один из них (насколько я могу судить) не объясняет, почему в автомобиле несколько шин CAN. Насколько я понимаю, к одной шине CAN можно подключить множество различных узлов, поэтому я не уверен, зачем нужно больше одной. Я могу предположить следующее:



A. Существует довольно небольшое ограничение на количество узлов, которые можно подключить к одной шине CAN. Но если это так, то, по моему мнению, должно быть какое-то межсетевое соединение CAN, чтобы можно было осуществлять арбитраж и проверку ошибок (CAN SPEC 2.0).



-- или --



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



Буду очень признателен, если кто-нибудь сможет объяснить/прояснить ситуацию. Заранее спасибо.



Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/26125/why-are-there-multiple-can-buses-in-vehicles

13 Комментариев

  1. Одна из причин прекрасно сформулирована в этом мультфильме 2003 года:



    введите описание изображения здесь



    («Обнаружено новое устройство: Airbus A310. Начать автоматическую настройку? [Начать][Отмена]»)



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


  1. Если говорить конкретно о CAN, то ответ будет отрицательным.



    В системе CAN узлы не взаимодействуют напрямую друг с другом, а система основана на обмене сообщениями. Каждое сообщение имеет приоритет, определяемый его адресом, и это определяет, кто будет говорить. Тот, у кого есть приоритетное сообщение, передаёт его всем, а тот, кому оно нужно, его считывает.



    Существует ограничение на количество узлов, но оно связано с электрическими характеристиками, а не с самой шиной.



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




    • Высокоскоростная шина CAN соединяет все важные системы. Двигатель, ABS, подушки безопасности, трансмиссия, кузов. Бортовой компьютер служит связующим звеном между другими шинами.

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

    • Низкоскоростная шина CAN обслуживает остальные, некритичные системы. К ним могут относиться внутреннее освещение, развлекательные системы и т. д.



    Как упоминалось ранее, в шине CAN используются адреса сообщений, а не адреса узлов. Например, скорость автомобиля — это сообщение. Это сообщение передаётся блоком ABS и имеет довольно высокий приоритет. Двигатель, подушка безопасности, трансмиссия и кузов — все они заинтересованы в получении этого сообщения и считывают его. После получения сообщения кузов повторно передаёт его по другим шинам. Шины с более низкой скоростью обычно не нуждаются в таких частых обновлениях, как шина с высокой скоростью, поэтому кузов обновляет их лишь время от времени.



    Если модулю нужна информация, которая обычно не передаётся, он может запросить её. Структура шины такова, что при запросе данных модуль, у которого есть нужная информация, знает только о том, что информация нужна, но не знает, кому она нужна.



    Шлюзом может быть не только Тело, но и Кластер Инструментов или какой-либо другой компьютер.


  1. @Moeman69 Да. В автомобиле может быть более сотни различных узлов. Оснастить их всех высокоскоростной шиной CAN было бы слишком дорого. Кроме того, это привело бы к перегрузке шины и значительному увеличению количества точек отказа в критически важной системе.
  1. Признаюсь, я мало что в этом понимаю, но я думал, что шина только одна, поскольку есть только одно соединение — порт OBDII. Как идентифицируются отдельные шины? Что делает их отдельными?
  1. Шины CAN в основном разделены на




    • управление перегрузками

    • снизить обеспокоенность регулирующих органов по поводу критически важных систем

    • усилить контроль за тем, кто может пользоваться различными автобусами



    В простых автомобилях будет две шины CAN: одна для двигателя и систем безопасности, а другая для управления кузовом (освещение, пользовательский интерфейс и т. д.).



    В сложных транспортных средствах будет выделен отдельный канал для систем, влияющих на движение автомобиля, например для круиз-контроля с радаром, систем парковки, удержания в полосе и т. д., а также для дополнительных систем, расширяющих возможности пользователя, например для развлекательных систем автомобиля.



    Хотя автобусами можно пользоваться совместно, есть несколько причин этого не делать:



    Перегруженность



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



    Тестирование



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



    Вместо того чтобы объединять все в одном автобусе и следить за тем, чтобы все соответствовало высоким стандартам, разработчики могут разделить автобус на сегменты и сократить расходы.



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



    Контроль



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



    Однако разделение автобусов позволяет им в некоторой степени контролировать, у кого есть доступ к бортовым компьютерам через простой диагностический разъём.



    Дополнительная сложность



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


  1. @PeterA.Schneider Возможно, это вопрос терминологии или различия без разницы, но если производитель требует единую шину, то системы можно спроектировать с тем же уровнем безопасности, что и при использовании отдельных шин. Единственное, что действительно пострадает, — это время разработки. К счастью, дополнительные расходы на отдельные шины невелики, иначе мы бы проектировали единую шину, если бы стоимость отдельных шин была слишком высокой.
  1. @PeterA.Schneider Это позволяет проводить более тщательное тестирование модулей и шин, что повышает безопасность, но основная цель заключалась в том, чтобы сократить время разработки, сохранив при этом определённый уровень безопасности, а не в том, чтобы повысить безопасность. Благодаря конструкции модулей и системы передачи сообщений маловероятно, что перепрошитый DVD-плеер на шине двигателя может вызвать проблемы. Аппаратное обеспечение, соединяющее шину, предотвращает DOS-атаки на уровне кремния, а микроконтроллеры, подключённые к этому аппаратному обеспечению, не программируются с помощью программного обеспечения.
  1. @PeterA.Schneider Я с вами не спорю, но я работал над модулем кузова для больших автомобилей Ford 2009 модельного года, и хотя желаемым результатом было повышение или обеспечение безопасности, доказательством было тестирование, а в случае с этим модулем — сокращение времени тестирования. Реальность такова, что тестирование одного сложного модуля во всех его внутренних вариациях может занять месяцы, а тестирование одного целого автомобиля — годы. Это можно сделать параллельно, но с большими затратами, но даже несколько недель — неприемлемый срок. Разделение автобусов позволяет проводить тестирование проще и быстрее.
  1. Я согласен с вашими доводами, но хотел бы сделать акцент на «безопасности», а не на «тестировании». Критически важные для безопасности контроллеры изолированы от остальных с помощью шлюза, который фильтрует и ограничивает обмен данными между шинами определенным подмножеством. DVD-плеер не должен иметь возможности управлять тормозами или подушками безопасности (после того, как вы взломаете его с помощью хорошо сделанной USB-флешки) или случайно нарушить работу их CAN-шины, логическую или электрическую. Стратегия такая же, как и для любой локальной сети с критически важными серверами, которые вы не стали бы подключать к интернету. Тестирование — это только первый шаг; изоляция надёжна как скала.
  1. Спасибо за подробный ответ. Я довольно хорошо знаком с сообщениями CAN и арбитражем сообщений. Думаю, вопрос, который меня действительно интересует, заключается в следующем: видят ли узлы, подключенные к другой сети CAN (например, к высокоскоростной сети CAN для критически важных систем), сообщения, передаваемые по одной сети CAN (например, по низкоскоростной сети CAN для некритически важных систем)? Я полагаю, что система могла бы работать без сбоев, если бы все устройства были подключены к одной сети CAN, поскольку система арбитража сама по себе определяет приоритет сообщений. Или даже если бы разные сети CAN были соединены вместе. Разве они разделены только из-за необходимости и дороговизны?
  1. @JPhi1618 А, спасибо. Я никогда не видел эту страницу. Похоже, что моя догадка Б была отчасти верной: приборы подключены группами к разным шинам. Однако шлюз CAN, по-видимому, уникален для автомобилей VW и не является стандартом. Я могу только предположить, что в других автомобилях есть аналогичное устройство и система, но это чисто умозрительное предположение. Хотел бы я написать в личные сообщения тем, кто, как и я, обладает непосредственными знаниями о нескольких шинах.
  1. Нашёл это обсуждение, в котором говорится: Чтобы запросить данные, вам нужно установить соединение с CAN-шлюзом, согласовать настройки подключения, запросить набор данных у конкретного CAN-устройства и считать полученные данные. С помощью правильных запросов вы можете получить доступ к данным с любой из трёх шин через одно соединение — так, ваш бортовой компьютер может запрашивать частоту вращения двигателя у контроллера двигателя, показания одометра — у комбинации приборов, положение окна — у контроллера передней правой двери и т. д. Похоже, что ключевым элементом является «шлюз».
  1. @JPhi1618 Честно говоря, я и сам не так много знаю, поэтому и спрашиваю. Я обсуждал с коллегой по работе безопасность транспортных средств через шину CAN после того, как он вернулся с хакатона, где этот вопрос поднимался, и мы нашли несколько упоминаний о том, что в большинстве автомобилей есть несколько шин CAN. Я согласен с тем, что единственное известное мне соединение — это порт OBDII. Здесь есть несколько постов, в которых люди упоминают о наличии нескольких шин. (mechanics.stackexchange.com/questions/8559/obd2-and-can-bus — am6sigma упоминает об этом в ответе).
Вы уже ответили на этот вопрос