Перейти к основному содержанию

Конфигурация CAN-сети и поиск ID

Эта статья предназначена для настройки CAN-сети, проверки состояния CAN0, поиска CAN UUID и устранения распространенных ошибок CAN.

Сценарии использования:

  • Подключение CAN-инструментальной платы через USB-CAN-модуль, такой как UTOC.
  • Подключение CAN-инструментальной платы через плату с прошивкой USB-CAN-моста.
  • Поиск CAN UUID на плате или инструментальной плате с прошивкой CAN.
  • Ошибки Klipper, связанные с CAN0, CAN UUID или CAN-сетью.

Перед использованием

  1. Подключите UTOC или плату с прошивкой CAN-моста к хосту через USB.
  2. Войдите в систему хоста через сеть, а не через последовательный порт.
  3. В системе FlyOS-FAST CAN0 предварительно настроен на скорость 1M и буфер 1024, обычно ручная настройка CAN0 не требуется.
  4. Скорость CAN в прошивке инструментальной платы и основной платы должна соответствовать скорости CAN0 хоста.
  5. На обоих концах шины CAN требуются оконечные резисторы. Распиновка, сопротивление и проблемы с питанием могут привести к тому, что ID не будут найдены.

Подключение CAN и оконечные резисторы

Подключение и оконечные резисторы являются наиболее распространенными источниками проблем в CAN-сети.

Отключение питания

Перед проверкой распиновки CAN-H/CAN-L, разъемов, обжима, перемычек или DIP-переключателей оконечных резисторов полностью выключите принтер и отключите его от источника питания. Не подключайте и не отключайте CAN-кабели, не регулируйте перемычки и не измеряйте сопротивление при включенном питании.

Проверка подключения

  1. После отключения питания убедитесь, что CAN-H подключен к CAN-H, а CAN-L — к CAN-L.
  2. После отключения питания проверьте CAN-кабели, разъемы и места обжима на наличие обрывов, ослабления или плохого контакта.
  3. При использовании UTOC используйте исправный USB-кабель для подключения к хосту.
  4. При использовании платы с USB-CAN-мостом убедитесь, что на нее прошита соответствующая прошивка.
  5. Соберите жгут проводов и корпус обратно, затем подайте питание и проверьте, распознает ли система CAN-устройство.

Проверка оконечных резисторов

На обоих концах шины CAN требуется оконечный резистор 120 Ом. После полного отключения питания мультиметром измерьте сопротивление между CAN-H и CAN-L.

Измеренное значениеЗаключение
Около 60 ОмНормально, оконечные резисторы на обоих концах правильно подключены
Около 120 ОмОбычно оконечный резистор только на одном конце или обрыв линии
Около 40 ОмВозможно наличие лишнего оконечного резистора, проверьте промежуточные узлы
Около 140 ОмВозможна перепутанная распиновка CAN-H/CAN-L или неисправность линии
Внимание

Измерение оконечных резисторов должно производиться только при полном отключении питания. Выполнение этой операции при неполном отключении питания может привести к неточным показаниям и повреждению оборудования.

Проверка поддержки CAN хостом

Для хостов FLY этот шаг можно пропустить.

Выполните следующую команду для проверки поддержки CAN в ядре:

sudo modprobe can && echo "Ядро поддерживает CAN" || echo "Ядро не поддерживает CAN"

Если отображается Ядро поддерживает CAN, можно продолжать настройку. Если нет, рекомендуется заменить образ системы на поддерживающий SocketCAN.

Проверка распознавания CAN-устройства

Перед настройкой или поиском CAN ID рекомендуется убедиться, что хост распознал UTOC или устройство USB-CAN-моста.

Выполните:

lsusb

Интерпретация результатов:

  • 1d50:606f присутствует: устройство распознано системой, можно продолжать настройку или поиск CAN ID.
  • Сообщение lsusb не найдена: установите usbutils.
  • 1d50:606f отсутствует: проверьте USB-кабель, UTOC, прошивку USB-CAN-моста и питание.
  • Обнаружено несколько 1d50:606f: рекомендуется оставить только одно CAN-мостовое устройство, чтобы избежать одновременного подключения нескольких источников CAN0.

Установка usbutils:

sudo apt-get update
sudo apt-get install usbutils
Внимание

Дальнейшая настройка CAN0 и поиск CAN ID имеют смысл только после того, как система распознает CAN-мостовое устройство.

Настройка CAN0

Внимание

Эта операция перезапишет существующую конфигурацию CAN0, после завершения потребуется перезагрузка системы. Для системы FlyOS-FAST выполнять этот шаг не нужно.

Определение менеджера сети

В разных системах используются разные менеджеры сети. Перед настройкой CAN0 следует определить, какая служба управляет сетью в текущей системе. Не используйте несколько способов для настройки одного can0 одновременно, иначе конфигурация может не применяться, теряться после перезагрузки или CAN0 будет работать некорректно.

Выполните следующие команды для проверки состояния распространенных сетевых служб:

systemctl is-active NetworkManager
systemctl is-active systemd-networkd
systemctl is-active networking

Также можно просмотреть конфигурационные файлы и состояние устройств:

ls /etc/network/interfaces /etc/network/interfaces.d/ 2>/dev/null
networkctl list 2>/dev/null
nmcli device status 2>/dev/null

Выберите способ настройки в зависимости от результатов:

РезультатОписаниеРекомендация
networking показывает active, и существует /etc/network/interfaces.d/Обычно в системах Debian, Armbian и т.д.Используйте ifupdown
systemd-networkd показывает active, networkctl list показывает сетевые устройстваСетью управляет systemd-networkdИспользуйте systemd-networkd
NetworkManager показывает active, nmcli device status показывает сетевые устройстваСетью управляет NetworkManagerНе смешивайте с двумя способами ниже, сначала обработайте по схеме NetworkManager текущей системы
Несколько служб показывают activeВ системе может быть смешанное управление сетьюСначала определите, какая служба фактически управляет can0, затем выберите соответствующий способ

Если невозможно определить, какой способ используется в текущей системе, сначала обратитесь к документации образа системы или производителя хоста. Для хостов FLY и системы FlyOS-FAST ручная настройка CAN0 обычно не требуется.

Запись конфигурации CAN0

После определения менеджера сети выберите соответствующую конфигурацию в зависимости от фактической системы.

ifupdown

Подходит для систем Debian, Armbian и т.д., использующих /etc/network/interfaces.d/ для управления сетью. Конфигурация для скорости 1M:

sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig \$IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 1000000
pre-up ip link set can0 txqueuelen 1024
EOF

Для скорости 500K замените 1000000 на 500000 в приведенной выше команде, а затем выполните ее.

После завершения настройки перезагрузите устройство:

sudo reboot

Проверка состояния CAN0

После перезагрузки выполните:

ip -details link show can0

Проверьте следующее:

  • bitrate: Скорость связи CAN, например 1000000 означает 1M.
  • qlen или txqueuelen: Длина очереди отправки, рекомендуется 1024.
Loading...

Если отображается сообщение, что can0 не найден, сначала выполните:

ip link
lsusb
dmesg | grep -i can

Распространенные причины:

  • UTOC не распознан системой или USB-кабель поддерживает только питание.
  • На плату не прошита прошивка USB-CAN-моста.
  • Файл конфигурации CAN0 не вступил в силу или система не была перезагружена.
  • Образ системы не поддерживает SocketCAN.

Поиск CAN ID

Перед поиском убедитесь, что устройство находится в состоянии, доступном для поиска:

  1. Если UUID этого устройства уже записан в printer.cfg и Klipper нормально к нему подключается, команда поиска может не отобразить это устройство снова.
  2. Перед поиском можно временно закомментировать соответствующий раздел [mcu], сохранить и перезапустить Klipper.
  3. Отключите питание устройства примерно на 10 секунд, затем снова включите его и выполните команду поиска.

На обычном хосте выполните:

~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

На хосте FLY выполните:

python3 ~/klipper/scripts/canbus_query.py can0

Интерпретация результатов:

  • Application: Klipper: Этот ID можно напрямую записать в printer.cfg для использования.
  • Application: CANBOOT или Application: Katapult: Устройство все еще находится в загрузчике, сначала необходимо прошить прошивку Klipper.
  • ID не найдены: Сначала проверьте CAN0, распиновку, оконечные резисторы, питание и способ связи прошивки в соответствии с разделом «Порядок устранения неполадок при отсутствии ID» ниже.
Loading...

Способ заполнения CAN ID

  1. Откройте веб-интерфейс принтера и найдите printer.cfg в левой части.
  2. Вставьте найденный UUID после canbus_uuid: в соответствующем разделе [mcu].
  3. При использовании CAN-подключения не оставляйте одновременно serial: и canbus_uuid: в одном разделе [mcu].
  4. Сохраните и перезапустите Klipper.

Пример заполнения для CAN-прошивки:

[mcu]
canbus_uuid: xxxxxxxxxxxx

Для USB-прошивки используйте serial:, для CAN-прошивки используйте canbus_uuid:. При переходе с USB-прошивки на CAN-прошивку удалите или закомментируйте исходную строку serial:.

Внимание

ID в документации являются примерами. ID каждой основной или инструментальной платы уникальны, вводите фактически найденный ID.


Устранение ошибок CAN: Если CAN0 и CAN ID настроены правильно, но все еще возникают проблемы со связью, обратитесь к разделу Устранение ошибок CAN.

Loading...