CAN 통신이란?
: 원래 자동차에서 쓰는 CAN 통신인데 뭐 배터리도 결국 차량용 배터리로 차에 들어가는 얘고
BMS를 이식하니까 충방전기 이런 곳에서도 CAN 통신을 쓴다.
전체적으로 방송하고 그 Send 하는 메세지가 가지고 있는 ID와 같은 ID로 Read를 하겠다고 하면 읽을 수 있는 형식이다.

(참고 이미지입니다. 실제 아닙니다.)
한 보드에 1개가 아니라 여러개 노드 Node로 CAN 통신에 연결할 수 있는데
각각의 CAN 노드가 ID를 지정해주는거에 따라서 다 별개로 read 하고 write 하고 동작할 수 있다.
CAN 통신 구성
: CAN 통신은 노드의 주소(IP나 MAC 주소 같은 개념)가 없고 메시지 자체에 고유한 ID로 구분한다.
| 구성 | 설명 |
| SOF (Start of Frame) | 메시지의 시작을 알리는 1비트 신호. |
| Identifier (11비트 또는 29비트) | 메시지의 이름이자 우선순위를 결정하는 ID 영역 (예: BMS_Status_ID, Motor_Control_ID 등) |
| Control (DLC, Data Length Code) |
뒤에 따라올 실제 데이터가 몇 바이트인지(0~8바이트) 알려주는 영역 |
| Data Field (0~8 Bytes) | 실제 실어서 보내는 물리 데이터 (온도값, 전압값, 플래그 등) |
| CRC | 데이터가 전송 중에 깨지지 않았는지 검증하는 에러 체크 코드 |
| ACK | 메시지를 정상적으로 수신한 다른 노드가 잘 받았다고 응답을 찍어주는 비트 |
사실상 CAN 이라는 통신을 이미 정형화되어 있는 통신이기에 사용자의 입장에서 맞추는 게 중요한데
실제 일할 때 통신을 위해서는 아래 2가지를 주로 본다.
- Baud Rate (통신 속도) 일치: CAN 네트워크에 참여하는 모든 노드는 통신 속도(예: 125 kbps, 250 kbps, 500 kbps, 1 Mbps)가 완벽히 일치해야 한다. 조금만 틀어져도 에러 패킷이 발생하여 버스가 마비된다.
- 통신 필터링 (Acceptance Filtering): 버스에 수많은 메시지(ID)들이 돌아다니기 때문에, MCU의 자원을 절약하기 위해 하드웨어 레벨에서 "내가 필요한 ID만 골라서 수신 인터럽트를 발생시키도록" 마스크(Mask)와 필터 설정을 정교하게 해주어야 한다.
'배터리' 카테고리의 다른 글
| CAN 통신 - CAN Bit Configuration (0) | 2026.06.03 |
|---|---|
| PLC Address Map 읽기 (0) | 2026.05.29 |
| HSMS 통신 간략 정리 (0) | 2026.05.27 |
| MES 메세지 통신 구성과 단계 (0) | 2026.05.25 |
| 온도 측정 방법 Thermistor - 원리 (0) | 2026.05.22 |