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

Материал из Wiren Board
м (Исправлена ссылка в конце статьи)
 
(не показано 9 промежуточных версий 5 участников)
Строка 1: Строка 1:
<languages/>
<languages/><translate>
<translate>


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


== Настройка ==<!--T:3-->
== Настройка == <!--T:17-->
[[Image:Can iface.png|300px|thumb|right|Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически]]
[[Image:Can enable.png|300px|thumb|right|Перевод порта RS485-2 в режим CAN и включение драйвера can в linux]]


<gallery widths=400px heights=400px mode="packed">
=== Через веб-интерфейс === <!--T:18-->
Image:Can iface.png|Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически.
Действия происходят в разделе '''Configs''' веб-интерфейса:
Image:Can enable.png|Перевод порта RS485-2 в режим CAN и включение драйвера can в linux.
# На вкладке '''Network Interfaces''' добавьте новое соединение <code>CAN bus</code>. Нажмите кнопку '''Save'''.
</gallery>
# Переключите порт <code>RS-485/CAN</code> в режим CAN: на вкладке '''Hardware Modules Configuration''' выберите настройки '''RS485-2/CAN interface config''', выберите в поле '''Module type''' «CAN interface» и нажмите кнопку '''Save'''.


==== Через web-интерфейс ====<!--T:4-->
<!--T:20-->
Для настройки через web-интерфейс нужно обновить пакет wb-mqtt-confed до версии 1.2.3+
Действия происходят в разделе Configs web-интерфейса:
# На вкладке Network Interfaces добавьте новый интерфейс can0 (см. скриншот). Нажмите кнопку Save.
# Переключите порт RS-485/CAN в режим CAN: На вкладке Hardware Modules Configuration выберите настройки RS485-2/CAN interface config, выберите Module type '''CAN interface''' и нажмите кнопку Save.
 
<!--T:5-->
CAN-интерфейс будет подниматься сам при:
CAN-интерфейс будет подниматься сам при:
* Загрузке системы (сервис wb-hwconf-manager).
* загрузке системы — за это отвечает сервис <code>wb-hwconf-manager</code>,
* Выставлении порта RS-485/2 в режим CAN.
* смене режима порта RS-485/2 в «CAN».
 
==== Стандартными средствами linux (автоматически) ====<!--T:6-->


Раздел Network Interfaces web-интерфейса - это обёртка вокруг файла /etc/network/interfaces => настройку CAN можно произвести с помощью службы управления сетями debian. Для этого нужно:
=== Стандартными средствами linux (автоматически) === <!--T:21-->
# Добавить в /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
bitrate 125000
</syntaxhighlight>
</syntaxhighlight>
# Переключить порт RS-485-2 в режим CAN
# Переключить порт RS-485-2 в режим CAN
Получим результат, аналогичный настройке через web-интерфейс.
Получим результат, аналогичный настройке через веб-интерфейс.


==== Стандартными средствами linux (вручную) ====<!--T:7-->
=== Стандартными средствами linux (вручную) === <!--T:22-->


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


== Работа с CAN ==<!--T:8-->
== Работа с CAN == <!--T:24-->


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


<!--T:9-->
<!--T:26-->
отправка 4 байтов c адресом 123:
Примеры команд:
 
* Отправка четырех байт c адресом 123:
<!--T:10-->
*:<syntaxhighlight lang="bash">
<pre>
cansend can0 123#DEADBEEF
cansend can0 123#DEADBEEF
</pre>
</syntaxhighlight>


<!--T:11-->
<!--T:27-->
показывать входящие пакеты:
* Показывать входящие пакеты:
 
*:<syntaxhighlight lang="bash">
<!--T:12-->
<pre>
candump can0
candump can0
</pre>
</syntaxhighlight>


<!--T:13-->
<!--T:28-->
показать статистику:
* Показать статистику:
 
*:<syntaxhighlight lang="bash">
<!--T:14-->
<pre>
cat /proc/net/can/stats
cat /proc/net/can/stats
</pre>
</syntaxhighlight>




<!--T:15-->
<!--T:29-->
Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу.
Обратите внимание, что в случае проблем на шине (нет терминатора, нет принимающего устройства, короткое замыкание), контроллер может прекратить работу.
Для того, чтобы начать работу вновь, выполните  
Для того чтобы начать работу вновь, выполните:  
 
<syntaxhighlight lang="bash">
<!--T:16-->
<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
</pre>
</syntaxhighlight>
 


<!--T:17-->
<!--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>
</translate>

Текущая версия на 08:52, 4 марта 2024

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

Описание

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

Настройка

Настройка can-интерфейса. Allow-hotplug позволяет интерфейсу подниматься автоматически
Перевод порта RS485-2 в режим CAN и включение драйвера can в linux

Через веб-интерфейс

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

  1. На вкладке Network Interfaces добавьте новое соединение CAN bus. Нажмите кнопку 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 веб-интерфейса — это обёртка вокруг файла /etc/network/interfaces, поэтому настройку CAN можно произвести с помощью службы управления сетями ОС debian. Для этого нужно:

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