Как смоделировать сеть CAN-шины транспортного средства?
Я хочу сделать проект по тестированию сообщений по шине CAN, но без использования реального транспортного средства. Есть ли способ смоделировать виртуальную сеть по шине CAN?
Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/47921/how-to-simulate-a-vehicle-can-bus-network
Я рекомендую имитировать устройства с помощью Linux socketcan, виртуальных интерфейсов и подключения к физическому оборудованию.
Пожалуйста, ознакомьтесь с https://github.com/cantools/cantools/discussions/669 информацией о работе, которую я веду по автоматическому созданию заглушек и анализу файлов DBC с помощью Wireshark, а также о методах имитации Python, которые позволяют работать с данными, понятными человеку, а не с необработанными данными. Это действительно работает!
Вот черновой вариант кода, который ещё не доведён до рабочего состояния. Я пытаюсь сдвинуть дело с мёртвой точки. Все комментарии и предложения приветствуются.
https://gist.github.com/mdear/fe9f411a9376cb6ebb14ab7f630774ca
И... хотя это немного выходит за рамки данного вопроса, я также создал простой скрипт, который позволил мне объединить два сегмента CAN-шины (can0 и vcan0), чтобы обеспечить взаимодействие между имитацией устройств и физическими устройствами: https://gist.github.com/mdear/02973a689c122bfd21143d8a6095d132