본문 바로가기

배터리

CAN 통신 간략 정리

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