SIDs (Serivce Identifiers)
Serivce Identifiers : 차량의 UDS (Unified Diagnostic Services, ISO 14229) 프로토콜에서 사용되는 주요 명령어들로, 특정 진단 서비스를 호출하는 데 사용됩니다. 각 SID는 특정 진단 기능을 수행하기 위한 요청을 나타내며, ECU(Electronic Control Unit)가 이 요청을 수신하고 해당 서비스에 대해 적절한 응답을 반환합니다.
- 차량의 ECU와 진단 도구 간의 통신에서 사용되는 특정 명령 또는 서비스를 식별하는 고유한 코드
 - 각 SID는 ECU가 수행해야 할 진단 작업을 정의
 - UDS 프로토콜에서 SIDs는 특정 기능을 요청하거나 실행하기 위해 사용
 
| UDS SID (request) | UDS SID (response) | Service | Details | Sub function types | Sub function | 
|---|---|---|---|---|---|
| 0x10 | 0x50 | Diagnostic Session Control | Control which UDS services are available | Diagnostic session type | 0x01 - 0x04 | 
| 0x11 | 0x51 | ECU Reset | Reset the ECU (“hard reset”, “key off”, “soft reset”) | Reset type | 0x01 - 0x05 | 
| 0x27 | 0x67 | Security Access | Enable use of security-critical services via authentication | Security access type | 0x01 - 0x10 | 
| 0x28 | 0x68 | Communication Control | Turn sending/receiving of messages on/off in the ECU | Control type | 0x00 - 0x03 | 
| 0x29 | 0x69 | Authentication | Enable more advanced authentication vs. 0x27 (PKI based exchange) | N/A | < | 
| 0x3E | 0x7E | Tester Present | Send a “heartbeat” periodically to remain in the current session | “Zero Sub function” | 0x00 | 
| 0x83 | 0xC3 | Access Timing Parameters | View/modify timing parameters used in client/server communication | Timing parameter access type | 0x01 - 0x02 | 
| 0x84 | 0xC4 | Secured Data Transmission | Send encrypted data via ISO 15764 (Extended Data Link Security) | N/A | < | 
| 0x85 | 0xC5 | Control DTC Settings | Enable/disable detection of errors (e.g. used during diagnostics) | DTC setting type | 0x01 - 0x02 | 
| 0x86 | 0xC6 | Response On Event | Request that an ECU processes a service request if an event happens | Event type | 0x00 - 0x02 | 
| 0x87 | 0xC7 | Link Control | Set the baud rate for diagnostic access | Link control type | 0x01 - 0x05 | 
| 0x22 | 0x62 | Read Data By Identifier | Read data from targeted ECU - e.g. VIN, sensor data values etc. | N/A | < | 
| 0x23 | 0x63 | Read Memory By Address | Read data from physical memory (e.g. to understand software behavior) | N/A | < | 
| 0x24 | 0x64 | Read Scaling Data By Identifier | Read information about how to scale data identifiers | N/A | < | 
| 0x2A | 0x6A | Read Data By Identifier Periodic | Request ECU to broadcast sensor data at slow/medium/fast/stop rate | N/A | < | 
| 0x2C | 0x6C | Dynamically Define Data Identifier | Define data parameter for use in 0x22 or 0x2A dynamically | Definition type | 0x01 - 0x03 | 
| 0x2E | 0x6E | Write Data By Identifier | Program specific variables determined by data parameters | N/A | < | 
| 0x3D | 0x7D | Write Memory By Address | Write information to the ECU’s memory | N/A | < | 
| 0x14 | 0x54 | Clear Diagnostic Information | Delete stored DTCs | N/A | < | 
| 0x19 | 0x59 | Read DTC Information | Read stored DTCs, as well as related information | Report type | 0x01 - 0x0D | 
| 0x2F | 0x6F | Input Output Control By Identifier | Gain control over ECU analog/digital inputs/outputs | N/A | < | 
| 0x31 | 0x71 | Routine Control | Initiate/stop routines (e.g. self-testing, erasing of flash memory) | Routine control type | 0x01 - 0x03 | 
| 0x34 | 0x74 | Request Download | Start request to add software/data to ECU (incl. location/size) | N/A | < | 
| 0x35 | 0x75 | Request Upload | Start request to read software/data from ECU (incl. location/size) | N/A | < | 
| 0x36 | 0x76 | Transfer Data | Perform actual transfer of data following use of 0x74/0x75 | N/A | < | 
| 0x37 | 0x77 | Request Transfer Exit | Stop the transfer of data | N/A | < | 
| 0x38 | 0x78 | Request File Transfer | Perform a file download/upload to/from the ECU | N/A | < | 
| 0x7F | < | Negative Response | Sent with a Negative Response Code when a request cannot be handled | N/A | < | 
Diagnostic Session Control (0x10)
- ECU가 진단 모드로 전환
 - 차량의 정상 모드에서 테스트 모드로 전환할 때 사용
 
0x10 - 진단 세션을 시작하여 ECU를 테스트 모드로 전환
| Diagnostic session type (sub function value)  | 
      Diagnostic session | Description | 
|---|---|---|
| 0x01 | Default Session | On Start of ECU, ECU runs in to default session. | 
| 0x02 | Programming Session | Used to upload software. | 
| 0x03 | Extended Diagnostic Session | Used to unlock additional diagnostic functions. | 
| 0x04 | Safety System Diagnostic System | Used to test all safety critical diagnostic functions. | 
sequenceDiagram
  participant PduR
  participant Dsl
  participant Dsd
  participant Dsp
  PduR ->>+ Dsl: Dcm_TpRxIndication(PduIdType,<br>Std_ReturnType)
  activate PduR
  Dsl->>+ Dsd: Data_Indication_functionality()
  Dsd->>+ Dsp: DiagnosticSessionControl service<br>interpreter()
  Dsp -->>- Dsd: DiagnosticSessionControl service<br>interpreter()
  Dsd -->>- Dsl: Data_Indication_functionality()
  Dsl -->>- PduR: Dcm_TpRxIndication()
  PduR ->>+ Dsl: Dcm_TpTxConfirmation(PduIdType,<br>Std_ReturnType)
  Dsl->>+ Dsd: Data_Confirmation_functionality()
  Dsd->>+ Dsp: DspInternal_DcmConfirmation(<br>Dcm_IdContextType, PduIdType,<br>Dcm_ConfirmationStatusType)
  Dsp -->>- Dsd: DspInternal_DcmConfirmation()
  Dsd -->>- Dsl: Data_Confirmation_functionality()
  Dsl -->>- PduR: Dcm_TpTxConfirmation()
  deactivate PduR
ECU Reset (0x11)
- ECU를 재설정
 - 하드 리셋, 키 오프 또는 소프트 리셋을 포함
 
0x11 - 하드 리셋 명령을 보내 ECU를 재부팅
| Reset type (sub function value) | Reset | Description | 
|---|---|---|
| 0x01 | Hard Reset | Completely reboots the ECU. | 
| 0x02 | Key Off On Reset | Simulates turning the key off and on, resetting the ECU. | 
| 0x03 | Soft Reset | Resets the ECU software without a full reboot. | 
| 0x04 | Enable Rapid Power Shut Down | Activates rapid power shut down. | 
| 0x05 | Disable Rapid Power Shut Down | Deactivates rapid power shut down. | 
Security Access (0x27)
- 보안이 중요한 서비스를 사용하기 위해 인증을 활성화
 
0x27 - ECU 보안 접근을 위해 암호화된 키를 요청
| Security Access type (Sub function value)  | 
      Security Access | Description | 
|---|---|---|
| 0x01 0x03 0x05 0x07 0x09 0x0B 0x0D 0x0F  | 
      Request Seed | Requests a seed for security access. | 
| 0x02 0x04 0x06 0x08 0x0A 0x0C 0x0E 0x10  | 
      Send Key | Sends a key corresponding to the requested seed. | 
sequenceDiagram
  participant PduR
  participant Dsl
  participant Dsd
  participant Dsp
  participant Dcm User
  
  critical Request Seed
  PduR ->>+ Dsl: Dcm_TpRxIndication(PduIdType,<br>Std_ReturnType)
  activate PduR
  Dsl->>+ Dsd: Data_Indication_functionality()
  Dsd->>+ Dsp: SecurityAccess service<br>interpreter()
  Dsp ->>+ Dcm User: GetSeed(Std_ReturnType,<br>uint8*, Dcm_OpStatusType, uint8*,<br>Dcm_NegativeResponseCodeType*)
  Dcm User -->> Dsp: GetSeed()
	deactivate Dcm User
	deactivate Dsp
	deactivate Dsd
	deactivate Dsl
	end
  critical Compare Key
  PduR ->>+ Dsl: Dcm_TpRxIndication(PduIdType,<br>Std_ReturnType)
  activate PduR
  Dsl->>+ Dsd: Data_Indication_functionality()
  Dsd->>+ Dsp: SecurityAccess service<br>interpreter()
  Dsp ->>+ Dcm User: CompareKey(Std_ReturnType,<br>uint8*, Dcm_OpStatusType)
  Dcm User -->>- Dsp: Dcm_CompareKey()
  Dsp ->>+ Dsl: Dcm_SetSecurityLevel(Dcm_SecLevelType)
	deactivate Dsl
	deactivate Dsd
  Dsl -->> Dsp : Dcm_SetSecurityLevel()
	deactivate Dsp
	deactivate Dsl
  deactivate PduR
	end
Communication Control (0x28)
- ECU의 메시지 송수신 기능을 켜거나 끔
 
0x28 - ECU의 모든 통신을 비활성화
| Control type (Sub function value)  | 
      Control | Description | 
|---|---|---|
| 0x00 | Enable Rx and Tx | Enables both reception (Rx) and transmission (Tx). | 
| 0x01 | Enable Rx and Disable Tx | Enables reception and disables transmission. | 
| 0x02 | Disable Rx and Enable Tx | Disables reception and enables transmission. | 
| 0x03 | Disable Rx and Tx | Disables both reception and transmission. | 
Authentication (0x29)
- 더 발전된 인증 절차를 사용하여 ECU에 접근
 
0x29 - PKI 기반 인증을 사용하여 ECU 접근을 요청
Tester Present (0x3E)
- 현재 세션을 유지하기 위해 주기적으로 “Heart Beat” 메시지를 전송
 
0x3E - ECU가 현재 세션을 종료하지 않도록 Heart Beat를 전송
| (Sub function value) | function | Description | 
|---|---|---|
| 0x00 | Zero Sub-Function | Indicates the tester is present. | 
sequenceDiagram
  participant PduR
  participant Dsl
  participant Dsd
  participant Dsp
  
  critical Tester Present with positive response
  PduR ->>+ Dsl: Dcm_TpRxIndication(PduIdType,<br>Std_ReturnType)
  activate PduR
  Dsl->>+ Dsd: Data_Indication_functionality()
  Dsd->>+ Dsp: TesterPresent service<br>interpreter()
  Dsp -->>- Dsd: TesterPresent service<br>interpreter()
  Dsd -->>- Dsl: Data_Indication_functionality()
  Dsl -->>- PduR: Dcm_TpRxIndication()
	end
  critical Tester Present with negative response
  PduR ->>+ Dsl: Dcm_TpRxIndication(PduIdType,<br>Std_ReturnType)
  Dsl->>+ Dsd: Data_Indication_functionality()
  Dsd->>+ Dsp: TesterPresent service<br>interpreter()
  Dsp -->>- Dsd: TesterPresent service<br>interpreter()
  Dsd -->>- Dsl: Data_Indication_functionality()
  Dsl -->>- PduR: Dcm_TpRxIndication()
  deactivate PduR
	end
Access Timing Parameters (0x83)
- 클라이언트/서버 통신에 사용되는 타이밍 매개변수를 조회하거나 수정
 
0x83 - 타이밍 매개변수를 수정하여 통신 지연 시간을 줄임
| Timing parameter access Type (Sub function value)  | 
      Timing parameter access | Description | 
|---|---|---|
| 0x01 | Set Timing Parameters | Sets specific timing parameters. | 
| 0x02 | Get Timing Parameters | Retrieves current timing parameters. | 
Secured Data Transmission (0x84)
- ISO 15764를 통해 암호화된 데이터를 전송
 
0x84 - 암호화된 진단 데이터를 ECU에 전송
Control DTC Settings (0x85)
- 오류 감지를 활성화하거나 비활성화
 
0x85 - 특정 오류 코드 감지를 비활성화
| DTC Setting type (Sub function value)  | 
      DTC Setting | Description | 
|---|---|---|
| 0x01 | DTC Setting On | Activates DTC setting. | 
| 0x02 | DTC Setting Off | Deactivates DTC setting. | 
Response On Event (0x86)
- 이벤트가 발생했을 때 ECU가 서비스 요청을 처리하도록 요청
 
0x86 - 특정 조건이 만족되면 ECU가 응답하도록 설정
| Event type (Sub function value)  | 
      Event | Description | 
|---|---|---|
| 0x00 | Report Events | Sends a response when specified events occur. | 
| 0x01 | Clear Event Reporting | Disables event reporting. | 
| 0x02 | Report Events with Enhanced Data | Sends a response with additional data when events occur. | 
Link Control (0x87)
- 진단 액세스를 위한 통신 속도를 설정
 
0x87 - ECU와의 통신 속도를 500 kbps로 설정
| Link control type (Sub function value)  | 
      Link control | Description | 
|---|---|---|
| 0x01 | Verify Link Control | Verifies the link status. | 
| 0x02 | Transition to Communication Mode | Switches to communication mode. | 
| 0x03 | Transition to Link Control Mode | Switches to link control mode. | 
| 0x04 | Transition to Sleep Mode | Switches to sleep mode. | 
| 0x05 | Terminate Communication | Ends the communication session. | 
Read Data By Identifier (0x22)
- 타겟 ECU로부터 데이터를 읽어옴
 
0x22 - 차량의 VIN 번호를 ECU로부터 읽어옴
Read Memory By Address (0x23)
- 타켓 ECU로부터 물리적 메모리에서 데이터를 읽어옴
 
0x23 - ECU의 특정 메모리 주소에서 데이터를 읽어옴
Read Scaling Data By Identifier (0x24)
- 데이터 식별자의 스케일링 정보를 읽어옴
 
0x24 - 센서 데이터의 스케일링 정보를 조회
Read Data By Identifier Periodic (0x2A)
- ECU에 센서 데이터를 주기적으로 방송하도록 요청
 
0x2A - ECU가 센서 데이터를 초당 1회 주기로 방송하도록 설정
Dynamically Define Data Identifier (0x2C)
- 0x22 또는 0x2A에서 동적으로 사용할 데이터 매개변수를 정의
 
0x2C - 새로운 데이터 식별자를 동적으로 정의
| Definition type (Sub function value)  | 
      Definition | Description | 
|---|---|---|
| 0x01 | Define By Identifier | Defines a data identifier dynamically using existing identifiers. | 
| 0x02 | Define By Memory Address | Defines a data identifier dynamically using memory addresses. | 
| 0x03 | Clear Dynamically Defined Data Identifier | Clears previously defined data identifiers. | 
Write Data By Identifier (0x2E)
- 데이터 매개변수에 의해 결정된 특정 변수를 프로그래밍
 
0x2E - ECU의 특정 설정 값을 업데이트
Write Memory By Address (0x3D)
- ECU 메모리에 정보를 작성
 
0x3D - ECU의 특정 메모리 위치에 데이터를 작성
Clear Diagnostic Information (0x14)
- 저장된 DTC(진단 트러블 코드)를 삭제
 
0x14 - ECU에서 모든 DTC를 삭제
Read DTC Information (0x19)
- 저장된 DTC와 관련 정보를 읽어옴
 
0x19 - ECU에서 현재 저장된 모든 DTC를 읽어옴
| Report type (sub function value)  | 
      Report | Description | 
|---|---|---|
| 0x01 | Number of DTC by Status Mask | Reports the number of DTCs matching the status mask. | 
| 0x02 | DTC by Status Mask | Reports the DTCs matching the status mask. | 
| 0x03 | DTC Snapshot Identification | Reports the identification of DTC snapshots. | 
| 0x04 | DTC Snapshot Record by DTC Number | Reports the snapshot records by DTC number. | 
| 0x05 | DTC Stored Data by Record Number | Reports the stored DTC data by record number. | 
| 0x06 | DTC Extended Data Record by DTC Number | Reports the extended data records by DTC number. | 
| 0x07 | Number of DTC by Severity Mask Record | Reports the number of DTCs matching the severity mask. | 
| 0x08 | DTC by Severity Mask Record | Reports the DTCs matching the severity mask. | 
| 0x09 | Severity Information of DTC | Reports the severity information of a specific DTC. | 
| 0x0A | Supported DTC | Reports the supported DTCs. | 
| 0x0B | First Failed DTC | Reports the first failed DTC. | 
| 0x0C | First Confirmed DTC | Reports the first confirmed DTC. | 
| 0x0D | Most Recent Failed DTC | Reports the most recent failed DTC. | 
| 0x0E | Most Recent Confirmed DTC | Reports the most recent confirmed DTC. | 
| 0x0F | Mirror Memory DTC by Status Mask | Reports the mirror memory DTCs matching the status mask. | 
| 0x10 | Mirror Memory DTC by DTC Number | Reports the mirror memory DTCs by DTC number. | 
| 0x11 | Number of Mirror Memory DTC by Status Mask | Reports the number of mirror memory DTCs matching the status mask. | 
| 0x12 | Number of Emissions OBD DTC by Status Mask | Reports the number of emissions-related OBD DTCs matching the status mask. | 
| 0x13 | Emissions OBD DTC by Status Mask | Reports the emissions-related OBD DTCs matching the status mask. | 
| 0x14 | DTC Fault Detection Counter | Reports the DTC fault detection counter. | 
| 0x15 | DTC with Permanent Status | Reports the DTCs with permanent status. | 
| 0x16 | DTC Extended Data Record by Record Number | Reports the extended data records by record number. | 
| 0x17 | User Defined Memory DTC by Status Mask | Reports the user-defined memory DTCs matching the status mask. | 
| 0x18 | User Defined Memory DTC Snapshot by Number | Reports the user-defined memory DTC snapshots by number. | 
| 0x19 | User Defined Memory DTC Record by Number | Reports the user-defined memory DTC records by number. | 
| 0x42 | WWH-OBD DTC by Status Mask Record | Reports the WWH-OBD DTCs matching the status mask. | 
| 0x55 | WWH-OBD DTCs with Permanent Status | Reports the WWH-OBD DTCs with permanent status. | 
Input Output Control By Identifier (0x2F)
- ECU 아날로그/디지털 입력/출력을 제어
 
0x2F - 특정 출력 핀을 활성화
Routine Control (0x31)
- 테스트 루틴을 시작하거나 중지합니다 (예: 자가 테스트, 플래시 메모리 지우기)
 
0x31 - ECU의 자가 테스트 루틴을 시작
| Routine control type (Sub function value)  | 
      Routine control | Description | 
|---|---|---|
| 0x01 | Start Routine | Starts a specified routine. | 
| 0x02 | Stop Routine | Stops a specified routine. | 
| 0x03 | Request Routine Results | Requests the results of a specified routine. | 
Request Download (0x34)
- ECU에 소프트웨어/데이터 추가를 요청합니다 (위치/크기 포함)
 
0x34 - ECU에 새로운 소프트웨어를 다운로드
Request Upload (0x35)
- ECU에서 소프트웨어/데이터를 읽어오도록 요청합니다 (위치/크기 포함)
 
0x35 - ECU에서 데이터를 업로드
Transfer Data (0x36)
- 0x74/0x75 명령 후 실제 데이터를 전송
 
0x36 - ECU로 데이터 전송을 수행
Request Transfer Exit (0x37)
- 데이터 전송을 중지
 
0x37 - 현재 진행 중인 데이터 전송을 중지
Request File Transfer (0x38)
- ECU와의 파일 다운로드/업로드를 수행
 
0x38 - ECU와 파일 업로드를 수행
Negative Response (0x7F)
- 요청이 처리될 수 없을 때 부정 응답 코드와 함께 전송
 
0x7F - 요청된 서비스가 지원되지 않는 경우 부정 응답을 반환