Вопрос

Какое максимальное количество идентификаторов OBD2 я могу получить одновременно?

У меня Mazda 5 2014 года выпуска


Недавно я приобрёл регистратор OBD2, который позволяет получать большое количество (несколько сотен) идентификаторов PID, в том числе стандартных (SAE) и специальных идентификаторов PID, предоставляемых надстройкой Mazda Enhanced. Все эти данные передаются по Bluetooth на мой телефон и сохраняются в CSV-файле.


Я хочу устранить некоторые периодические проблемы с электричеством и (не зная, что ещё может быть затронуто) пытаюсь зарегистрировать как можно больше идентификаторов PID, которые мой автомобиль может безопасно поддерживать. Однако я пока не нашёл никаких рекомендаций по поводу того, сколько идентификаторов PID мне следует пытаться получить одновременно. Не перегрузит ли это CAN-шину или контроллер OBD2 моего автомобиля, если я попытаюсь получить слишком много идентификаторов PID или делать это слишком часто?


Будет ли иметь значение, если эти идентификаторы поступают из разных подсистем? («Модуль управления кузовом Mazda», «Модуль управления трансмиссией Mazda» и т. д.)


Вот скриншот со всеми доступными PID-кодами
введите описание изображения здесь


[обновление]
На случай, если кому-то интересно, вот проблема, которую я пытался решить, собирая эти PID:


Почти каждый раз после сильного дождя и ветра машина не заводилась или двигатель просто терял мощность или полностью останавливался во время движения. Через день или два машина «высыхала», и всё возвращалось в норму до следующего дождя.


Вот коды ошибок, полученные после последнего такого случая:


 IC (Instrument Cluster)        U0401:68-08     Invalid Data Received From ECM/PCMA

PCM (Powertrain Control Module) P0340:00-AC Camshaft Position Sensor A Circuit (Bank 1 Or Single Sensor)

PCM (Powertrain Control Module) P061D:00-AC Internal Control Module Engine Air Mass Performance

TCM (Transmission Control Module) U0401:00-2C Invalid Data Received From ECM/PCMA

ABS (Anti-Lock Brake System) U0401:00-68 Invalid Data Received From ECM/PCMA

EPS (Electronic Power Steering) U2023-FF Fault Received From External Node

Поскольку после дождя двигатель терял мощность или просто глох, я надеялся получить какие-то PID-коды, указывающие на то, что именно пошло не так перед тем, как двигатель заглох. (были несколько стоп-кадров, но я не увидел там ничего подозрительного, и мой механик тоже, поэтому я пытаюсь собрать больше данных для «обычной» езды и «проблемных» случаев.



Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/94575/what-is-the-maximum-number-of-obd2-pids-i-can-reasonably-retrieve-at-the-same-ti

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

  1. Я бы не стал беспокоиться. В большинстве случаев ваш адаптер обычно работает намного медленнее, чем
    CAN-соединение, поэтому, если ваш OBD2-адаптер не имеет собственной логики (что есть
    лишь у немногих), невозможно насытить CAN-шину
    последовательным адаптером на базе ELM327. Но давайте произведем некоторые вычисления.


    Начнём с шины — предположим, что её пропускная способность составляет 500 Кбит/с (протокол ELM327, версия 6), а при скорости 250 Кбит/с
    она увеличится вдвое.


    Один PID OBD2 в виде CAN-фрейма (с 8 байтами данных и стандартной адресацией) имеет размер до 125 бит.
    При скорости передачи данных 500 кбит/с на передачу одного бита уходит около 2 мкс, поэтому на передачу запроса по шине потребуется 250 мкс
    и ещё 250 мкс на получение ответа.


    Сейчас мы понятия не имеем, сколько времени требуется электронному блоку управления, чтобы ответить на запрос. Это не самые быстрые
    устройства. Для простоты вычислений предположим, что это очень быстрое
    устройство, которому требуется всего 500 мкс, чтобы выполнить этот запрос.


    Таким образом, на один запрос/ответ у нас уходит 1 мс, что на данный момент соответствует теоретическому
    максимуму в 1000 PIDs в секунду.


    Если предположить, что это адаптер Bluetooth 3.x (адаптеры Bluetooth 2.x обычно работают ещё медленнее из-за накладных расходов GATT),
    то скорость будет зависеть от протокола RFCOMM. Как правило, вы получите
    450–500 Кбит/с.
    К сожалению, скорость во многом зависит от внутренней скорости передачи данных UART
    в ELM327, которая часто составляет 115 200 бит/с.


    Поскольку ELM327 обменивается данными, отправляя символы ASCII, последовательность запросов/ответов
    для типичного ПИД-регулятора, такого как 010C (текущие обороты), выглядит следующим образом:


    010C1\r7E804410C5700\r\r>

    Это 22 символа, то есть 220 бит для UART. 220 бит на UART при скорости 115 200 бит/с
    занимают 1909 мкс, то есть почти 2 миллисекунды.
    (Да, существует специальный синтаксис ELM327 для объединения нескольких запросов PID, но давайте пока не будем об этом)


    При общей продолжительности взаимодействия между запросом и ответом в 3 миллисекунды теоретический максимум составит
    333 PID в секунду.


    Устройству, к которому подключен адаптер (компьютеру, смартфону, микроконтроллеру), также
    требуется некоторое время, чтобы считать следующий PID из своего списка. Мы не знаем, сколько времени это занимает, но
    скорее всего, это время можно не учитывать.


    Хотя 333 PID в секунду — это довольно хороший показатель, он также зависит от того, используете ли вы
    широковещательную адресацию. Если вы не знаете, сколько ECU ответят на ваш запрос,
    адаптеру ничего не остаётся, кроме как ждать. Это ожидание обычно добавляет 100–250 мс на
    запрос, поэтому мы быстро опускаемся до 5–10 PID в секунду.


    Тем не менее, реальные значения, которые я видел, варьируются от 50 до 100 PID в секунду, последнее
    только при использовании комбинаций хорошего программного обеспечения и высококачественных аппаратных адаптеров.


  1. @Pᴀᴜʟsᴛᴇʀ2 Я разработчик программного обеспечения, поэтому понимаю, что такое DDoS-атаки. Я просто хотел перестраховаться, так как не знаю, что произойдёт, если что-то пойдёт не так, пока я за рулём.
  1. Если ваш автомобиль не выдает коды ошибок, чтобы можно было понять, связаны ли проблемы с электрикой с кодами ошибок, то PIDs могут вам не помочь, если вы не разбираетесь в их интерпретации и не знаете, указывают ли они на проблемы с электрикой. Возможно, если вы опишете проблему здесь, вам ответят в соответствии с вашим описанием проблем с электрикой.
  1. Как и в случае с любым компьютером или компьютерной сетью, вы можете переусердствовать, это точно. Что-то вроде DDOS-атаки, хотя она и не «распределённая». Я предлагаю продолжать до тех пор, пока что-нибудь не выйдет из строя.
  1. Думаю, технически вы правы; в моём случае «одновременно» означало «объединить все запросы PID и продолжать запрашивать эти PID снова и снова»
  1. Поскольку попадание воды во время дождя приводит к временному короткому замыканию, из-за которого двигатель выходит из строя, поиск причины по кодам ошибок может заключаться в том, чтобы отделить ложные ошибки от одной или двух реальных ошибок, вызванных проблемами с сигналом или напряжением. Я вижу несколько возможных ложных ошибок, но не уверен насчёт одной или двух реальных ошибок. Визуально осмотрите основные силовые соединения, заземление, панели предохранителей и проводку в моторном отсеке — это может дать подсказку. Электрические/электронные неисправности бывает как легко, так и сложно диагностировать и устранять, и в таких случаях обычно полагаются на коды ошибок.
  1. @FDryer Появились некоторые коды неисправностей, я обновил текст вопроса. Поскольку двигатель терял мощность или просто глох после дождя, я надеялся получить какие-то коды ошибок, указывающие, что именно пошло не так перед тем, как двигатель заглох. (были несколько стоп-кадров, но я не увидел там ничего подозрительного, и мой механик тоже, поэтому я пытаюсь собрать больше данных для «обычной» езды и «проблемных» случаев.
  1. Я думаю, что ответ — «один». Почему? Потому что вы отправляете запрос и получаете ответ. Если вы складываете запросы в стопку, то ответ будет приходить только на один из них, независимо от того, сколько запросов вы сложили в стопку. Хотя я не эксперт.
Вы уже ответили на этот вопрос