J1939는 미국 자동차 협회( Society of Automotive Engineers) 에서 만든 상용차 또는 산업용 장비(농기계, 건설기계 등)의 장비들이 서로 통신하기 위한 CAN 프로토콜입니다.
CAN2.0을 기반으로 하고 있으며, CAN ID는 특정 규칙을 가지고 있습니다.
CAN ID는 29bit extended를 사용하며, 구조는 아래와 같이 정해져 있습니다.

각 영역의 정의는 다음과 같습니다.
1. Priority :우선순위
우선순위는 0~7까지 있으며, 0이 가장 우선순위가 높습니다.
1) 우선순위 0~2 : 긴급 제어 및 안전데이터
긴급한 정보 및 빠른 대응이 필요할때
전송 속도도 10~50ms정도로 빠릅니다.
ex) ABS, 브레이크 시스템
2) 우선순위 3~5 : 주요 상태 및 작동 정보
차량 제어에 중요한 데이터들이며, 보통 50ms~500ms정도의 주기로 전송합니다.
대부분의 데이터들이 이 부분에 속합니다.
ex) 현재 차량 속도, 엔진 RPM, 냉각수 온도등
3) 우선순위 6~7 : 일반 정보 및 확인 신호
차량의 운행에 큰 영향을 주지 않느 단순 정보등, 보통 1000ms정도의 주기
ex) 누적 주행거리, 엔진 가동시간 등
우선 순위는 동시에 여러 데이터가 들어오더라도 처리의 우선순위를 위해 존재 합니다.
2. Reseverd & Data Page : 데이터 확장용
Reserved는 당장은 사용하지 않지만 추후 사용을 위해 남겨 놓은 것입니다.
Data Page도 비슷한 경우인데, PF(PDU Format) 이 8bit밖에 되지 않아, 더 추가 사용시 DP를 1로 변경해 사용 할 수 있습니다.
PF는 기본적으로 255개이나 DP를 이용해 511개까지 사용 가능합니다.
일반적으로 0을 사용합니다.
3. PDU Format : 프로토콜 데이터 단위 형식(Protocol Data Unit Format)으로 누구에게 전달하는지를 나타냅니다.
1) PF 0x00~0xEF : 특정 장치에 전달(PDU1)
CAN Message를 특정 장치에게만 전달 할때 사용합니다.
뒤에 나오는 15~8bit는 DA(Destination Address)가 되며, CAN Message를 받을 장치의 ID가 됩니다.
PF가 0에 가까울수록 차량의 새시와 관련된 긴급 제어 명령용입니다.
- PF 0 : TSC1(Torque/Speed Control 1) : 토크 및 속도제어
ex) 변속기나 브레이크가 엔진에게 엔진 출력등을 명령할때 사용
- PF 3 : ETC(Electronic Transmission Control) : 전자식 변속기 제어
ex) 변속기가 기어를 바꿀 때 엔진과 타이밍 맞추기 위해 주고 받는 메시지
- PF 234 : 데이터 요청
ex) 온도 정보등을 요청할때 사용
- PF 235 : 대용량 데이터 전송
ex) 8바이트가 넘는 can 데이터를 보낸때 번호를 달기 위해 사용
- PF 236 : 대용량 데이터 전송 준비/ 관리
ex) 8바이트가 넘는 데이터를 보낼때 데이트의 크기등의 정보 전달 위해 사용
- PF 238 : 네트워크 주소 할당
ex) 새로운 부품이나 진단기가 연결될때 ID 겹치는지 확인하기 위해 사용
- PF 239 : 제조사 자체 규격 1:! 통신
ex) 차량 제조사들이 규격에 없는 자기들만의 데이터를 보낼때 사용
- 그 밖의 정보들은 차량별로 사용을 위해 정의 되어 있거나 reseve되어 있습니다.
2) PF 0xF0~0xFF : 전체 장치에 전달(PDU2)
CAN Message를 특정 장치가 아닌 전체에게 보낼때 사용합니다.
뒤에 나오는 15-8bit는 DA가 아닌 PS(PDU Specific)으로 사용합니다.
- PF 240~254 : 표준 전체 발송(Standard Broadcast PGNs)
ex) 차량의 속도, 온도, 압력등 대부분의 센서 데이터 발송할 때 사용하며, 254번에 주요 정보들을 많이 사용
- PF 255 : 제조사 전용 전체 발송(Proprietary B)
ex) 제조사 자체 규격으로, 제조사 계기판 특유의 경고등을 띄울 때 사용
4. PDU Specific / Destination Address
1) PF가 0~239일때는 DA로 사용되며, 받을 장치의 Address입니다.
2) PF가 240~255일때 PS로 사용되며 데이터의 세부 그룹 번호로 GE(Group Extension)로 불립니다.
PS는 PF와 합쳐져 전체로 보내는 데이터가 어떠한 것인지를 나타내는 용도로 사용합니다.
전체 발송용 PF는 240~255까지 16개 밖에 안되어 뒤에 PS 256개를 사용해 4096개의 데이터 종류를 만들 수 있습니다.
4-1 PGN : PGN은 PF와 PS를 합쳐 만들어지며, PGN만 보고도 어떠한 데이터인지 알 수 있습니다.
1:1 메세지의 경우 DS가 아닌 DA이므로 PGN에서는 0으로 채워 표기합니다.
ex) PF가 240이상(전체 메세지) : PGN=(PF*256)+PS
PF가 239이하(1:1 메세지) : PGN=(PF*256)+0
5. Source Address(SA) : 보내는 장치의 ID
CAN Message를 누가 보냈는지를 알리는 용도로 사용합니다.
SA는 SAE 표준 문서에 정해져 있습니다.
0 ~127 : 특정 기능을 가진 장치에 이미 할당되어 있음.
128~247 : 고정되지 않음. 주소 충돌시 협상을 통해 결정 가능
248~255 : 특수한 영역으로 진단기 등에서 사용
하지만 이부분은 자동차, 농기계, 건설기계 등 서로 다르게 사용중이니 J1939문서를 구입하여 확인하는 것을 권장합니다.
'Study > CAN+UDS' 카테고리의 다른 글
| DTC(Diagnostic Trouble Code)-고장갯수 요청 (0) | 2025.11.03 |
|---|---|
| UDS(Unified Diagnostic Services)(ISO 14229) (0) | 2025.03.28 |