J1939는 SAE가 정한 대형 차량(heavy-duty vehicle)용 직렬 제어·통신 네트워크 규격 시리즈다.[1] 트럭과 버스, 건설, 농업 용도로 함께 개발됐다.[2] 도로와 비도로에서 쓰는 경·중·대형 차량이 대상이고, 트럭과 트레일러, 건설 장비, 농기계를 포함한다. J1939는 ECU끼리 통신하도록 표준 아키텍처를 준다.[3]
데이터 링크 계층
J1939-21:2022는 ISO 11898-1:2015의 CAN 확장 포맷 프레임과 29비트 식별자를 쓰는 데이터 링크 계층을 정한다.[3] J1939-22:2022는 ISO 11898-1:2015의 CAN FD를 쓰는 데이터 링크 계층을 정한다.[4]
농기계용 ISO 11783 시리즈의 ISO 11783-3:2026은 CAN 확장 포맷 데이터 프레임보다 긴 메시지를 위한 전송 계층과 네트워크 계층 프로토콜을 J1939-21을 바탕으로 정한다.[2]
이 표준은 CAN 데이터 프레임 하나의 데이터 필드에 들어가지 않는, 8바이트가 넘는 메시지를 다중 패킷 메시지라고 한다.[2] 다중 패킷 메시지는 한 PGN의 데이터를 CAN 데이터 프레임 여러 개에 나눠 보내고, 프레임마다 CAN 식별자는 같고 데이터는 다르다. 데이터 길이 (바이트)이 인 파라미터 그룹은 확장 전송 프로토콜(ETP, Extended Transport Protocol)로 보낸다.[5]
문서 구성
J1939는 문서 여럿으로 나뉜다. 최상위 문서는 J1939 네트워크를 개관하고, 하위 문서 구조와 하위 문서들이 함께 쓰는 용어와 약어를 정의한다.[1] 하위 문서 가운데 몇 가지는 아래와 같다.
| 문서 | 계층 | 정하는 것 |
|---|---|---|
| J1939-11 | 물리 | 250 kbit/s 차폐 꼬임쌍선 물리 계층[6] |
| J1939-14 | 물리 | 500 kbit/s 물리 계층. J1939의 다른 물리 계층보다 대역폭이 크다.[7] |
| J1939-15 | 물리 | 250 kbit/s 비차폐 꼬임쌍선 물리 계층[8] |
| J1939-21 | 데이터 링크 | CAN 확장 포맷 프레임을 쓰는 데이터 링크 계층[3] |
| J1939-22 | 데이터 링크 | CAN FD를 쓰는 데이터 링크 계층[4] |
| J1939-31 | 네트워크 | 서로 다른 네트워크 세그먼트의 ECU를 잇는 네트워크 연결 ECU의 요구사항과 서비스[9] |
| J1939-71 | 응용 | 파라미터와 파라미터 그룹의 정의, 배치와 전송 주기의 관례[10] |
| J1939-81 | 네트워크 관리 | 애플리케이션의 주소를 관리하는 절차와 메시지[11] |
파라미터와 주소
J1939-71:2025는 파라미터와 파라미터 그룹의 정의, 파라미터 그룹 데이터 안에 파라미터를 배치하는 관례, 파라미터 그룹의 전송 주기 관례를 다룬다. J1939-71에 실리던 파라미터와 파라미터 그룹의 정의는 이제 J1939DA(J1939 Digital Annex)에 실린다.[10]
J1939-81:2025는 J1939 네트워크에서 통신하는 애플리케이션의 주소를 관리하는 절차와 메시지를 정하고, 주소 선택과 주소 요구(address claiming) 절차를 정한다.[11]
ISO 11783-1:2017은 PGN(Parameter Group Number)을 CAN 식별자의 EDP(Extended Data Page, 1비트), DP(Data Page, 1비트), PF(Protocol Data Unit Format, 8비트) 필드와 그룹 확장(GE, Group Extension)을 24비트로 나타낸 값으로 정의하고, 이 값은 파라미터 그룹 하나를 식별한다. 8비트 PS(Protocol Data Unit Specific) 필드는 목적지 주소이거나 GE다. 목적지 주소로 보내는 메시지에 쓰는 PDU1 포맷은 PS에 목적지 주소를 담고, PDU2 포맷은 PS에 GE를 담는다. 주소는 메시지의 송신지나 목적지를 정하는 8비트 필드이고, 제어 기능(CF, Control Function)마다 네트워크에서 고유한 주소 하나를 갖는다.[5]
AUTOSAR의 J1939 지원
AUTOSAR R25-11 Layered Software Architecture는 J1939 통신 서비스를 대형 차량의 네트워크 통신을 위해 AUTOSAR CAN 스택을 넓히는 모듈 묶음으로 둔다. CAN 스택의 두 전송 프로토콜 모듈인 CanTp(CAN Transport Layer)와 J1939Tp는 채널마다 하나를 고르거나 서로 다른 채널에서 함께 쓴다. CanTp는 보통의 CAN 버스에서 Dcm(Diagnostic Communication Manager)의 ISO 진단과 큰 PDU(Protocol Data Unit) 전송에, J1939Tp는 J1939로 동작하는 CAN 버스에서 J1939 진단과 큰 PDU 전송에 쓴다.[12] J1939Dcm(SAE J1939 Diagnostic Communication Manager), J1939Fscp(SAE J1939 Functional Safety Communication Protocol), J1939Nm(SAE J1939 Network Management), J1939Rm(SAE J1939 Request Manager), J1939Tp(SAE J1939 Transport Layer)는 모두 Communication Services에 든다.[13]
J1939Tp는 J1939-21의 전송 프로토콜을 AUTOSAR 구조에서 구현한다. J1939Tp는 8바이트보다 긴 PGN을 나누고 다시 합치며, 브로드캐스트에는 BAM(Broadcast Announce Message)을, 지점 간 연결에는 CMDT(Connection Mode Data Transfer)를 쓴다. 8바이트를 넘지 않는 I-PDU(Interaction Layer Protocol Data Unit)는 J1939Tp를 거치지 않고 L-SDU(Link Layer Service Data Unit) Router를 거쳐 PduR와 CanIf(CAN Interface) 사이를 오간다.[14]
J1939Nm의 일은 다른 AUTOSAR 네트워크 관리와 달리 ECU의 sleep과 wakeup이 아니라 ECU마다 고유한 주소를 배정하는 것이다. J1939Nm은 시작할 때, 다른 노드가 같은 주소를 요구하는 AddressClaimed를 받았을 때, 요청을 받았을 때 AddressClaimed PG(Parameter Group)를 보낸다. 시작하는 동안과 주소를 잃은 뒤에는 ECU가 메시지를 보내지 않게 한다. J1939Nm은 J1939-81의 기능을 다 지원하지는 않는다. CommandedAddress를 받거나 주소를 잃은 뒤에 노드의 주소를 바꾸는 일, Name Management 프로토콜로 노드의 NAME을 바꾸는 일, AddressClaimed가 아닌 메시지로 주소 위반을 찾는 일은 지원하지 않는다.[15] J1939Nm은 sleep·wakeup 처리와 partial networking도 지원하지 않는다.[12]
J1939Rm은 Request, Request2, Acknowledgement PG를 다룬다. J1939Rm은 AddressClaimed PG를 요청하는 Request를 기본으로 처리하고, 진단과 그 밖의 PGN 요청은 설정으로 처리한다. 특정 목적지 주소로 온 알 수 없는 요청에는 부정 Acknowledgement로 답한다. J1939Rm은 Transfer PG는 지원하지 않는다.[16]
J1939Fscp는 SAE J1939-76에 따라 기능 안전 통신을 다룬다. SDM(Safety Data Message)은 보호가 필요한 PGN의 payload를 담는 메시지(J1939ProtectedIPdu)에 해당하고, SDG(Safety Data Group)는 이 SDM의 payload와, E2E 보호 계층이 채우는 SHM(Safety Header Message) 부분을 함께 담는다. J1939 메시지의 E2E 보호에는 E2E 프로파일 PROFILE_76을 둔다. AUTOSAR 구조 때문에 J1939Fscp는 IEC 61784-3의 통신 오류 가운데 일부만 직접 찾고, 대부분은 E2E 보호 계층이 찾는다.[17]
J1939를 받아들인 표준
CiA에 따르면 J1939의 상위 계층 프로토콜과 프로파일을 받아들인 표준에는 아래 등이 있다.[18]
| 표준 | 분야 |
|---|---|
| ISO 11783 시리즈(Isobus) | 농기계 |
| ISO 11992 시리즈 | 트럭과 트레일러의 연결 |
| IEC 61162-3(NMEA 2000) | 선박 전자 장비 |
| ISO 25200 | 상용차 차체 장비 네트워크 |
| ISO 16844 시리즈 | 상용차 타코그래프 |
NMEA는 선박의 전자 장비를 CAN 통신으로 잇는 요구사항을 담은 NMEA 2000 표준을 펴낸다.[19]
CiA 602-2는 J1939-21을 바탕으로 J1939-71의 파라미터 그룹을 CAN FD 데이터 프레임에 싣는 상용차용 응용 계층을 정한다.[20]