CAN: различия между версиями
Matveevrj (обсуждение | вклад) |
Matveevrj (обсуждение | вклад) (Отметить эту версию для перевода) |
||
Строка 1: | Строка 1: | ||
<languages/><translate> | <languages/><translate> | ||
<!--T:16--> | |||
Работа происходит через стандартную подсистему Linux — SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы <code>can0</code> или <code>can1</code>, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически. | Работа происходит через стандартную подсистему Linux — SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы <code>can0</code> или <code>can1</code>, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически. | ||
== Настройка == | == Настройка == <!--T:17--> | ||
[[Image:Can iface.png|300px|thumb|right|Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически]] | [[Image:Can iface.png|300px|thumb|right|Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически]] | ||
[[Image:Can enable.png|300px|thumb|right|Перевод порта RS485-2 в режим CAN и включение драйвера can в linux]] | [[Image:Can enable.png|300px|thumb|right|Перевод порта RS485-2 в режим CAN и включение драйвера can в linux]] | ||
==== Через веб-интерфейс ==== | ==== Через веб-интерфейс ==== <!--T:18--> | ||
Для настройки через веб-интерфейс нужно обновить пакет <code>wb-mqtt-confed</code> до версии 1.2.3+ | Для настройки через веб-интерфейс нужно обновить пакет <code>wb-mqtt-confed</code> до версии 1.2.3+ | ||
<!--T:19--> | |||
Действия происходят в разделе '''Configs''' веб-интерфейса: | Действия происходят в разделе '''Configs''' веб-интерфейса: | ||
# На вкладке '''Network Interfaces''' добавьте новый интерфейс <code>can0</code> (см. скриншот). Нажмите кнопку '''Save'''. | # На вкладке '''Network Interfaces''' добавьте новый интерфейс <code>can0</code> (см. скриншот). Нажмите кнопку '''Save'''. | ||
# Переключите порт <code>RS-485/CAN</code> в режим CAN: на вкладке '''Hardware Modules Configuration''' выберите настройки '''RS485-2/CAN interface config''', выберите в поле '''Module type''' «CAN interface» и нажмите кнопку '''Save'''. | # Переключите порт <code>RS-485/CAN</code> в режим CAN: на вкладке '''Hardware Modules Configuration''' выберите настройки '''RS485-2/CAN interface config''', выберите в поле '''Module type''' «CAN interface» и нажмите кнопку '''Save'''. | ||
<!--T:20--> | |||
CAN-интерфейс будет подниматься сам при: | CAN-интерфейс будет подниматься сам при: | ||
* загрузке системы — за это отвечает сервис <code>wb-hwconf-manager</code>, | * загрузке системы — за это отвечает сервис <code>wb-hwconf-manager</code>, | ||
* смене режима порта RS-485/2 в «CAN». | * смене режима порта RS-485/2 в «CAN». | ||
==== Стандартными средствами linux (автоматически) ==== | ==== Стандартными средствами linux (автоматически) ==== <!--T:21--> | ||
Раздел '''Network Interfaces''' веб-интерфейса — это обёртка вокруг файла <code>/etc/network/interfaces</code>, поэтому настройку CAN можно произвести с помощью службы управления сетями ОС debian. Для этого нужно: | Раздел '''Network Interfaces''' веб-интерфейса — это обёртка вокруг файла <code>/etc/network/interfaces</code>, поэтому настройку CAN можно произвести с помощью службы управления сетями ОС debian. Для этого нужно: | ||
# Добавить в <code>/etc/network/interfaces</code> запись вида: | # Добавить в <code>/etc/network/interfaces</code> запись вида: | ||
Строка 28: | Строка 31: | ||
Получим результат, аналогичный настройке через веб-интерфейс. | Получим результат, аналогичный настройке через веб-интерфейс. | ||
==== Стандартными средствами linux (вручную) ==== | ==== Стандартными средствами linux (вручную) ==== <!--T:22--> | ||
<!--T:23--> | |||
После переключения порта в режим CAN, нужно выполнить: | После переключения порта в режим CAN, нужно выполнить: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 35: | Строка 39: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Работа с CAN == | == Работа с CAN == <!--T:24--> | ||
<!--T:25--> | |||
Утилиты <code>cansend</code> и <code>candump</code> есть в стандартном наборе ПО контроллера. Если по каким-то причинам их нет, можно поставить пакет <code>can-utils</code>: | Утилиты <code>cansend</code> и <code>candump</code> есть в стандартном наборе ПО контроллера. Если по каким-то причинам их нет, можно поставить пакет <code>can-utils</code>: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 42: | Строка 47: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:26--> | |||
Примеры команд: | Примеры команд: | ||
* Отправка четырех байт c адресом 123: | * Отправка четырех байт c адресом 123: | ||
Строка 48: | Строка 54: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:27--> | |||
* Показывать входящие пакеты: | * Показывать входящие пакеты: | ||
*:<syntaxhighlight lang="bash"> | *:<syntaxhighlight lang="bash"> | ||
Строка 53: | Строка 60: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:28--> | |||
* Показать статистику: | * Показать статистику: | ||
*:<syntaxhighlight lang="bash"> | *:<syntaxhighlight lang="bash"> | ||
Строка 59: | Строка 67: | ||
<!--T:29--> | |||
Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу. | Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу. | ||
Для того чтобы начать работу вновь, выполните: | Для того чтобы начать работу вновь, выполните: | ||
Строка 65: | Строка 74: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!--T:30--> | |||
Больше информации смотрите в вики проекта «AmadeuS», статья «[http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver CAN bus Linux driver]». | Больше информации смотрите в вики проекта «AmadeuS», статья «[http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver CAN bus Linux driver]». | ||
</translate> | </translate> |
Версия 22:51, 3 октября 2022
Работа происходит через стандартную подсистему Linux — SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы can0
или can1
, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически.
Настройка
Через веб-интерфейс
Для настройки через веб-интерфейс нужно обновить пакет wb-mqtt-confed
до версии 1.2.3+
Действия происходят в разделе Configs веб-интерфейса:
- На вкладке 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 веб-интерфейса — это обёртка вокруг файла /etc/network/interfaces
, поэтому настройку CAN можно произвести с помощью службы управления сетями ОС debian. Для этого нужно:
- Добавить в
/etc/network/interfaces
запись вида:allow-hotplug can0 iface can0 can static bitrate 125000
- Переключить порт RS-485-2 в режим CAN
Получим результат, аналогичный настройке через веб-интерфейс.
Стандартными средствами linux (вручную)
После переключения порта в режим CAN, нужно выполнить:
ip link set can0 up type can bitrate 125000
Работа с CAN
Утилиты cansend
и candump
есть в стандартном наборе ПО контроллера. Если по каким-то причинам их нет, можно поставить пакет can-utils
:
apt update && apt install can-utils
Примеры команд:
- Отправка четырех байт 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
Больше информации смотрите в вики проекта «AmadeuS», статья «CAN bus Linux driver».