# UDB 진단 통신의 개요

- UDS 통신 기본 원리
- UDS 통신은 기본적으로 Request와 Response 방식으로 동작함.
- 제어기에게 명령을 보내면, 제어기가 그 명령을 해석하고 맞게 동작한 후 응답을 보냄.
- 서비스 용어 사용
- 이 과정에서 서비스라는 용어가 사용됨.
- ISO 14229에서 실제로 사용하는 용어로, 앞서 말한 명령들의 집합을 서비스라고 부름.
- OBD(On-board Diagnostics) 프로토콜
- 법적 의무 사항. 주로 차량 배기가스와 연관된 정보
- 사용자에게 (오류 사항을 램프을 통해 알려줘야한다)
- SAE - Society of Automotive Engineers
다양한 서비스의 종류
- SID: Service ID
(16진수로 표현되어 있음)
(hex 또는 앞에 0x가 적혀 있음)
주요 서비스 목록

- DiagnosticSessionControl - 10 hex
- ECUReset - 11 hex
- SecurityAccess - 27 hex
- CommunicationControl - 28 hex
- TesterPresent - 3E hex
- AccessTimingParameter - 83 hex
- SecuredDataTransmission - 84 hex
- ControlDTCSetting - 85 hex
- ResponseOnEvent - 86 hex
- LinkControl - 87 hex
- ReadDataByIdentifier - 22 hex
- ReadMemoryByAddress - 23 hex
- ReadScalingDataByIdentifier - 24 hex
- ReadDataByPeriodicIdentifier - 2A hex
- DynamicallyDefineDataIdentifier - 2C hex
- WriteDataByIdentifier - 2E hex
- WriteMemoryByAddress - 3D hex
- ClearDiagnosticInformation - 14 hex
- ReadDTCInformation - 19 hex
- InputOutputControlByIdentifier - 2F hex
- RoutineControl - 31 hex
- RequestDownload - 34 hex
- RequestUpload - 35 hex
- TransferData - 36 hex
- RequestTransferExit - 37 hex
추가 설명
- 0~15번은 비워져 있음.
- 이유: OBD를 위해서임.
- OBD에서는 동일한 위치에 있는 값을 Mode라고 부름.
- 기능도 유사함.
## CAN BD안의 진단 관련 정보

이 이미지는 CAN 통신 네트워크 구성 정보에 대한 슬라이드로, 표에는 다음 세 가지 항목이 있습니다:
- 메시지 ID: 메시지의 식별자.
- 전송 제어기: 메시지를 전송하는 제어기.
- 담기는 데이터: 메시지에 포함된 데이터.
표의 내용은 다음과 같습니다:
- 메시지 ID 1: 조향 제어기 (조향 각도, 배터리 전압)
- 메시지 ID 2: 조향 제어기 (xx정보)
- 메시지 ID 3: 엔진 제어기 (엔진 RPM)
- 메시지 ID 4: 진단 메시지 (조향 제어기용, Physical)
- 메시지 ID 5: 진단 메시지 (제동 제어기용, Physical)
- 메시지 ID 6: 진단 메시지 (Functional Address)
## Physical Address 와 Functional Address 차이

- Physical Address: 특정 ECU에게 명령을 내리는 방식.
- Functional Address: 모든 ECU에게 동시에 명령을 내리는 방식.
또한, CAN 메시지에는 ID가 포함되어 있으며, 이 ID를 이용해서 각 메시지를 구분할 수 있다
- 메시지의 구분
- CAN 메시지의 아이디를 통해 메시지 수신 대상을 구분함.
- Physical과 Functional이라는 용어 사용.
- EDS 통신에서의 정의
- Physical Address와 Functional Address에 대한 EDS 통신에서의 정의.
- Physical Address의 의미
- Physical Address는 여러 개의 ECU 중에서 하나를 선택하여 연결.
- Functional Address는 모든 제어기에게 동시에 명령을 전달할 때 사용.
- Functional Address와의 비교
- Functional Address가 없으면 제어기가 여러 리퀘스트를 각각 보내야 함.
- Physical Address는 명확히 어떤 제어기에게 메시지가 전달되는 방식.
- 정리
- Physical Address와 Functional Address의 차이를 설명하고, 특정 제어기에게 명령을 전달하는 Physical Address 사용 필요성.
코딩을 4 OR 6일떄 진행,
왜냐하면 6은 Functional 하게 진행하기 때문이다. (모든 제어기)

## 응답 메세지의 포멧
- 첫 번째 바이트 해석
- 0x40을 사용하여 포스티브 메시지 식별.
- 첫 번째 바이트를 통해 메시지를 해석하는 방법 설명.
- 서비스 0x22의 명령 처리
- ECU가 0x22 서비스 명령을 처리하지 않았을 때 어떻게 대응하는지 설명.
- ECU가 처리하지 않았을 경우 부정적 응답 메시지 전송.
- 긍정적 응답

- 부정적인 응답
- 부정적 응답 처리
- 첫 번째 바이트 값으로 7을 쓰고 두 번째 바이트에 0x22 값 입력.
- 부정적 응답 코드(nrc)를 통해 ECU의 상태를 전달하는 방식 설명.
- 부정적 응답 분석
- 왜 부정적 응답을 받았는지에 대한 ECU 측 이유 설명.
- 부정적 응답 코드(nrc) 분석 및 해석.

- 결론
- 부정적 응답 이유와 코드가 메시지에 어떻게 반영되는지 설명.
- 문제가 발생했을 때 응답을 못한 이유와 결과 분석.
## NRC (Negative Response Code)

- NRC(Negative Response Code) 코드 종류
- 0x10: generalReject (명령되지 않은 모든 경우)
- 0x11: serviceNotSupported (서비스가 지원되지 않음)
- 0x12: subFunctionNotSupported (서브 기능 미지원)
- 0x24: requestSequenceError (요청 순서 오류)
- 0x31: requestOutOfRange (요청 범위 초과)
- 0x33: securityAccessDenied (보안 접근 거부)
- 0x88: vehicleSpeedTooHigh (차량 속도 과다)
- 0x89: vehicleSpeedTooLow (차량 속도 부족)
- NRC(0x100)와 0x22 서비스 처리
- 0x100 코드의 의미와 제너럴 코드 사용 설명.
- 0x22 서비스 명령을 처리하지 못하는 상황.
- RequestSequenceError 처리
- 메시지 전송 순서와 오류 발생 시 대응 방법.
- 순서에 따른 메시지 처리 방식 설명.
- NRC 정의와 사용
- 다양한 NRC 코드의 정의와 그 의미.
- 특정 오류 발생 시 제어기 반응 설명.
## suppressPosRspMsgIndicationBit

- suppressPosRspMsgIndicationBit의 개념
- Positive Response를 하지 말라는 명령의 역할.
- suppress bit가 1일 경우 답변을 하지 않고, 0일 경우 답변을 함.
- 통신 부하량 감소 기능
- 통신 부하를 줄이기 위한 suppress 기능 설명.
- Positive Response를 생략함으로써 통신 효율을 높이는 목적.
- 기능 구현 방식
- suppress bit 설정의 실제 용도 및 적용 사례.
- 예를 들어 reset 명령을 보낼 때 답변을 하지 않고 리셋을 수행하는 기능.
- SID와 Byte 처리 방식 설명
- SID에 대한 설명과 두 번째 Byte에 비트 설정 방식 설명.
- 첫 번째 bit 설정에 따른 Positive 또는 Negative 응답 처리 방식
## 요약

- Test(진단기)의 요청 및 ECU의 응답과 동작 구성
- Physical Address와 Functional Address 방식을 사용.
- 서비스 요청과 SID
- 요청하는 명령을 Service라 부르며, Service마다 SID가 존재함.
- SID의 위치는 첫 번째 바이트이고, 1byte 숫자임.
- 응답 메시지
- Positive와 Negative 두 가지 형태의 응답 메시지가 있음.
- NRC (Negative Response Code)
- 부정적인 응답 코드와 그 사용.
- suppressPosRspMsgIndicationBit
- Positive Response를 억제하는 비트 설명.
'회사 > UDS' 카테고리의 다른 글
진단통신(UDS) 개념 (섹션8_) CAN TP 프로토콜 개요 (1) | 2024.10.13 |
---|---|
진단통신(UDS) 개념 (섹션8_1) CAN TP 프로토콜 개요 (1) | 2024.10.13 |
진단통신(UDS) 개념 (섹션3_5) (2) | 2024.10.13 |