Klipper 귀환 타임아웃 문제
문제 설명
귀환 과정 중 통신 타임아웃 오류 발생:
Error during homing z: Communication timeout during homing
이 문제는 다중 MCU Z축 귀환 시나리오에서 자주 발생합니다. 귀환 중 호스트 컴퓨터의 부하가 높거나 다중 MCU 통신 응답이 불안정하면 타임아웃이 발생할 수 있습니다.
- Klipper가 정상적으로 설치되어 있고 실행 가능한지 확인하십시오.
- 현재 사용자가 Klipper 설치 사용자임을 확인하십시오.
- 아래 명령어의 경로가 실제 시스템과 일치하는지 확인하십시오.
- Klipper 소스 코드를 수정하거나 스크립트를 추가하기 전에 관련 파일을 백업하는 것이 좋습니다.
- 타임아웃 시간 조정
- KlipperScreen 관리
- 전자기 간섭 확인
방법 1: 타임아웃 시간 조정
이 방법은 Klipper 소스 파일 mcu.py를 직접 수정하며, 귀환 타임아웃 문제 확인 목적으로만 권장합니다. Klipper 업데이트 시 수정 사항이 덮어씌워질 수 있습니다. 문제 해결 또는 확인 완료 후 기본값으로 복원하는 것이 좋습니다.
먼저 원본 파일을 백업합니다:
cp ~/klipper/klippy/mcu.py ~/klipper/klippy/mcu.py.bak
Klipper의 TRSYNC_TIMEOUT을 수정합니다:
sed -i 's/TRSYNC_TIMEOUT = [0-9.]*$/TRSYNC_TIMEOUT = 0.05/' ~/klipper/klippy/mcu.py
Klipper 서비스를 재시작합니다:
sudo systemctl restart klipper
현재 설정 확인:
grep "TRSYNC_TIMEOUT =" ~/klipper/klippy/mcu.py
기본값으로 복원이 필요한 경우:
sed -i 's/TRSYNC_TIMEOUT = [0-9.]*$/TRSYNC_TIMEOUT = 0.025/' ~/klipper/klippy/mcu.py
sudo systemctl restart klipper
백업 파일 복원이 필요한 경우:
cp ~/klipper/klippy/mcu.py.bak ~/klipper/klippy/mcu.py
sudo systemctl restart klipper
방법 2: KlipperScreen 관리
KlipperScreen을 일시적으로 종료하여 시스템 리소스를 확보하고 귀환 중 통신 타임아웃 발생 가능성을 낮춥니다.
이 방법은 gcode_shell_command.py, 스크립트 디렉터리 및 매크로 구성을 추가합니다. 현재 시스템에서 셸 명령어 사용이 허용되는지, 스크립트 경로가 실제 설치 경로와 일치하는지 확인하십시오.
필요 파일 다운로드
표준 시스템:
git clone https://cnb.cool/3dmellow/public/klipper-klipperscreen-manager
curl -# -L --retry 3 --retry-delay 2 -o ~/klipper/klippy/extras/gcode_shell_command.py https://raw.githubusercontent.com/dw-0/kiauh/master/kiauh/extensions/gcode_shell_cmd/assets/gcode_shell_command.py
FlyOS-FAST 시스템:
cd /data
git clone https://cnb.cool/3dmellow/public/klipper-klipperscreen-manager
curl -# -L --retry 3 --retry-delay 2 -o /data/klipper/klippy/extras/gcode_shell_command.py https://raw.githubusercontent.com/dw-0/kiauh/master/kiauh/extensions/gcode_shell_cmd/assets/gcode_shell_command.py
스크립트 권한 설정
표준 시스템:
cd ~/klipper-klipperscreen-manager
chmod +x ~/klipper-klipperscreen-manager/scripts/*.sh
FlyOS-FAST 시스템:
cd /data/klipper-klipperscreen-manager
chmod +x /data/klipper-klipperscreen-manager/scripts/*.sh
구성 파일 생성
- Klipper 구성 디렉터리에
klipper_macros.cfg파일을 생성합니다. printer.cfg파일 상단에 다음을 추가합니다:
[include klipper_macros.cfg]
매크로 명령어 구성
klipper_macros.cfg에 다음 내용을 추가합니다. /data/klipper-klipperscreen-manager/scripts/를 실제 스크립트 경로로 변경하십시오.
[gcode_shell_command disable_klipperscreen]
command: sh /data/klipper-klipperscreen-manager/scripts/disable_klipperscreen.sh
timeout: 5.0
verbose: True
[gcode_shell_command enable_klipperscreen]
command: sh /data/klipper-klipperscreen-manager/scripts/enable_klipperscreen.sh
timeout: 5.0
verbose: True
[gcode_macro RESTART_KlipperScreen]
variable_time: 60
gcode:
{% set wait_time = params.TIME|default(printer["gcode_macro RESTART_KlipperScreen"].time)|int %}
{action_respond_info("대기 시간: %s 초" % wait_time)}
RUN_SHELL_COMMAND CMD=disable_klipperscreen PARAMS={wait_time}
[gcode_macro ENABLE_KlipperScreen]
gcode:
{action_respond_info("KlipperScreen 즉시 시작")}
RUN_SHELL_COMMAND CMD=enable_klipperscreen
사용 방법
KlipperScreen 임시 종료:
RESTART_KlipperScreen
종료 시간 지정 (예: 120초):
RESTART_KlipperScreen TIME=120
KlipperScreen 수동 즉시 시작:
ENABLE_KlipperScreen
이 방법은 KlipperScreen 인터페이스를 일시적으로 종료하여 시스템 리소스를 확보하고 CPU 부하를 줄여 귀환 과정의 통신 타임아웃을 감소시킵니다.
복원 방법
이 방법을 더 이상 사용하지 않으려면 순서대로 복원하십시오:
printer.cfg에서[include klipper_macros.cfg]를 삭제하거나 주석 처리합니다.klipper_macros.cfg에서disable_klipperscreen,enable_klipperscreen,RESTART_KlipperScreen,ENABLE_KlipperScreen관련 구성을 삭제합니다.- 다운로드한 스크립트 디렉터리를 삭제합니다.
표준 시스템:
rm -rf ~/klipper-klipperscreen-manager
FlyOS-FAST 시스템:
rm -rf /data/klipper-klipperscreen-manager
시스템에 gcode_shell_command.py에 의존하는 다른 기능이 없다면 해당 파일도 삭제할 수 있습니다. 삭제 전에 RUN_SHELL_COMMAND를 사용하는 다른 매크로가 없는지 확인하십시오.
방법 3: 전자기 간섭 확인
귀환 타임아웃의 가장 흔한 하드웨어 원인은 **전자기 간섭(EMI)**입니다. 귀환 중 다축 모터가 동시에 작동하면 대전류 PWM 구동 신호가 강한 전자기장을 생성합니다. CAN 또는 USB 통신선이 모터선이나 히터선 배선과 가까우면 간섭 신호가 통신선에 결합되어 통신 지연 또는 연결 끊김으로 인한 타임아웃이 발생할 수 있습니다.
전자기 간섭으로 인한 귀환 타임아웃 특징:
- 간헐적: 매번 타임아웃이 발생하지 않고 간헐적으로 발생합니다.
- 동작 관련: 일반적으로 귀환 또는 빠른 이동 시에 발생하며 정지 상태에서는 정상입니다.
- 전원 재시작 후 복구: 재부팅 후 정상 연결되지만 인쇄 또는 귀환 시 문제가 재발합니다.
확인 사항
CAN/USB 케이블 정리, 차폐 조정, 종단 저항 활성화 또는 CANH-CANL 저항 측정 전에 프린터를 완전히 종료하고 전원 공급을 차단하십시오. 전원이 켜진 상태에서 통신선을 분리하거나, 배선을 변경하거나, 저항을 측정하거나, 전원 단자에 접촉하지 마십시오.
1. 배선 레이아웃
CAN/USB 통신선을 모터선, 히터선, 베드선과 분리하여 배선하십시오:
- 케이블 체인 내에서 최소 2-3cm 간격 유지
- 강전선과 평행 배선을 피하고 교차 배선을 권장
- CAN선은 꼬임선 사용 (꼬임 간격 수 cm 이내)
2. 차폐 접지
차폐선 사용 시:
- 호스트 측에서만 단일 접지, 툴보드/MCU 측 차폐는 미연결 상태 유지
- 양단 접지 금지 - 접지 루프 형성으로 오히려 간섭 유발
- 차폐 접지점은 마더보드 또는 툴보드에 실크스크린으로 표시된 GND 핀에 우선 연결; 명확한 표시가 없으면 고객 지원에 문의하십시오. 전원 공급 장치를 분해하거나 주전원 접지를 임의로 변경하지 마십시오.
3. 종단 저항
- CAN 버스 양 끝에는 반드시 2개의 120Ω 종단 저항만 있어야 합니다.
- 종단 저항은 버스의 물리적 끝단에 설치해야 하며, 일반적으로 보드에 내장된 점퍼 캡, 딥 스위치 또는 완제품 종단 인터페이스를 통해 활성화하고 케이블 중간에 임의로 연결하지 마십시오.
- 먼저 전원을 차단한 후 작업하십시오. 멀티미터로 CANH-CANL 간 저항을 측정하면 정상적으로 약 60Ω (120Ω 두 개 병렬)입니다.
4. 기계 접지
- 프린터가 규격에 맞는 3구 콘센트를 사용하고 제조사가 제공하는 접지점을 우선 사용하십시오.
- 전원 공급 장치를 분해하거나 주전원 접지를 변경하거나 노출된 전원 단자에 접촉하지 마십시오. 접지 처리가 필요한 경우 고객 지원 또는 전문 전기 기술자에게 문의하십시오.
- 접지되지 않은 기계의 금속 프레임은 대형 안테나 역할을 하여 주변 소음을 수집하여 간섭을 증폭시킵니다.
5. 확인 방법
간섭이 근본 원인인지 임시 테스트:
# 인쇄 속도 및 모터 전류 감소
SET_VELOCITY_LIMIT VELOCITY=50
# 또는 드라이버 전류를 30% 임시 감소하여 테스트
SET_TMC_CURRENT STEPPER=stepper_x CURRENT=0.5
속도/전류를 낮춘 후 귀환 타임아웃이 사라지면 전자기 간섭 문제로 확인할 수 있으며, 위의 확인 사항에 따라 배선과 접지를 최적화해야 합니다.
간섭 확인에 대한 자세한 내용은 CAN 오류 확인 - CAN 버스 노드 응답 없음을 참조하십시오.