CAN: различия между версиями

Материал из Wiren Board
Строка 1: Строка 1:
<languages/>
<languages/>
<translate>
<translate>
<!--T:1-->
<!--T:1-->
Порты CAN доступны в системе как сетевые интерфейсы can0 или can1, в зависимости от модели контроллера. Установите джампер терминатора соответствущего порта.
Работа происходит через стандартную подсистему Linux SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы can0 или can1, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически.  


<!--T:2-->
== Настройка ==<!--T:3-->
Работа происходит через стандартную подсистему Linux SocketCAN.
 
<gallery widths=400px heights=400px mode="packed">
Image:Can iface.png|Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически.
Image:Can enable.png|Перевод порта RS485-2 в режим CAN и включение драйвера can в linux.
</gallery>


<!--T:3-->
==== Через web-интерфейс ====<!--T:4-->
Для удобной работы с CAN, нужно поставить пакет apt-get install can-utils


<!--T:4-->
Действия происходят в разделе Configs web-интерфейса:
Переключите порт RS-485/CAN в режим CAN: На вкладке Hardware Modules Configuration выберите настройки RS485-2/CAN interface config, выберите Module type '''CAN interface''' и нажмите кнопку Save.
# На вкладке Network Interfaces добавьте новый интерфейс can0 (см. скриншот). Нажмите кнопку Save.
[[File:Can_enable.png|400px|right||Module type '''CAN interface''']]
# Переключите порт RS-485/CAN в режим CAN: На вкладке Hardware Modules Configuration выберите настройки RS485-2/CAN interface config, выберите Module type '''CAN interface''' и нажмите кнопку Save.


<!--T:5-->
<!--T:5-->
Конфигурирование интерфейса
CAN-интерфейс будет подниматься сам при:
* Загрузке системы (сервис wb-hwconf-manager).
* Выставлении порта RS-485/2 в режим CAN.
 
==== Стандартными средствами linux (автоматически) ====<!--T:6-->
 
Раздел Network Interfaces web-интерфейса - это обёртка вокруг файла /etc/network/interfaces => настройку CAN можно произвести с помощью службы управления сетями debian. Для этого нужно:
# Добавить в /etc/network/interfaces запись вида:<syntaxhighlight lang="bash">
allow-hotplug can0
iface can0 can static
  bitrate 125000
</syntaxhighlight>
# Переключить порт RS-485-2 в режим CAN
Получим результат, аналогичный настройке через web-интерфейс.
 
==== Стандартными средствами linux (вручную) ====<!--T:7-->


<!--T:6-->
После переключения порта в режим CAN, нужно выполнить:
<pre>
<pre>
ip link set can0 up type can bitrate 125000
ip link set can0 up type can bitrate 125000
</pre>
</pre>


== Работа с CAN ==<!--T:8-->
<!--T:2-->
Утилиты cansend и candump присутствуют в стандартном наборе ПО контроллера. Если по каким-то причинам их нет, можно поставить пакет can-utils:
<pre>
apt update; apt install can-utils
</pre>


<!--T:7-->
<!--T:9-->
отправка 4 байтов c адресом 123:
отправка 4 байтов c адресом 123:


<!--T:8-->
<!--T:10-->
<pre>
<pre>
cansend can0 123#DEADBEEF
cansend can0 123#DEADBEEF
</pre>
</pre>


<!--T:9-->
<!--T:11-->
показывать входящие пакеты:
показывать входящие пакеты:


<!--T:10-->
<!--T:12-->
<pre>
<pre>
candump can0
candump can0
</pre>
</pre>


<!--T:11-->
<!--T:13-->
показать статистику:
показать статистику:


<!--T:12-->
<!--T:14-->
<pre>
<pre>
cat /proc/net/can/stats
cat /proc/net/can/stats
Строка 48: Строка 74:




<!--T:13-->
<!--T:15-->
Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу.
Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу.
Для того, чтобы начать работу вновь, выполните  
Для того, чтобы начать работу вновь, выполните  


<!--T:14-->
<!--T:16-->
<pre>
<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
Строка 58: Строка 84:




<!--T:15-->
<!--T:17-->
Больше информации смотрите в [http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver статье].
Больше информации смотрите в [http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver статье].
</translate>
</translate>

Версия 13:27, 11 декабря 2020

Другие языки:

Работа происходит через стандартную подсистему Linux SocketCAN. Порты CAN доступны в системе как сетевые интерфейсы can0 или can1, в зависимости от модели контроллера. Для работы CAN на контроллерах до версии 6.7.x нужен джампер терминатора на порту. Начиная с версий 6.7.x, терминатор управляется программно и включается автоматически.

Настройка

Через web-интерфейс

Действия происходят в разделе Configs web-интерфейса:

  1. На вкладке Network Interfaces добавьте новый интерфейс can0 (см. скриншот). Нажмите кнопку Save.
  2. Переключите порт 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. Для этого нужно:

  1. Добавить в /etc/network/interfaces запись вида:
    allow-hotplug can0
    iface can0 can static
      bitrate 125000
    
  2. Переключить порт 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


Больше информации смотрите в статье.