Я занимаюсь созданием специального модуля ввода-вывода Canbus на базе чипа Atmega2560. Модуль будет иметь 10 сильноточных выходов с ШИМ-управлением и обратной связью по току, 20 цифровых входов, 5 аналоговых входов и 4 аналоговых выхода 0-5 В. Я работал над выяснением структуры сообщений J1939, которую я буду использовать. Эти модули будут подчиненными устройствами, управляемыми главным ЭБУ. Поскольку в одной сети может находиться более одного из этих модулей, я добавил переключатель адреса CAN для каждого модуля, чтобы пользователь мог выбрать CAN ID 1-255 для каждого модуля. План состоял в том, чтобы каждый модуль транслировал состояние всех цифровых входов в одном сообщении CAN. Если я выберу 0xFF00 в качестве идентификатора PGN, а затем использую 8 байтов для представления состояния в битовой форме для статуса входа для этого конкретного модуля, тогда как мастер узнает, из какого модуля пришло сообщение? Адрес модуля указан в сообщении CANbus?
Я смотрел примеры CANBUS для arduino, и похоже, что вы можете фильтровать на основе PGN, но я не вижу ничего, что можно было бы фильтровать на основе адреса источника или адреса назначения.
Может кто-нибудь пояснить, как я могу это сделать?