Вопрос

Могут ли два устройства, подключённые к порту OBD, вызвать проблемы?

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



Сейчас мы тестируем наш продукт на новом Mercedes с уже установленным сервисом connect.me. Этот сервис получает данные через другой адаптер, подключённый к порту OBD (на приборной панели).



Итак, в нашем случае у автомобиля есть два ключа, считывающих данные с порта OBD.



Проблема в том, что, когда мы подключаем наше устройство, на панели управления появляется сообщение об ошибке, в котором говорится что-то вроде «ограниченная служба me.connect»



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



Я уверен, что подобрал не те слова, но суть в том, что устройства могут создавать проблемы друг для друга.



Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/64569/can-2-devices-plugged-in-obd-port-cause-problem

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

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



    Пример: устройство A подключается, устройство A что-то запрашивает, модуль отвечает, устройство A подтверждает получение ответа, устройство B отправляет сигнал об отключении, устройство B подключается, устройство A отправляет сигнал о поддержании соединения, устройство B отправляет запрос, устройство A отправляет запрос, модуль отвечает устройству B, устройство A не понимает ответ и отправляет сигнал об отключении, устройство B подтверждает получение ответа, устройство B отправляет запрос, ответа нет.



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


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



    Производитель может рассчитывать на то, что в любой момент времени будет подключено только одно устройство (будь то диагностический сканер, регистратор страховых случаев, регистратор для управления автопарком и т. д.), и не тестирует и не гарантирует работоспособность при одновременном подключении двух или более устройств... Если вы выходите за рамки, не ждите нормального поведения системы.


  1. Нет, на самом деле это невозможно, протоколы для этого не предназначены.
  1. Итак, что вы, как разработчик, собираетесь внедрить, чтобы ваше OBD-устройство могло взаимодействовать с другими устройствами?
  1. @JPhi1618 и если они предоставляют два порта, то они должны обеспечить «завершение» или что-то подобное, чтобы предотвратить ошибки при передаче...
  1. Порт только один, поэтому предполагается, что одновременно можно подключить только одно устройство. Если бы порт был под приборной панелью, а другой — в моторном отсеке, пришлось бы учитывать, что оба порта могут использоваться одновременно, и решать эту проблему.
  1. Одно устройство, подключённое в данный момент... У вас могут быть OBD-устройства для разных задач, это не проблема.
  1. Как производитель может рассчитывать только на одно устройство? Я имею в виду, что для диагностики можно использовать порт OBD, страховые компании могут предложить вам использовать устройство OBD, программное обеспечение для управления автопарком может опираться на данные, полученные от OBD, для такси мы можем сделать то же самое... есть несколько вариантов использования OBD... Я не знаю
  1. Как подключены эти два устройства? Как уже сказали Майк и JPhi1618, обычно используется только один порт. Если вы добавили какой-то адаптер, чтобы можно было подключить два устройства к одному порту, возможно, он неправильно передаёт сигналы на контакты, специфичные для производителя?
  1. Спасибо, @Pᴀᴜʟsᴛᴇʀ2. Что ты имеешь в виду, говоря «...пытается захватить власть...»?
  1. @LucaRasconi — очевидно, что существует конфликт между тем, что вы подключаете к CAN-шине, и тем, что уже есть в системе. Я предполагаю, что то, что вы подключаете, переопределяет me.connect. Я не совсем понимаю, что вы имеете в виду под «оформлением и упаковкой» данных. Будет ли лучше для автомобильной системы, если она будет отправлять/получать данные через систему me.connect, а не напрямую запрашивать систему OBD2?
  1. Добро пожаловать в раздел «Техническое обслуживание и ремонт автомобилей»! На мой взгляд, у вас не должно возникнуть проблем. Я имею в виду, что система OBD2 работает через шину CAN, и множество различных компьютеров конкурируют за время на этой шине. Если вы правильно запрашиваете информацию через шину, думаю, у вас не должно возникнуть проблем. Я бы предположил, что ваш «считыватель» пытается перехватить управление, а не просто считывает данные. Я не эксперт, так что это всего лишь предположение... оставляю его в качестве комментария.
Вы уже ответили на этот вопрос