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)ServiceDetailsSub function typesSub function
0x100x50Diagnostic Session ControlControl which UDS services are availableDiagnostic session type0x01 - 0x04
0x110x51ECU ResetReset the ECU (“hard reset”, “key off”, “soft reset”)Reset type0x01 - 0x05
0x270x67Security AccessEnable use of security-critical services via authenticationSecurity access type0x01 - 0x10
0x280x68Communication ControlTurn sending/receiving of messages on/off in the ECUControl type0x00 - 0x03
0x290x69AuthenticationEnable more advanced authentication vs. 0x27 (PKI based exchange)N/A<
0x3E0x7ETester PresentSend a “heartbeat” periodically to remain in the current session“Zero Sub function”0x00
0x830xC3Access Timing ParametersView/modify timing parameters used in client/server communicationTiming parameter access type0x01 - 0x02
0x840xC4Secured Data TransmissionSend encrypted data via ISO 15764 (Extended Data Link Security)N/A<
0x850xC5Control DTC SettingsEnable/disable detection of errors (e.g. used during diagnostics)DTC setting type0x01 - 0x02
0x860xC6Response On EventRequest that an ECU processes a service request if an event happensEvent type0x00 - 0x02
0x870xC7Link ControlSet the baud rate for diagnostic accessLink control type0x01 - 0x05
0x220x62Read Data By IdentifierRead data from targeted ECU - e.g. VIN, sensor data values etc.N/A<
0x230x63Read Memory By AddressRead data from physical memory (e.g. to understand software behavior)N/A<
0x240x64Read Scaling Data By IdentifierRead information about how to scale data identifiersN/A<
0x2A0x6ARead Data By Identifier PeriodicRequest ECU to broadcast sensor data at slow/medium/fast/stop rateN/A<
0x2C0x6CDynamically Define Data IdentifierDefine data parameter for use in 0x22 or 0x2A dynamicallyDefinition type0x01 - 0x03
0x2E0x6EWrite Data By IdentifierProgram specific variables determined by data parametersN/A<
0x3D0x7DWrite Memory By AddressWrite information to the ECU’s memoryN/A<
0x140x54Clear Diagnostic InformationDelete stored DTCsN/A<
0x190x59Read DTC InformationRead stored DTCs, as well as related informationReport type0x01 - 0x0D
0x2F0x6FInput Output Control By IdentifierGain control over ECU analog/digital inputs/outputsN/A<
0x310x71Routine ControlInitiate/stop routines (e.g. self-testing, erasing of flash memory)Routine control type0x01 - 0x03
0x340x74Request DownloadStart request to add software/data to ECU (incl. location/size)N/A<
0x350x75Request UploadStart request to read software/data from ECU (incl. location/size)N/A<
0x360x76Transfer DataPerform actual transfer of data following use of 0x74/0x75N/A<
0x370x77Request Transfer ExitStop the transfer of dataN/A<
0x380x78Request File TransferPerform a file download/upload to/from the ECUN/A<
0x7F<Negative ResponseSent with a Negative Response Code when a request cannot be handledN/A<

Diagnostic Session Control (0x10)

  • ECU가 진단 모드로 전환
  • 차량의 정상 모드에서 테스트 모드로 전환할 때 사용

📝

0x10 - 진단 세션을 시작하여 ECU를 테스트 모드로 전환

Diagnostic session type
(sub function value)
Diagnostic sessionDescription
0x01Default SessionOn Start of ECU, ECU runs in to default session.
0x02Programming SessionUsed to upload software.
0x03Extended Diagnostic SessionUsed to unlock additional diagnostic functions.
0x04Safety System Diagnostic SystemUsed 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)ResetDescription
0x01Hard ResetCompletely reboots the ECU.
0x02Key Off On ResetSimulates turning the key off and on, resetting the ECU.
0x03Soft ResetResets the ECU software without a full reboot.
0x04Enable Rapid Power Shut DownActivates rapid power shut down.
0x05Disable Rapid Power Shut DownDeactivates rapid power shut down.

Security Access (0x27)

  • 보안이 중요한 서비스를 사용하기 위해 인증을 활성화

📝

0x27 - ECU 보안 접근을 위해 암호화된 키를 요청

Security Access type
(Sub function value)
Security AccessDescription
0x01
0x03
0x05
0x07
0x09
0x0B
0x0D
0x0F
Request SeedRequests a seed for security access.
0x02
0x04
0x06
0x08
0x0A
0x0C
0x0E
0x10
Send KeySends 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)
ControlDescription
0x00Enable Rx and TxEnables both reception (Rx) and transmission (Tx).
0x01Enable Rx and Disable TxEnables reception and disables transmission.
0x02Disable Rx and Enable TxDisables reception and enables transmission.
0x03Disable Rx and TxDisables both reception and transmission.

Authentication (0x29)

  • 더 발전된 인증 절차를 사용하여 ECU에 접근

📝

0x29 - PKI 기반 인증을 사용하여 ECU 접근을 요청

Tester Present (0x3E)

  • 현재 세션을 유지하기 위해 주기적으로 “Heart Beat” 메시지를 전송

📝

0x3E - ECU가 현재 세션을 종료하지 않도록 Heart Beat를 전송

(Sub function value)functionDescription
0x00Zero Sub-FunctionIndicates 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 accessDescription
0x01Set Timing ParametersSets specific timing parameters.
0x02Get Timing ParametersRetrieves current timing parameters.

Secured Data Transmission (0x84)

  • ISO 15764를 통해 암호화된 데이터를 전송

📝

0x84 - 암호화된 진단 데이터를 ECU에 전송

Control DTC Settings (0x85)

  • 오류 감지를 활성화하거나 비활성화

📝

0x85 - 특정 오류 코드 감지를 비활성화

DTC Setting type
(Sub function value)
DTC SettingDescription
0x01DTC Setting OnActivates DTC setting.
0x02DTC Setting OffDeactivates DTC setting.

Response On Event (0x86)

  • 이벤트가 발생했을 때 ECU가 서비스 요청을 처리하도록 요청

📝

0x86 - 특정 조건이 만족되면 ECU가 응답하도록 설정

Event type
(Sub function value)
EventDescription
0x00Report EventsSends a response when specified events occur.
0x01Clear Event ReportingDisables event reporting.
0x02Report Events with Enhanced DataSends a response with additional data when events occur.
  • 진단 액세스를 위한 통신 속도를 설정

📝

0x87 - ECU와의 통신 속도를 500 kbps로 설정

Link control type
(Sub function value)
Link controlDescription
0x01Verify Link ControlVerifies the link status.
0x02Transition to Communication ModeSwitches to communication mode.
0x03Transition to Link Control ModeSwitches to link control mode.
0x04Transition to Sleep ModeSwitches to sleep mode.
0x05Terminate CommunicationEnds 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)
DefinitionDescription
0x01Define By IdentifierDefines a data identifier dynamically using existing identifiers.
0x02Define By Memory AddressDefines a data identifier dynamically using memory addresses.
0x03Clear Dynamically Defined Data IdentifierClears 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)
ReportDescription
0x01Number of DTC by Status MaskReports the number of DTCs matching the status mask.
0x02DTC by Status MaskReports the DTCs matching the status mask.
0x03DTC Snapshot IdentificationReports the identification of DTC snapshots.
0x04DTC Snapshot Record by DTC NumberReports the snapshot records by DTC number.
0x05DTC Stored Data by Record NumberReports the stored DTC data by record number.
0x06DTC Extended Data Record by DTC NumberReports the extended data records by DTC number.
0x07Number of DTC by Severity Mask RecordReports the number of DTCs matching the severity mask.
0x08DTC by Severity Mask RecordReports the DTCs matching the severity mask.
0x09Severity Information of DTCReports the severity information of a specific DTC.
0x0ASupported DTCReports the supported DTCs.
0x0BFirst Failed DTCReports the first failed DTC.
0x0CFirst Confirmed DTCReports the first confirmed DTC.
0x0DMost Recent Failed DTCReports the most recent failed DTC.
0x0EMost Recent Confirmed DTCReports the most recent confirmed DTC.
0x0FMirror Memory DTC by Status MaskReports the mirror memory DTCs matching the status mask.
0x10Mirror Memory DTC by DTC NumberReports the mirror memory DTCs by DTC number.
0x11Number of Mirror Memory DTC by Status MaskReports the number of mirror memory DTCs matching the status mask.
0x12Number of Emissions OBD DTC by Status MaskReports the number of emissions-related OBD DTCs matching the status mask.
0x13Emissions OBD DTC by Status MaskReports the emissions-related OBD DTCs matching the status mask.
0x14DTC Fault Detection CounterReports the DTC fault detection counter.
0x15DTC with Permanent StatusReports the DTCs with permanent status.
0x16DTC Extended Data Record by Record NumberReports the extended data records by record number.
0x17User Defined Memory DTC by Status MaskReports the user-defined memory DTCs matching the status mask.
0x18User Defined Memory DTC Snapshot by NumberReports the user-defined memory DTC snapshots by number.
0x19User Defined Memory DTC Record by NumberReports the user-defined memory DTC records by number.
0x42WWH-OBD DTC by Status Mask RecordReports the WWH-OBD DTCs matching the status mask.
0x55WWH-OBD DTCs with Permanent StatusReports 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 controlDescription
0x01Start RoutineStarts a specified routine.
0x02Stop RoutineStops a specified routine.
0x03Request Routine ResultsRequests 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 - 요청된 서비스가 지원되지 않는 경우 부정 응답을 반환