전체 J1939 사양은 다양한 문서와 챕터로 세분화됨. 모든 문서는 SAE 웹 사이트(<www.sae.org>)에서 개별적으로 또는 사전 구성된 패키지 형식으로 다운로드할 수 있음
J1939 사양은 유료로 제공 됨, 각 챕터 별로 비용이 발생함. 각 챕터는 체계적으로 구성되어 있으며 ISO/OSI 참조 모델을 기반으로 함. J1939의 문서 구조에는 OSI 모델에 정의되지 않은 8장을 포함하고 있어 보다 유연하게 구성되어 있습니다. 현존하는 문서는 아래와 같이 구분 할 수 있음
SAE J1939 프로토콜은 CAN(Controller Area Network, ISO 11898-1 및 ISO 11898-2)을 물리 계층으로 사용함. J1939는 아래와 같이 나눌 수 있음
J1939-21 문서는 29 비트 CAN 식별자를 해석해야하는 체계를 정의합니다. 다른 신호가 시작 비트와 길이로 정의되는 CAN 메세지의 8 바이트 데이터 필드와 마찬가지로 CAN 식별자는 파라미터 그룹에 대해 서로 다른 세그먼트로 세분됩니다. 이로써 식별자의 일부만이 PGN 자체를 나타내고 나머지는 소스 주소, 대상 주소, 우선순위 및 데이터 페이지(DP)로 해석됩니다.
PGN Sections(PGN 섹션)
두 비트 "데이터 페이지(DP)" 및 "확장 데이터 페이지(EDP)"는 PGN의 일부이며 두 개의 최상위 비트로 계산하기 위해 포함됩니다. 결과적으로 숫자 범위는 4개의 PGN 페이지에 정렬되지만 J1939에는 3개만 사용됩니다.
다음은 데이터 페이지 정의입니다.
길이가 8 바이트를 초과하는 메세지는 단일 CAN 데이터 프레임에 맞지 않습니다. 따라서 이들은 발신자에 의해 개별 패킷으로 분할되어야 하며, 그런 다음 각각 CAN 메세지와 함께 전송될 수 있습니다. 수신기는 원래 순서대로 개별 조각을 재결합해야 합니다. 이를 위해 J1939 표준(소위 전송 프로토콜)에 규칙 세트가 정의되어 있습니다.
통신 유형에 따라 두 가지 전송 프로토콜이 정의됩니다.
SAE J1939 Transport Protocol – Connection Mode Data Transfer (RTS/CTS)
연결 모드 데이터 전송 (RTS/CTS)
이 프로토콜을 사용하여 발신자는 수신자와의 연결을 설정합니다. 수신기에는 개별 데이터 패킷의 흐름 제어를 제어하고 영향을 주는 옵션이 있습니다. 수신자와 발신자 모두 연결을 중단할 수 있습니다. (예: 오류 발생 시)
연결 모드 데이터 전송 프로토콜에는 시간제한이 없습니다. 모든 노드는 잠재적으로 가능한 최대 속도로 서로 데이터를 교환합니다.
RTS/CTS 과정을 생략한채 데이터 전송, 응답여부와 상관없이 약속된 주기적으로 전송함,프로그래밍시 시스틱으로 발생시 동일주기를 한번에 전송시 버스 로드율이 높아질 수 있음으로 주의해야함, 브로드 캐스팅과 유사하나 PDU1 포맷임
발신자만 흐름 제어를 관리합니다. 메세지는 항상 모든 노드로 전송됩니다. 수신자는 통신에 개입할 수 없고 메세지를 놓치면 신호를 보낼 수 없습니다. 수신자는 필요한 경우 새 메세지를 기다려야 합니다.
수신자가 BAM 프로토콜의 흐름 제어에 영향을 줄 수 없기 때문에 발신자는 개별 패킷 사이에 최소 간격인 50-200ms을 유지해야 합니다. 이는 가능한 느린 네트워크 노드가 통신을 따를 수 있도록 합니다.
J1939 진단 인터페이스는 다양한 진단 서비스를 처리하기 위한 PGN 세트뿐만 아니라 표준 진단 커넥터를 정의합니다. Diagnositc Message(DM, 진단 메세지)로 지정된 PGN은 주로 UDS 진단(통합 진단 서비스)의 기능 범위를 충족합니다. 또한 EU 지침과 온보드 진단(OBD II)에 대한 "캘리포니아 규정 코드", HD OBD(Heavy Duty OBD) 및 WWH(World Wide Harmonized) OBD(ISO 27145)를 준수합니다.
소프트웨어 툴을 통해 서비스를 활발히 시작해야하는 UDS 진단과 달리 J1939 ECU는 표준 작동 중에 진단 메시지를 독립적으로 전송합니다. 발생하는 오류는 네트워크에서 직접 평가되고 필요한 경우 시각적으로 표시됩니다. 이와 동시에 진단 커넥터를 통해 툴로 오류를 판독할 수 있습니다. Diagnostic Trouble Code(DTC, 진단 고장 코드)라고하는 균일한 오류 코드에는 결함이 있는 SPN, 오류 패턴 및 오류 발생 빈도가 포함됩니다.
DTC는 시스템의 결함이 있는 속성을 나타냅니다. 주로 현재 상태가 비정상인 SPN을 나타냅니다. 이것은 다른 원인을 가질 수 있습니다. 상태에 대한 이유를 제공하는 표시기는 오류의 실제 원인을 좁히기 위해 사용됩니다. DTC는 균일한 구조를 가지며 다음 요소로 구성됩니다.
Suspect Parameter Number(SPN, 의심 파라미터 넘버)
오류가 있는 SPN을 나타냅니다. 정의된 모든 SPN은 DTC에서 사용할 수 있습니다.
Failure Mode Identifier (FMI, 고장 모드 식별자)
발생한 오류의 특성 및 유형을 나타냅니다.
예: 값 범위 위반(초과 또는 미달), 센서 단락, 잘못된 업데이트 속도, 교정 오류
Occurrence Counter (OC, 발생 카운터)
각 SPN에 대한 오류 조건의 발생을 계산하고 오류가 종료된 경우에도 이를 저장하는 카운터입니다.
SPN Conversion Method (SPN CM, SPN 변환 방법)
DTC 내에서 바이트 정렬을 정의합니다. 값 "0"은 그래픽 "DTC의 구조"에 표시된 방법을 나타냅니다. CM의 값이 "1"이면 이전에 유효한 세 가지 방법을 구분해야 합니다. 시스템에 대해 알고 있어야 합니다.
SAE J1939에서 파생된 표준이 있습니다. 이러한 표준은 J1939의 기본 설명을 사용하며 필요한 경우 데이터 정의 및 물리 계층의 적응이 다름.
참고자료
https://www.vector.com/kr/ko/know-how/protocols/sae-j1939/#c195607