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 - 요청된 서비스가 지원되지 않는 경우 부정 응답을 반환