CAN
Работа происходит через стандартную подсистему Linux SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы can0 или can1, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически.
Настройка
Через web-интерфейс
Действия происходят в разделе Configs web-интерфейса:
- На вкладке Network Interfaces добавьте новый интерфейс can0 (см. скриншот). Нажмите кнопку Save.
- Переключите порт RS-485/CAN в режим CAN: На вкладке Hardware Modules Configuration выберите настройки RS485-2/CAN interface config, выберите Module type CAN interface и нажмите кнопку Save.
CAN-интерфейс будет подниматься сам при:
- Загрузке системы (сервис wb-hwconf-manager).
- Выставлении порта RS-485/2 в режим CAN.
Стандартными средствами linux (автоматически)
Раздел Network Interfaces web-интерфейса - это обёртка вокруг файла /etc/network/interfaces => настройку CAN можно произвести с помощью службы управления сетями debian. Для этого нужно:
- Добавить в /etc/network/interfaces запись вида:
allow-hotplug can0 iface can0 can static bitrate 125000
- Переключить порт RS-485-2 в режим CAN
Получим результат, аналогичный настройке через web-интерфейс.
Стандартными средствами linux (вручную)
После переключения порта в режим CAN, нужно выполнить:
ip link set can0 up type can bitrate 125000
Работа с CAN
Утилиты cansend и candump присутствуют в стандартном наборе ПО контроллера. Если по каким-то причинам их нет, можно поставить пакет can-utils:
apt update; apt install can-utils
отправка 4 байтов c адресом 123:
cansend can0 123#DEADBEEF
показывать входящие пакеты:
candump can0
показать статистику:
cat /proc/net/can/stats
Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу.
Для того, чтобы начать работу вновь, выполните
ifconfig can0 down && ip link set can0 up type can bitrate 125000
Больше информации смотрите в статье.