-
현대차의 DTC(Diagnostic Trouble Code) 설명을 찾는 방법diagnostic 2024. 10. 25. 00:14
시작하기 전에
베뉴 ESC (a.k.a VDC: Vehicle Dynamics Control)를 대상으로 진단 통신을 하며 TSMaster의 UDS 기능 활용법을 설명하는 블로그를 준비 중이다.
UDS 서비스들 중에 Read DTC (Diagnostic Trouble Code) 라는 서비스가 있다. (UDS에 관해 구글링하면 많은 좋은 자료들을 쉽게 찾을 수 있다.) 기본 중에 기본인 UDS 서비스이다. 그래서 내 설명에도 등장한다. Read DTC 요청에 ESC는 DTC를 회신한다. 이 DTC가 무슨 의미인지 알면 전체 설명을 더 쉽게 이해할 것이라 생각한다. 그래서 인터넷에서 현대자동차 베뉴 ESC의 DTC와 DTC 설명을 검색했으나, 내 맘에 흡족한 자료를 찾지 못했다. 그래서 DTC와 DTC 설명 자료를 직접 만들기로 했다.
자료를 만들고 나니 그 과정이 다른 사람들에게도 유용할 것 같은 생각이 들었다. 그래서 이 과정을 블로그로 공유한다.
개요
- 현대기술정보 웹 사이트 (GSW: GlobalServiceWay) 에 접속한다.
- 통합 검색 화면에서, 차량 정보를 입력하고, "DTC 매뉴얼"을 체크하고, 검색창에 "VDC"를 입력하고 검색을 실행한다. (현대기술정보 웹 사이트에서는 ESC가 아닌 VDC가 공식 용어인 것 같다.)
- 검색 결과를 복붙하여 txt 파일에 저장한다.
- txt 파일에서 DTC와 Description을 추출하여 xlsx로 저장한다.
현대기술정보 웹 사이트
검색
- 통합 검색 화면에서, 차량 정보를 입력하고, "DTC 매뉴얼"을 체크하고, 검색창에 "VDC"를 입력하고 상세 검색 버튼을 클릭하여 검색한다.
- 한참 검색한다.
- ESC 보다 VDC로 하면 더 많은 검색 결과를 볼 수 있다.
- 검색 결과가 화면에 표시된다.
검색 결과를 복붙하여 txt 파일에 저장한다.
- 검색 결과를 선택하여 복사하기를 하면 복사가 안 된다.
- 나는 "웹 페이지 복사 방지 해제"라는 키워드로 구글링하여 찾은 방법으로 복사를 했다.
- 텍스트 편집기를 이용하여 txt를 만든다.
- 나는 베뉴_"VDC_DTC_현대기술정보.txt" 로 저장했다.
txt 파일에서 DTC와 Description을 추출하여 xlsx로 저장한다.
- 아래 코드로 txt를 처리하여 xlsx로 저장하였다.
from pathlib import Path import pandas as pd # 현대기술정보 홈페이지에서 복붙한 DTC와 DTC 설명이 있는 txt 파일을 읽는다. dtc_txt = Path('베뉴_VDC_DTC_현대기술정보.txt') with open(dtc_txt, 'r', encoding='utf-8') as f: lines = f.readlines() # DTC로 시작하는 라인의 마지막 단어가 DTC이다. # 바로 그 아래 줄이 DTC에 대한 설명이다. # DTC로 시작하는 라인의 마지막 단어가 DTC가 아닌 경우가 있다. # 마지막 단어가 C, P, B, U로 시작하는지 확인한다. 그렇지 않으면 다음 라인을 스킵한다. list_dtc = [] list_description = [] flag_skip_next_line = False for line in lines: if flag_skip_next_line: flag_skip_next_line = False continue if line.startswith('DTC'): dtc = line.split('>')[-1].strip() if not (dtc.startswith('P') or dtc.startswith('C') or dtc.startswith('B') or dtc.startswith('U')): flag_skip_next_line = True else: description = line.strip() list_dtc.append(dtc) list_description.append(description) # print(dtc, description) df_dtc = pd.DataFrame( { 'DTC': list_dtc, 'Description': list_description } ) # Description에 DTC 설명이 아닌 행들이 있다. 내가 찾는 Description은 '고장 코드 설명'이라는 구로 시작된다. Description의 시작이 '고장 코드 설명'이 아닌 행들은 삭제한다. df_dtc = df_dtc.loc[df_dtc['Description'].str.startswith('고장 코드 설명'), :] # 중복된 DTC를 제거한다. df_dtc = df_dtc.drop_duplicates(subset='DTC') # DTC 컬럼을 올림차순으로 정렬한다. df_dtc = df_dtc.sort_values(by='DTC') # Description 컬럼에서 '고장 코드 설명'을 제거한다. df_dtc['Description'] = df_dtc['Description'].str.replace('고장 코드 설명 ', '') # df_dtc를 xlsx로 저장한다. dtc_xlsx = dtc_txt.with_suffix('.xlsx') df_dtc.to_excel(dtc_xlsx, index=False)
결론
- 위와 같이 간단한 방법으로 현대자동차 베뉴 VDC의 DTC와 DTC 설명을 xlsx로 만들 수 있었다.
- 같은 방법으로 다른 시스템의 DTC와 설명을 찾고 xlsx로 만들 수 있다.
'diagnostic' 카테고리의 다른 글
UDS 진단 통신 (4 / t.b.d.) - ReadDTC 응답 해석을 위 미니프로그램 (1) 2024.10.25 UDS 진단 통신 (3 / t.b.d.) - 진단 요청/ 응답 메시지 설정 (0) 2024.10.25 UDS 진단 통신 (2 / t.b.d.) - Transport Protocol 설정 (0) 2024.10.25 UDS 진단 통신 (1 / t.b.d.) - Transport Protocol, UDS의 개요 (2) 2024.10.25