16 578
правок
Vdromanov (обсуждение | вклад) |
м (Поправил текст и оформление) |
||
Строка 1: | Строка 1: | ||
Работа происходит через стандартную подсистему Linux — SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы <code>can0</code> или <code>can1</code>, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически. | |||
Работа происходит через стандартную подсистему Linux SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы can0 или can1, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически. | |||
== Настройка == | |||
<gallery widths=400px heights=400px mode="packed"> | <gallery widths=400px heights=400px mode="packed"> | ||
Image:Can iface.png|Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически | Image:Can iface.png|Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически | ||
Image:Can enable.png|Перевод порта RS485-2 в режим CAN и включение драйвера can в linux | Image:Can enable.png|Перевод порта RS485-2 в режим CAN и включение драйвера can в linux | ||
</gallery> | </gallery> | ||
==== Через | ==== Через веб-интерфейс ==== | ||
Для настройки через | Для настройки через веб-интерфейс нужно обновить пакет <code>wb-mqtt-confed</code> до версии 1.2.3+ | ||
Действия происходят в разделе Configs | Действия происходят в разделе '''Configs''' веб-интерфейса: | ||
# На вкладке Network Interfaces добавьте новый интерфейс can0 (см. скриншот). Нажмите кнопку Save. | # На вкладке '''Network Interfaces''' добавьте новый интерфейс <code>can0</code> (см. скриншот). Нажмите кнопку '''Save'''. | ||
# Переключите порт RS-485/CAN в режим CAN: | # Переключите порт <code>RS-485/CAN</code> в режим CAN: на вкладке '''Hardware Modules Configuration''' выберите настройки '''RS485-2/CAN interface config''', выберите в поле '''Module type''' «CAN interface» и нажмите кнопку '''Save'''. | ||
CAN-интерфейс будет подниматься сам при: | CAN-интерфейс будет подниматься сам при: | ||
* | * загрузке системы — за это отвечает сервис <code>wb-hwconf-manager</code>, | ||
* | * смене режима порта RS-485/2 в «CAN». | ||
Раздел Network Interfaces | ==== Стандартными средствами linux (автоматически) ==== | ||
# Добавить в /etc/network/interfaces запись вида:<syntaxhighlight lang="bash"> | Раздел '''Network Interfaces''' веб-интерфейса — это обёртка вокруг файла <code>/etc/network/interfaces</code>, поэтому настройку CAN можно произвести с помощью службы управления сетями ОС debian. Для этого нужно: | ||
# Добавить в <code>/etc/network/interfaces</code> запись вида: | |||
#:<syntaxhighlight lang="bash"> | |||
allow-hotplug can0 | allow-hotplug can0 | ||
iface can0 can static | iface can0 can static | ||
bitrate 125000 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
# Переключить порт RS-485-2 в режим CAN | # Переключить порт RS-485-2 в режим CAN | ||
Получим результат, аналогичный настройке через | Получим результат, аналогичный настройке через веб-интерфейс. | ||
==== Стандартными средствами linux (вручную) ==== | ==== Стандартными средствами linux (вручную) ==== | ||
После переключения порта в режим CAN, нужно выполнить: | После переключения порта в режим CAN, нужно выполнить: | ||
< | <syntaxhighlight lang="bash"> | ||
ip link set can0 up type can bitrate 125000 | ip link set can0 up type can bitrate 125000 | ||
</ | </syntaxhighlight> | ||
== Работа с CAN == | == Работа с CAN == | ||
< | Утилиты <code>cansend</code> и <code>candump</code> есть в стандартном наборе ПО контроллера. Если по каким-то причинам их нет, можно поставить пакет <code>can-utils</code>: | ||
<syntaxhighlight lang="bash"> | |||
< | apt update && apt install can-utils | ||
apt update | </syntaxhighlight> | ||
</ | |||
Примеры команд: | |||
* Отправка четырех байт c адресом 123: | |||
*:<syntaxhighlight lang="bash"> | |||
< | |||
cansend can0 123#DEADBEEF | cansend can0 123#DEADBEEF | ||
</ | </syntaxhighlight> | ||
* Показывать входящие пакеты: | |||
< | *:<syntaxhighlight lang="bash"> | ||
candump can0 | candump can0 | ||
</ | </syntaxhighlight> | ||
* Показать статистику: | |||
< | *:<syntaxhighlight lang="bash"> | ||
cat /proc/net/can/stats | cat /proc/net/can/stats | ||
</ | </syntaxhighlight> | ||
Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу. | Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу. | ||
Для того | Для того чтобы начать работу вновь, выполните: | ||
<syntaxhighlight lang="bash"> | |||
< | |||
ifconfig can0 down && ip link set can0 up type can bitrate 125000 | ifconfig can0 down && ip link set can0 up type can bitrate 125000 | ||
</ | </syntaxhighlight> | ||
Больше информации смотрите в вики проекта «AmadeuS», статья «[http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver CAN bus Linux driver]». | |||
Больше информации смотрите в [http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver | |||