Сообщение управления потоком при получении сообщения CAN с ELM327
Я пытаюсь создать программное обеспечение, которое работает под Windows и взаимодействует с устройством ELM327. Я создал первую версию и отправился в своем автомобиле SMART ForTwo (SMART 451), и мне удалось подключиться к комбинации приборов (CAN-идентификатор передачи - 782, CAN-идентификатор получения - 783). Однако у меня огромная проблема с управлением потоком. Вот журнал:
TX: ATI RX: ELM327 v1.5a
TX: ATE0 RX: ATE0 ОК
TX: ATSP6 RX: ОК
TX: ATH1 RX: ОК
TX: ATL1 RX: ОК
TX: ATCFC1 RX: ОК
TX: ATFCSM0 RX: ОК
TX: ATAL RX: ОК
TX: ATSH782 RX: ОК
TX: ATCRA783 RX:?
TX: ATST64 RX: ОК
TX: 1092 RX: 783 02 1A 87
TX: 1A87 RX: 783 10 16 5A 87 05 6E 00 08
Я использовал другой инструмент и увидел, что устройство ELM327 немедленно отправляет кадр управления потоком. Это так:
891,438 782 02 1A 87
891,444 783 10 16 5A 87 05 6E 00 08
891,444 782 30 00 00 00 00 00 00 00
Как видите, кадр управления потоком отправляется точно в то же время, что и первый кадр, который отправляется с другого устройства. Я уверен, что на другом устройстве возникла проблема с получением кадра "Flow Control". Я изучил документацию ELM327, но не нашел никакой информации о том, как задержать кадр управления потоком. Как правильно отправить запрос "1А 87" и получить ответ?
2 ответа
Это старый пост, но может помочь другим!
Это мой опыт работы с первым кадром (FF) и управлением потоком (FC) на MCP2515, подключенном к SPI.
Прежде всего, вы всегда должны отправлять сообщение FC после сообщения FF, а не одновременно.
Во-вторых, диагностический считыватель может использовать идентификатор в кадре ответа ECU для продолжения связи с конкретным ECU. В частности, многокадровая связь требует ответа на конкретный идентификатор ECU, а не на ID 7DF. Говоря простым языком, вы не должны отправлять свое сообщение FF с идентификатором 7DF, и вам следует указывать точный блок ECU, который вы хотите получать последовательные кадры. Например, запрос VIN автомобиля (на основе реальной информации от Golf VII):
7DF 02 09 00 00 00 00 00 00 // отправка запроса
7E8 10 14 49 02 01 57 56 57 // получение от главного ЭБУ
7E0 30 00 00 00 00 00 00 00 // адрес главного ЭБУ, а не 7DF больше!!
7E8 21 5A 5A 5A 41 55 5A 45 // последовательные сообщения отправляются 7E0!!
7E8 22 50 35 33 30 36 38 35
Надеюсь, это поможет!
Это очень легко, я думаю..
Используйте команду ATCFC0, и тогда вы сможете обработать все ответные кадры из блока управления, и вам нужно вручную отправить кадр управления потоком.