J1939 RTR Issue
У меня есть и проблема с RTR кадров, используя Candump и Cansend.
Сброс передаваемых данных не проблема.
Архитектура - Raspberry pi со щитом Pican для чтения данных с симулятора J1939.
Я запускаю Candump, чтобы получать все сообщения в автобусе. Затем я получаю ответный кадр от симулятора, когда я выполняю команду cansend для pgn feec. Я запрашиваю предварительно запрограммированный VIN, но ничего не получаю. Вот что я вижу из Candump:
can0 18FEF500 [8] 7D FF FF 40 25 4B FF FF '}..@%K..'
can0 18FEE900 [8] D1 4B 03 00 D1 4B 03 00 '.K...K..'
can0 18FEF700 [8] FF FF FF FF E0 01 FF FF '........'
can0 18FECA00 [8] 03 FF 00 00 00 00 00 00 '........'
can0 00FEEC00 [0] remote request
can0 18E80000 [8] 01 FF FF FF FF EC FE 00 '........'
can0 0CF00300 [8] FF 7D 7D FF FF FF FF FF '.}}.....'
can0 18FE6C00 [8] FF FF FF FF FF FF 80 7D '.......}'
can0 0CF00400 [8] FF FF 7D 80 7D FF FF FF '..}.}...''
E800 PGN - это стандартное подтверждающее сообщение.
И сообщение, которое я посылаю, пока работает Candump:
cansend can0 00feec00#r
По сути, я не получаю PGN для VIN. Есть идеи?
1 ответ
Оказывается, здесь есть пара вопросов.
1- #r не поддерживается с J1939
2 - вы не запрашиваете pgns, запрашивая этот pgn напрямую. метод заключается в отправке данных в определенный pgn, который обрабатывает запросы. пример ниже:
EA 00 - это PGN для отправки данных. Внутри сообщения данных находится pgn, который мы хотим запросить (LSB), поэтому PGN FEE5 теперь E5FE. Требуется три байта, поэтому 00 в сообщении ниже.
Вот рабочий запрос на часы работы двигателя:
cansend 18EA00FF#E5FE00
и ответ:
21 00 00 00 8F 01 00 00