ROBOT ENGINEERING NOTES

로봇과 AMR의
전장 설계부터 인증까지

회로 실무, 산업자동화, Functional Safety, ISO 규격과 로봇 인증을 실제 설계 관점에서 정리합니다.

회로 실무 AMR / AGV Functional Safety ISO 13849 EMC / CE
AMR ENGINEERING GUIDE →

【통신 실무】 CAN Bus-Off란? Error Active, Error Passive까지 쉽게 이해하기

반응형

CAN 장치를 개발하다 보면 “Bus-Off에 들어갔다”, “재부팅하면 다시 살아난다”는 현상을 만날 수 있다. Bus-Off는 단순한 통신 끊김이 아니라 CAN Controller가 자신이 Bus에 계속 오류를 만들고 있다고 판단해 통신에서 스스로 빠지는 보호 메커니즘이다.

핵심
CAN Controller는 통신 오류를 Counter로 관리한다. 오류가 누적되면 Error Active → Error Passive → Bus-Off로 상태가 악화될 수 있고, Bus-Off가 되면 해당 Node는 정상적인 CAN 송신에서 빠진다.

왜 이런 기능이 필요할까?

고장난 Node 하나가 계속 Error Frame을 발생시키면 전체 CAN Network가 불안정해질 수 있다. CAN은 이런 Node가 Network 전체를 마비시키지 않도록 Error Confinement 기능을 갖고 있다.

TEC와 REC란?

항목 의미
TEC Transmit Error Counter, 송신 과정의 오류 누적
REC Receive Error Counter, 수신 과정의 오류 누적

오류 종류와 상황에 따라 Counter는 증가하거나 감소한다. 특히 송신 Node가 ACK를 받지 못하거나 Bit Error가 반복되면 TEC가 빠르게 증가할 수 있다.

Error Active, Error Passive, Bus-Off

상태 특징 현장에서 보이는 현상
Error Active 일반적인 정상 Error Handling 통신 가능
Error Passive Error가 누적된 제한 상태 통신은 가능하지만 상태 확인 필요
Bus-Off 송신 Error가 과도하게 누적 Node가 CAN Bus에서 빠짐

Bus-Off가 자주 발생하는 원인

대표 원인
Baud Rate 불일치
CAN_H / CAN_L 배선 오류
종단저항 누락 또는 과다
ACK를 줄 다른 정상 Node가 없음
심한 Noise와 Reflection
CAN Transceiver Fault

장치 하나만 연결해서 시험할 때 주의

CAN 송신 Node 하나만 Bus에 연결하고 계속 Message를 보내면 다른 Node가 ACK를 제공하지 못하는 환경이 될 수 있다. Controller와 Test Tool 구성이 어떻게 되어 있는지 확인해야 하며, 단순 Loopback Test와 실제 Bus Test를 구분해야 한다.

재부팅하면 왜 살아날까?

장치 Reset 과정에서 CAN Controller의 Error State가 초기화되거나 Driver가 Bus-Off Recovery를 수행하기 때문이다. 하지만 원인이 Baud Rate나 배선 문제라면 잠시 살아나도 다시 Error가 누적되어 Bus-Off로 들어갈 수 있다.

중요
Bus-Off 발생 후 자동으로 재시작하도록 만드는 것만으로 문제를 해결했다고 보면 안 된다. 반복되는 Bus-Off는 Physical Layer나 Configuration 문제의 신호일 수 있다.

Firmware에서는 무엇을 기록하면 좋을까?

현장 디버깅을 쉽게 하려면 단순히 “CAN Error”만 남기지 말고 Error State와 Counter, Recovery 횟수를 Logging하는 것이 좋다.

CAN_STATE = ERROR_PASSIVE TEC = 142 REC = 8 BUS_OFF_COUNT = 3 LAST_RECOVERY_TIME = 12:31:08

AMR에서 Bus-Off가 위험한 이유

Motor Driver, Lift, BMS가 CAN에 연결되어 있다면 특정 Node의 Bus-Off는 단순 데이터 누락을 넘어 주행과 충전, 상태진단에 영향을 줄 수 있다. 그래서 System Level에서는 통신 Timeout과 Safe State를 별도로 설계해야 한다.

점검 순서

60Ω
Baud Rate
CAN_H/L 파형
TEC/REC
Recovery

마무리

한 문장으로 정리하면
Bus-Off는 CAN Controller가 Network를 보호하기 위해 스스로 통신에서 빠지는 상태다. 재부팅보다 먼저 왜 Error Counter가 증가했는지를 찾는 것이 핵심이다.
반응형