법규에서 명시된 항목을 진단기로 확인하기 위한 통신 표준
UDS와는 별도의 프로토콜이 정의되어 있음
북미, 내수, 유럽 사양 모두 J1979 기반 법규 통신 지원이 필요함
세부 진단 필요 항목은 법규마다 다를 수 있으나 통신 표준은 J1979 사용함
최근 UDS를 활용한 SAE J1979-2 등의 새로운 표준이 제정되었음
차량 진단을 위한 통신 표준
제조사, 제어기, 차량 옵션 등에 따라 진단 항목이 상이함
통신은 표준을 준수하되 진단 항목 및 방법은 OEM에서 정의함
OEM에서 정의한 스펙에 맞게 진단기 개발차량 진단 이외에 제조 공정에서 필요한 서비스도 개발함
E.g., 이모빌라이저 초기화 등
이들을 통해
수행

보통 진단 통신은 8B보다 큰 데이터 송수신이 필요함
VIN만해도 17바이트 이상의 송수신이 필요하기에 CAN-TP 상위 계층에서 진단 통신이 지원됨

Single Frame(7B 이하) : 한 번에 송수신 가능하나 잘 쓰이진 않음
Consecutive Frame(8B 이상) : CAN-TP의 존재 의의

SF_DL : Single Frame으로 전송되는 Data LEN
First frame(FF_DL) : 분할되어 전송되는 Data의 1st Frame으로 Data의 전체 LEN
Consecutive Frame : 분할되어 전송되는 Data의 2nd 이상 Frame으로
SN : sequence No를 뜻함(1부터 증가)
Flow Control : 수신측이 전달하는 내용으로 FF를 받고 진행함. 흐름 제어 기능
FS : Flow status로 0은 CTS(진행/재개/BS개 수신 준비 완료) /
1은 wait으로 송신기가 새 FC를 대기하게 만든다 /
2는 Overflow로 송신기 전송 중단이다
BS : Block Size로 블록당 CF의 절대 값
(FC없이 최대 수신할 수 있는 CF의 최대 개수를 나타냄)
단 00쓰면 그냥 계속 전송한다
STmin : Minimum Separation Time
CF 전송 사이 최소 시간 간격을 지정한다
00~7F :0ms~127ms(1당 1ms)
F1~F9 :100us~900us(1당 100us)
FA~FF :미사용
예를 들어 SF로 2B data 전송할 경우(무조건 8B단위로 송수신 하기에 미사용 Data는 Padding)

우선
MSB에는 0000(SF) 0002(LEN)
Byte 2 : 03
Byte 3 : 01
나머지 Padding으로 들어감
Consecutive의 경우, 10B를 전송할 경우
(수신 노드가 FC로 BS(4)/STmin(2)를 응답)

FF : 0x10(FF) 0x0A(10B) 이후 Data인 01 02 03 04 05 06 채워서 전송
FC : 0x30(FC,FS) 0x04(BS), 0x02(STmin) 이후 0 Padding
CF : 0x21(CF,SN) 이후 Data인 07 08 09 10 남은 곳은 Padding

ECU 별로 요청/응답 CAN ID가 정해져있음
Functional Addressing : Broadcast Request(0x7DF)
Physical Addressing :
Request to ECU(Engine Control Unit) : 0x7E0
Response from ECU : 0x7E8
0x7E0 ~ 0x7EF까지 ID를 정해뒀음.
각 동작 모드마다 Frame format이 정해져 있음
Mode 01 :

법규 진단 통신의 PID는 J1979DA에 정의되어 있고, 데이터 크기 및 물리값 계산 방법 정의 되어있음

이는 일부로 필수 표준 항목들이 더 있고 추가 항목은 자유임


DoIP대신 DoCAN을 쓰는 것 말고는 크게 다른 것은 없음
ISO 14229-1 : UDS
ISO 14229-2 : UDS Session layer services
UDS 및 모든 전송 프로토콜 및 NW 계층 서비스 간의 독립성 제공
"공통 세션 계층 서비스임"
ISO 15765-2 : DoCAN 전송 및 NW 계층 서비스(CAN-TP)
ISO 11898-1/ISO 11898-2/ISO 11898-3 : CAN 컨트롤러와 트랜시버

0x11 / 0x27 등 OTA 관련 SID들이 존재함

0x22 / 0x2E등 존재

DTC가 여기 있음

외에도 다른 SID들이 존재한다.
법규 통신의 경우 표준에 따라 모든 OEM들이 공통으로 따라야 하지만
UDS는 OEM별로 필요에 의해 개발하고 정의할 수 있음
(물론 표준은 있는데 표준이라 전 OEM이 다 같진 않음)
예를들어 해당 DID가 어떤 센서인지는 OEM별로 다름
다만 해석이 0001의 경우 1번 센서 읽기 이렇게 해석은 가능


긍정 응답의 경우 요청 SID에 +0x40을 수행하여 응답하고
DID(0x00 0x01) 이후에 DID의 값을 넣고 남은 곳은 Padding 처리한다.
값이 작은 경우에야 SF로 처리가 가능하겠지만, 큰 경우에는 CF로 처리해야 한다
예를 들면 VIN같은 경우