
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가 자주 발생하는 원인
장치 하나만 연결해서 시험할 때 주의
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하는 것이 좋다.

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

점검 순서
마무리
Bus-Off는 CAN Controller가 Network를 보호하기 위해 스스로 통신에서 빠지는 상태다. 재부팅보다 먼저 왜 Error Counter가 증가했는지를 찾는 것이 핵심이다.
'【통신 실무】' 카테고리의 다른 글
| 【통신 실무】 IP Address, Subnet Mask, Gateway 쉽게 이해하기 | 로봇 Ethernet 설정 (0) | 2026.09.17 |
|---|---|
| 【통신 실무】 Modbus TCP란? PLC와 PC 통신 구조부터 Port 502까지 (0) | 2026.09.16 |
| 【통신 실무】 CAN_H와 CAN_L 전압은 몇 V가 정상일까? | CAN 신호 측정 방법 (0) | 2026.09.15 |
| 【통신 실무】 CAN Baud Rate와 케이블 길이의 관계 | 125k, 250k, 500k, 1Mbps 차이 (0) | 2026.09.15 |
| 【통신 실무】 CAN 통신에서 120Ω 종단저항을 사용하는 이유 | 60Ω이 측정되는 이유 (1) | 2026.09.14 |