본문 바로가기

Automotive

SAE J1939 - Introduction

SAE J1939는 지난 20년간 중/대형 상용차 네트워크에 사용되던 SAE J1587/J1708 를 대체하는 프로토콜로서 상용차 진단 및 제어를 위한 통신 표준으로 자리잡았으며, 성공적인 활용으로 인해 농업용 기계 (ISO 11789) 및 해저 산업 (NMEA 2000)에서도 널리 사용되고 있다.

SAE J1939는 상위 레벨 통신 프로토콜로서, CAN (Controller Area Network) 버스를 구동하는데 사용되며, 차량에서 각 제어기간 어떤 정보들을 주고 받는지를 명확하게 명시하고 있다. 구체적으로 데이터 우선순위, 데이터의 크기, 스케일링, 오프셋 등을 명시하고 있다.

1. ECU(Electronic Control Unit, 전자제어장치):

  • 각 차량의 시스템(엔진, 변속기, 브레이크 등)을 제어하는 컴퓨터
  • 여러 ECU가 CAN 네트워크에 연결되어 데이터를 주고받는다.

2. CAN 버스:

  • 차량 내의 ECU 간 데이터 통신을 위한 물리적 네트워크.
  • 2개의 와이어로 구성된 차동 신호 방식으로 데이터를 전송한다.

3. PGN(Parameter Group Number):

  • 특정 데이터의 그룹을 나타내는 숫자 코드
  • 예를 들어, 엔진 속도, 냉각수 온도 등의 정보를 포함한다.

4. SPN(Suspect Parameter Number):

  • PGN 안의 특정 파라미터를 식별하는 숫자 코드
  • 예를 들어, 특정 센서의 값이나 상태 정보를 나타낸다.

5. 메시지 프레임:

  • CAN 버스를 통해 전송되는 데이터 패킷
  • 각 프레임에는 ID, 데이터 길이 코드(DLC), 데이터 필드 등이 포함된다.

6. 네트워크 관리:

  • J1939 네트워크의 구성, 모니터링, 오류 처리 등을 관리하는 메커니즘
  • 주소 관리, ECU의 상태 모니터링 등이 포함된다.

 

CA (Controller Application)

하나의 하드웨어에 탑재되는 소프트웨어를 나타내며, 주소값으로 표현된다. 예를 들면 중앙에 위치한 하나의 ECU는 Engine Controller, Turbocharger Controller, 그리고 Cruise Control Controller를 포함할 수 있는데, 이때 각각의 Controller가 하나의 CA가 된다. 이들 Controller가 설령 하나의 하드웨어에 포함되었다 하더라도, 논리적으로는 3개의 CA로 구성된다고 볼 수 있다.

 

Datalink

SAE J1939는 하나의 단순한 데이터 링크 계층을 사용한다. 29 비트 CAN 식별자로 인코딩 된 6 개의 하위 필드가 모두 아래에 나와 있으며 우선 순위, 확장 데이터 페이지, 데이터 페이지, 프로토콜 형식, 프로토콜 별 및 소스 주소이다.

P는 메시지의 우선 순위이며 EDP 및 DP는 4 개의 다른 페이지를 구성하며 한 페이지는 ISO 15765-3 용으로 예약되어 있으며 PF 및 PS는 매개 변수 그룹 번호와 대상 주소를 정의하고 SA는 컨트롤러 애플리케이션의 소스 주소이다.

 

Messages

J1939는 모든 J1939 메시지에 할당된 PGN (Parameter Group Number)이 있다. PGN은 메시지와 데이터를 식별하는 역할을 하며, 총 8,672 개의 PGN이 있습니다.

Message Sizes

J1939에는 3 byte, 8 byte 및 가변 길이의 세 가지 허용된 메시지 크기가 있으며 8 바이트입니다. 이렇게하면 메시지 수를 줄여 네트워크의 데이터 양을 최대화하여 네트워크 대역폭을보다 효율적으로 사용할 수 있다.

가변 길이 메시지는 길이가 9~1,785 byte인 메시지이다. 이러한 메시지는 너무 커서 단일 CAN 데이터 프레임에 맞지 않으며 송신기에 의해 조각화되고 수신기에 의해 재 조립되어야 한다. 

전송 프로토콜 계층은 BAM (Broadcast Announce Message)과 CM이라는 두 가지 유형의 메시지 조각화를 정의한다. 이 두 유형에는 몇 가지 차이점이 있으며 주요 차이점은 대상 주소인데, BAM은 전역 대상 주소를 사용하므로 모든 CA로 전송되는 반면 CM은 대상에 따라 다르다. 어드레싱 방식으로 인해 하나의 BAM 만 동시에 전송 될 수있는 반면, 서로 다른 대상 주소를 사용하는 여러 CM이 동시에 전송 될 수 있다.
BAM과 CM의 또 다른 차이점은 메시지를 보내는 데 걸리는 시간이다. BAM을 사용하는 경우 데이터 패킷의 간격은 50ms 이상 200ms를 넘지 않아야 하지만 CM을 사용하면 데이터 프레임이 최대한 빨리 전송 될 수 있다.

 

BAM (Broadcast Announce Message)

BAM은 크기가 8 byte보다 큰 정보를 모든 J1939 CA에 전송하는데 사용되며, 모든 헤더 정보는 TP.DT 프레임에 포함되며, TP.CM 프레임으로 전송된다.

 

SPN (Suspect Parameter Number) 

SPN은 J1939 파라미터 ID를 나타내며, 메시지 전송이 실패 했을때 파라미터를 식별하기 위해 사용된다.

SPN의 주요 특징 및 기능:

1. 고유 식별자:

  • SPN은 각 파라미터를 고유하게 식별할 수 있는 번호
  • 예를 들어, 엔진 속도, 냉각수 온도, 배터리 전압 등의 특정 값을 나타낸다.

2. 데이터 정의:

  • SPN은 특정 파라미터에 대한 상세 정보를 제공
  • 데이터 유형, 단위, 범위 등의 세부 사항을 포함한다.

3. 진단 코드:

  • SPN은 진단 및 고장 코드(DTC, Diagnostic Trouble Code)와 연계되어 사용
  • 특정 SPN에 대한 오류가 발생하면 해당 SPN이 포함된 DTC가 생성된다.

4. 표준화된 명명법:

  • SPN은 J1939 표준에 따라 정의되어 있어, 다양한 제조업체와 시스템 간의 호환성을 보장
  • 표준화된 SPN 리스트는 차량 유지보수 및 진단에 있어 일관성을 제공한다.

 

DTC (Diagnostic Trouble Code)

SAE J1939에서 DTC는 fault code라고도 불리며, 전송이 실패된 파라미터들을 식별하는 역할을 한다. DTC에는 전송 실패한 파라미터의 SPN, 전송 실패 카운터, 실패 방법이 포함된다.
Active DTC는 DM1 메시지에 의해 전송되는 반면 Non-Active DTC (즉, 이전의 DTC)는 DM2 메시지에 의해 전송된다. DM1 및 DM2 메시지에는 여러 DTC가 포함될 수 있으며 이는 메시지가 TP (Transport Protocol)를 사용하여 전송 될 수 있음을 의미한다.