Отправка длинных сообщений на CAN FD с использованием библиотеки python-can на векторном оборудовании - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь отправить сообщение на CAN FD, которое очень длинное (DLC = 70), но безуспешно. Я успешно отправляю короткие сообщения (DLC = 8)

Я настроил шину следующим образом, используя пакет python-can:

can.interface.Bus(bustype='vector', app_name='CANoe', channel=[0], bitrate=500000, data_bitrate=2000000, fd=True)

Все работает, пока сообщения короткие.

Файлы журнала от CANoe показывают, что ничего не пишется за пределами первых 8 бит. Я был бы очень признателен за любую помощь в этом вопросе. Дайте мне знать, если вопрос яснее с более подробной информацией

Это сообщения, которые я пытаюсь отправить


    msg6 = can.Message(arbitration_id=0x74A, dlc=64,   data=messagedata1,  
    extended_id=False)
    task6 = bus.send(msg6)
    time.sleep(5)
    msg7 = can.Message(arbitration_id=0x74A, dlc=9,  data=trailingbits,  
    extended_id=False)
    task7 = bus.send(msg7)
    time.sleep(5)

1 Ответ

0 голосов
/ 24 мая 2019

Вы указали в настройке can-шины, что это CAN-FD, но вам также необходимо включить ее в создаваемые сообщения, установив is_fd=True.

Таким образом, вместо

msg6 = can.Message(arbitration_id=0x74A, dlc=15, data=messagedata1, extended_id=False)
task6 = bus.send(msg6)

time.sleep(5)

msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits, extended_id=False)
task7 = bus.send(msg7)

time.sleep(5)

Не могли бы вы попробовать

msg6 = can.Message(arbitration_id=0x74A, dlc=15, data=messagedata1, is_fd=True, extended_id=False)
task6 = bus.send(msg6)

time.sleep(5)

msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits, is_fd=True, extended_id=False)
task7 = bus.send(msg7)

time.sleep(5)

Для справки, пожалуйста, ознакомьтесь с разделом 3.3. документации по питон-банку .

...