CAN интерфейс

Здравствуйте!
Помогите, пожалуйста, разобраться с работой Wirenboard по интерфейсу CAN.
Wirenboard 6, HW 6.5. Нужно подключить устройство по CAN интерфейсу. Пока почитал только как настроить CAN на контроллере CAN — Wiren Board.
В разделе Работа с CAN приведён пример отправки сообщения:
cansend can0 123#DEADBEEF
Вопрос: откуда берётся адрес (123)?
У CAN устройства есть два ID: ID Control сообщений, которые передаются на устройство (управление). И ID Status сообщений, которые читаем из устройства.
Есть ли пример работы с CAN устройством?
По какому протоколу работает CAN интерфейс на контроллере?

Добрый день.
Параметры cansend хорошо описаны в его документации: cansend(1) — can-utils — Debian testing — Debian Manpages
Работа с can ничем не отличается от стандартной на компьютере, например.

Вот этот вопрос непонятен. CAN - транспортный уровень… Что в него отправляется - то и передается.

Добрый день!
Спасибо за предоставленную информацию. Очень полезная. Разобрался с адресом. Устройство подключать ещё не пробовал. Проверю, напишу о результатах.
Вопрос другой, у CAN-устройства есть ID. Его указываем в команде cansend в качестве адреса. Всё понятно. Как быть когда сам контроллер WirenBoard выступает в качестве устройства? Т.е. нужно соединить по CAN-интерфейсу два контроллера. Где брать адрес (или ID)?

Как писал - CAN это транспорт. То есть порт получает все сообщения из шины, их обработкой занимается уже ПО которое работает с интерфейсом.
То есть ПО может работать и не только с одним ID.

1 Like

Добрый день!
Настроил CAN порт через Web интерфейс как описано в документации.
В консоли ввожу команду: cansend can0 0CFF42FA#1.5
Выходит сообщение об ошибке.

Можете объяснить, что не верно в команде? Почему формат не верный?

Сейчас ещё одну проблему увидел. В разделе
Настройки/Конфигурационные файлы/Сетевые соединения
создаю новое соединение CAN bus. Даю ему имя wb-can0. Сохраняю.
Когда в следующий раз захожу в этот раздел - нет добавленного соединения.
Почему оно пропадает?
Но, однако, команда nmcli device status - показывает, что устройство can0 есть:

А команда nmcli device show can0 - пишет, что ничего в устройстве неизвестно:

Что такое “0CFF42FA” и как это интерпретируется?

Устройство wb-can0 отсутствует физически.

0CFF42FA - это ID CAN сообщения, которое нужно передать в устройство. Об этом написано здесь: cansend(1) — can-utils — Debian testing — Debian Manpages
ID может состоять из трёх байт, может быть из 8 байт.

Далее байты сообщения: 1 - byte 0; 5 - byte 1.

Что надо сделать,что бы устройство wb-can0 присутствовало?
Написано же, что порт 2 RS485 переключается в CAN. Я так и сделал. Но почему он пропадает из списка?

И в файле /etc/network/interfaces
запись о добавленном порте существует.
Т.е., всё записалось, всё отработало правильно, но в списке устройств wb-can0 нет. Как такое возможно?

Проверяю:

Также:
Screenshot_20250507_170324

Описать его предварительно в FDT контроллера, в wb-hwconf файлах. А зачем, для чего менять имя устройства?

Из какого списка?
Я, скорее всего не совсекм понимаю что делаете и чем результат отличается от ожидаемого. Пожалуйста - опишите подробней.

Чуть выше - я видел ваши скриншоты выполняемых команд nmcli. Что ожидаете увидеть в interfaces?