본문 바로가기
mobilgene/DCM

[DCM] DID 0xF190 설정부터 응답까지 (mobilgene 실무 전체 과정)

by Autosar 2026. 5. 6.
반응형

DCM에서 DID를 하나 추가하는 건 단순히 ID를 등록하는 작업이 아니다.

실제로는 DCM 설정 → RTE 연결 → SWC 구현까지 모두 이어져야 정상적으로 응답이 나온다.

 

AUTOSAR 환경에서 F190은 UDS(Unified Diagnostic Services, ISO 14229) 표준에 정의된 가장 대표적인 DID(Data Identifier)로, 차대 번호(VIN, Vehicle Identification Number)를 나타낸다.

 

진단기(Tester)가 ECU에 0x22 (Read Data By Identifier) 서비스와 함께 F190을 요청하면,

해당 차량의 고유한 VIN 번호를 반환하도록,

F190을 기준으로 mobilgene에서 설정부터 실제 응답까지 전 과정을 순서대로 정리한다.

 

1. Data 생성

 

Dcm → DcmConfigSet → DcmDsp → Data에서 Container를 하나 생성한다.

 

이 단계는 DID에서 사용할 실제 데이터 구조를 정의하는 단계로,

이후 DID와 연결되어 응답 데이터의 형태를 결정하게 된다.

 

- Short Name: 식별 가능하도록 명확하게 작성한다.

Byte Size: F190은 국제 표준으로 길이가 17바이트로 정해져 있으므로 17로 설정한다.

Condition Check Read Fnc Used: 요청 처리 전에 접근 가능 여부를 판단하기 위해 true로 설정한다.

Use Port: USE_DATA_ASYNCH_CLIENT_SERVER로 설정한다.

Info Ref: 항상 17 byte의 고정 길이를 가지는 데이터이므로 Variable Data가 아닌 Fixed Data로 설정한다.

(길이가 변하지 않는 데이터이기 때문에 Fixed Length로 처리해야 한다.)

 

2. Did Info 추가

 

Dcm → DcmConfigSet → DcmDsp → Did Info에서 Container를 하나 생성한다.

 

Short Name은 식별하기 쉽게 'DID_Info_F190_Vehicle_Identification_Number'로 설정한다.
이후 Did Read를 선택하여 하위 항목을 생성한다.

 

Did Info는 해당 DID가 어떤 방식으로 접근되는지를 정의하는 영역으로,

F190은 VIN을 읽는 용도로 사용되기 때문에 Read 기능을 활성화해야 한다.

 

3. Did 추가 및 Signal 연결

 

Dcm → DcmConfigSet → DcmDsp → Did에서 Container를 하나 생성한다.

 

- Short Name: 식별하기 쉽게 'DID_F190_Vehicle_Identification_Number'로 설정한다.

- Identifier: 0xF190

Used: true (해당 DID를 사용할 것이므로 활성화)

Info Ref: 앞에서 생성한 Did Info를 참조

 

Did는 실제 진단 요청과 매칭되는 영역으로,

Tester에서 0x22 F190 요청이 들어오면 이 설정을 기준으로 동작하게 된다.

 

이후 하단의 Signal을 선택하여 하위 항목을 생성하고, 앞에서 생성한 Data를 Data Ref로 연결한다.

Byte Offset은 데이터의 몇 번째 바이트부터 시작하는지 정의하는 곳으로 0으로 설정한다.

 

4. 하모나이즈 수행 후 Generate

 

모든 설정이 완료되면 먼저 Harmonize를 수행하여 설정 간 연결 상태를 정리한다.

이후 Generate를 수행한다.

 

Generate 수행 시, 설정이 하나라도 누락되어 있거나,

SWC 구현이 되어 있지 않다면 RTE 관련 에러가 발생할 수 있다.

generate 성공

 

5. RTE 함수 확인

 

Generate 후 아래와 같이 2개의 RTE 함수가 생성된다.

 

현재는 해당 Operation이 SWC와 연결되어 있지 않기 때문에,

RTE_UNUSED 상태이며 RTE_E_UNCONNECTED를 반환하는 형태로 생성된다.

 

USE_DATA_ASYNCH_CLIENT_SERVER 방식에서는 하나의 DID에 대해 두 개의 Operation이 생성된다.

- ConditionCheckRead: 해당 DID를 읽기 전에 조건을 확인하는 함수

- ReadData: 실제 데이터를 읽어오는 함수

 

즉, 요청 처리 전에 접근 가능 여부를 먼저 판단하고, 이후 실제 데이터를 읽는 구조로 분리되어 동작한다.

FUNC(Std_ReturnType, RTE_CODE) Rte_Call_Dcm_DataServices_Data_F190_Vehicle_Identification_Number_ConditionCheckRead(VAR(Dcm_OpStatusType, AUTOMATIC) OpStatus, P2VAR(Dcm_NegativeResponseCodeType, AUTOMATIC, RTE_APPL_DATA) ErrorCode)
{
  Rte_CallHook_Dcm_DataServices_Data_F190_Vehicle_Identification_Number_ConditionCheckRead_Start(OpStatus, ErrorCode);

  RTE_UNUSED(OpStatus);

  RTE_UNUSED(ErrorCode);
  Rte_CallHook_Dcm_DataServices_Data_F190_Vehicle_Identification_Number_ConditionCheckRead_Return(OpStatus, ErrorCode);
  /* Return RTE_E_UNCONNECTED */
  return RTE_E_UNCONNECTED;
}
FUNC(Std_ReturnType, RTE_CODE) Rte_Call_Dcm_DataServices_Data_F190_Vehicle_Identification_Number_ReadData(VAR(Dcm_OpStatusType, AUTOMATIC) OpStatus, P2VAR(uint8, AUTOMATIC, RTE_APPL_DATA) Data)
{
  Rte_CallHook_Dcm_DataServices_Data_F190_Vehicle_Identification_Number_ReadData_Start(OpStatus, Data);

  RTE_UNUSED(OpStatus);

  RTE_UNUSED(Data);
  Rte_CallHook_Dcm_DataServices_Data_F190_Vehicle_Identification_Number_ReadData_Return(OpStatus, Data);
  /* Return RTE_E_UNCONNECTED */
  return RTE_E_UNCONNECTED;
}

 

 

 6. SWC 구현 (VIN 데이터 설정)

 

SWC에서는 ConditionCheckRead와 ReadData 두 Operation을 구현하여,

요청 조건을 판단하고 실제 VIN 데이터를 반환하는 로직을 작성하게 된다.

 

해당 부분은 다음 편에서 이어서 다룬다.

 

정리

 

F190 설정은 단순한 DID 추가가 아니라 다음 흐름을 완성하는 작업이다.

1. Data 생성
2. Did Info 생성
3. Did 생성
4. Signal 연결
5. 하모나이즈 수행 후 Generate
6. SWC 구현
7. CANoe 검증

 

이 흐름이 모두 연결되어야 비로소 정상적인 VIN 응답이 만들어진다.

하나라도 누락되면 요청은 들어오지만 응답이 나오지 않는 문제가 발생한다.

반응형