본문으로 건너뛰기

CAN 네트워크 구성 및 ID 검색

이 문서는 CAN 네트워크 구성, CAN0 상태 확인, CAN UUID 검색 및 일반적인 CAN 오류 문제 해결을 위해 사용됩니다.

적용 시나리오:

  • UTOC 등 USB-to-CAN 모듈을 사용하여 CAN 툴보드 연결.
  • USB 브리지 CAN 펌웨어가 플래시된 메인보드를 사용하여 CAN 툴보드 연결.
  • 메인보드 또는 툴보드에 CAN 펌웨어가 플래시되어 있으며, CAN UUID 검색이 필요함.
  • Klipper에서 CAN0, CAN UUID 또는 CAN 네트워크 관련 오류 발생.

사용 전 주의사항

  1. UTOC 또는 CAN 브리지 펌웨어가 플래시된 메인보드를 USB로 호스트 컴퓨터에 연결합니다.
  2. 네트워크를 통해 호스트 컴퓨터 백엔드에 로그인하고, 직렬 포트를 사용하지 마십시오.
  3. FlyOS-FAST 시스템은 CAN0을 1M 속도, 1024 캐시로 사전 설정하므로 일반적으로 수동 설정이 필요하지 않습니다.
  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 메인보드를 사용하는 경우, 해당 메인보드에 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
주의

시스템이 CAN 브리지 장치를 인식한 후에야 이후의 CAN0 구성 및 CAN ID 검색이 의미를 갖습니다.

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

결과에 따라 구성 방식을 선택합니다:

판단 결과설명권장 선택
networkingactive로 표시되고 /etc/network/interfaces.d/가 존재함Debian, Armbian 등 시스템에서 흔함ifupdown 사용
systemd-networkdactive로 표시되고 networkctl list에서 네트워크 장치 확인 가능네트워크가 systemd-networkd에 의해 관리됨systemd-networkd 사용
NetworkManageractive로 표시되고 nmcli device status에서 네트워크 장치 확인 가능네트워크가 NetworkManager에 의해 관리됨아래 두 가지 구성을 직접 혼용하지 말고, 현재 시스템의 NetworkManager 방안에 따라 처리
여러 서비스가 모두 active로 표시됨시스템에 혼합 네트워크 관리가 있을 수 있음어떤 서비스가 실제로 can0을 관리하는지 먼저 확인한 후 해당 방식을 선택

현재 시스템이 어떤 방식을 사용하는지 판단할 수 없는 경우, 먼저 시스템 이미지 또는 호스트 컴퓨터 제조업체 문서를 참조하십시오. FLY 호스트 컴퓨터 및 FlyOS-FAST 시스템은 일반적으로 CAN0을 수동으로 구성할 필요가 없습니다.

CAN0 구성 작성

네트워크 관리 방식을 확인한 후, 실제 시스템에 따라 해당 구성을 선택합니다.

ifupdown

/etc/network/interfaces.d/를 사용하여 네트워크를 관리하는 Debian, Armbian 등 시스템에 적용됩니다. 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 속도가 필요한 경우 위 명령의 1000000500000으로 변경한 후 실행하십시오.

구성 완료 후 장치 재부팅:

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를 검색할 수 없음: 아래 "ID를 검색할 수 없는 경우 확인 순서"에 따라 CAN0, 배선 순서, 종단 저항, 전원 공급 및 펌웨어 통신 방식을 확인하십시오.
Loading...

CAN ID 작성 방법

  1. 프린터 웹 인터페이스를 열고 왼쪽 설정 진입점에서 printer.cfg를 찾습니다.
  2. 검색된 UUID를 해당 [mcu] 구성 섹션의 canbus_uuid: 뒤에 작성합니다.
  3. CAN 연결을 사용하는 경우, 동일한 [mcu]serial:canbus_uuid:를 동시에 유지하지 마십시오.
  4. 저장하고 Klipper를 재시작합니다.

CAN 펌웨어 작성 예시:

[mcu]
canbus_uuid: xxxxxxxxxxxx

USB 펌웨어는 serial:을 사용하고, CAN 펌웨어는 canbus_uuid:를 사용합니다. USB 펌웨어에서 CAN 펌웨어로 변경하는 경우, 원래 serial:을 삭제하거나 주석 처리해야 합니다.

주의

문서의 ID는 모두 예시입니다. 각 메인보드 또는 툴보드의 ID는 모두 다르므로, 실제 검색된 ID를 작성하십시오.


CAN 오류 문제 해결: CAN0 및 CAN ID를 올바르게 구성했지만 여전히 통신 이상이 발생하는 경우, CAN 오류 문제 해결을 참조하십시오.

Loading...