Вопрос

Настройка интервала опроса на адаптере Elm327

Есть ли какая-нибудь команда для терминала, с помощью которой можно установить интервал опроса на устройстве elm327? Я знаю, что, например, obdwiz позволяет устанавливать интервал опроса через графический интерфейс, но я хочу сделать это вручную с помощью командной строки.



Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/22403/setting-polling-interval-on-a-elm327-adaptor

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

  1. Таким образом, похоже, что проблемы с задержкой возникают только у адаптеров Elm327, в которых используется чип-адаптер FTDI для последовательного подключения к USB:



    FTDI не может отправлять на компьютер USB-пакет для каждого байта, поступающего от микроконтроллера Arduino. Вместо этого он сохраняет последовательные данные во внутреннем буфере и отправляет USB-пакет только тогда, когда буфер заполняется или по истечении определённого времени. Этот период времени определяется таймером задержки FTDI, из-за чего чипы FTDI могут иметь плохие характеристики задержки.


    В Linux и Windows значение таймера задержки по умолчанию составляет 16 мс.



    Таким образом, с учётом как запроса данных, так и ответа, вы автоматически тратите 32 мс на обмен данными.


    К счастью, задержку можно сократить до 1 мс. По ссылке выше объясняется, как это сделать в различных операционных системах.


    В программе ForScan есть наглядное руководство о том, как это сделать в Windows.


  1. Интервал опроса — это просто частота, с которой вы запрашиваете данные с порта. Существует аппаратная скорость передачи данных, которую вы должны соблюдать (вероятно, 38 400 бит/с для ELM327), и обычно вы не можете её изменить, так как она определяется протоколом.



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



    РЕДАКТИРОВАТЬ: если вы действительно можете установить интервал опроса, то он просто меняет частоту запросов к порту. Это полностью зависит от программного обеспечения.


  1. Как это связано с тем, что нужно сократить время фактического цикла запроса-ответа, а не увеличить частоту опроса?
  1. Итак, я выяснил, что это параметр, который можно задать, хотя я до сих пор не уверен, задаётся ли он в самом адаптере или в драйвере операционной системы. Похоже, проблема связана как с адаптером, так и с программным обеспечением. Однако я выяснил, как его задать. Смотрите мой ответ.
  1. По сути, интервал опроса — это программный параметр, который задаётся с помощью таймеров. Если вы хотите проводить опрос с определённой периодичностью, вам придётся написать базовую программу.
  1. Это здорово, я бы тоже попробовал, потому что программа, которой я пользуюсь, слишком медленная. По сути, когда вы устанавливаете более высокий интервал опроса, она отправляет команды чаще, но не с более высокой скоростью передачи данных. Скорость передачи данных должна быть одинаковой как на стороне отправки, так и на стороне получения.
  1. Программа scantool.net OBDWiz позволяет настроить интервал опроса данных.
  1. Разве это не будет зависеть от программного обеспечения?
  1. Фактическая частота дискретизации данных не зависит от скорости передачи данных, но, очевидно, должна быть ниже. Скорость передачи данных — это, по сути, скорость отправки битов данных, но данные pid состоят из нескольких битов и являются лишь частью протокола. Вы можете дискретизировать данные с любой скоростью, если она не приближается к скорости передачи данных, что должно быть затруднительно при скорости 41,6 Кбит/с. Ни одно коммерческое программное обеспечение, которым я пользовался, не позволяет пользователю выбирать частоту дискретизации, она просто устанавливается на несколько раз в секунду по умолчанию.
  1. Итак, если мой автомобиль использует J1850 PWM со скоростью 41,6 Кбит/с. Если вы отслеживаете один PID с помощью этого протокола, то как часто по проводу передаются данные? Кажется, что по проводу каждые миллисекунду передаются примерно 2 байта. Таким образом, по проводу будет передаваться новый образец данных по крайней мере каждые несколько миллисекунд с учётом накладных расходов на пакет. Таким образом, для полноценного использования шины адаптер должен иметь возможность делать выборки примерно каждые 5 мс. И, полагаю, программное обеспечение контролирует, как часто адаптер делает выборки?
Вы уже ответили на этот вопрос