Вопрос

Как реконструировать протокол производителя на OBD2 для получения расширенных данных о транспортном средстве

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




  1. Получаем ли мы в этой категории параметры транспортного средства, а не те, что отображаются в идентификаторах OBD-II (https://en.wikipedia.org/wiki/OBD-II_PIDs)


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




Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/39093/how-to-reverse-engineer-the-manufacturer-specific-protocol-on-obd2-for-acquiring

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

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



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



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



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


  1. @SoumyaSen Это примерно то, что вам нужно, помимо инструмента для сканирования. Есть и другие, но это первое, что я нашёл. youtube.com/watch?v=WfSZdWHiM9k
  1. Да, я понимаю этот процесс. Я не могу найти информацию о том, как записать команду, отправленную диагностическим сканером. Какая настройка мне нужна? Можете ли вы помочь мне с этим? Я имею в виду, что если я нажму «Показать коды неисправностей» для модуля управления ABS, то где-то увижу, что сканер отправляет, скажем, 7E3 02 xxxxx или что-то в этом роде.
  1. @SoumyaSen Вам понадобятся два инструмента. Один для связи с автомобилем (сканер). Второй для прослушивания шины (сниффер). Сначала с помощью сниффера определите как можно больше сообщений на шине, а затем отфильтруйте их. Затем с помощью сканера отправьте команды или запросите данные. Запишите сообщения, чтобы потом сопоставить их.
  1. «Самый простой способ — взять сканер и прослушивать шину, пока сканер запрашивает данные у автомобиля». Я не могу найти в интернете информацию о том, как это настроить. Не могли бы вы помочь? Есть ли способ настроить сканер так, чтобы можно было нажать любую кнопку и посмотреть, какие команды он отправляет?
  1. @RoryAlsop «Доступно в сервисных центрах» — это просто броская фраза. В лучшем случае сервисным центрам доступен готовый инструмент для сканирования. Информация о том, как взаимодействовать с коммуникационной шиной и что означают данные вплоть до битового уровня, как правило, не является общедоступной.
  1. Я не уверен, что (не опубликовано) во многих случаях является правильным решением. Конечно, у каждого производителя свои требования, но многие из них доступны, особенно для сервисных центров.
  1. У меня нет репутации на этом сайте StackExchange, поэтому я публикую свой ответ в качестве нового. Я начал отслеживать обмен данными по протоколу OBDII с помощью Putty, чтобы считать последовательный обмен данными по шине данных в разъёме OBDII. Для этого вам понадобится USB-последовательный адаптер для ноутбука (если только у вас не очень старый ноутбук с последовательным портом) и двухжильный кабель для подключения к жгуту OBDII. Подключите резистор сопротивлением 120 Ом между двумя проводами шины данных. Кроме того, подключитесь к жгуту проводов OBDII со стороны разъема автомобиля, так как для обычного подключения вам понадобится настоящий сканер.
Вы уже ответили на этот вопрос