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