반응형 전체 글176 Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #12 - CSVReader와 DIDParser를 이용한 시험 정보 관리 지난 글에서는 Report 클래스를 구현하여 자동 진단 시험 결과를 CSV 파일로 저장하는 기능을 구현하였다.지금까지 구현한 Application, TestEngine, Report를 통해 ECU와 통신하고 시험 결과를 저장하는 기능은 완성되었다. 하지만 아직 한 가지 중요한 기능이 남아 있다. 자동 진단 프로그램은 ECU 정보와 시험 항목을 코드에 직접 작성하지 않고 CSV 파일에서 읽어와야 하며, ECU 응답에서도 필요한 데이터 영역만 추출하여 해석할 수 있어야 한다. 이번 글에서는 CSVReader 클래스를 구현하여 Target.csv와 DID_LIST.csv를 읽는 방법을 살펴보고, DIDParser 클래스를 이용하여 UDS 응답에서 필요한 데이터 영역을 추출하는 과정을 구현해보겠다. 1. CS.. 2026. 8. 10. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #11 - Report 클래스 구현 및 시험 결과 CSV 저장 지난 글에서는 TestEngine 클래스를 구현하여 DID_LIST.csv를 기반으로 여러 개의 DID를 자동으로 시험하고, ECU 응답 데이터를 실제 값으로 변환하여 PASS/FAIL을 판정하는 과정을 구현하였다. 각 DID의 시험 결과는 DIDTestCase 객체에 저장되지만, 프로그램이 종료되면 메모리에서 사라지므로 시험 결과를 다시 확인하거나 이력을 관리하기 어렵다. 자동 진단 프로그램에서는 시험 결과를 파일로 저장하여 추후 분석하거나 양산 검사 결과를 관리할 수 있어야 한다. 이번 글에서는 Report 클래스를 구현하여 TestEngine에서 생성한 시험 결과를 CSV 파일로 저장하는 기능을 구현해보겠다. 1. Report 클래스의 역할 이번 프로젝트에서 Report 클래스는 시험이 완.. 2026. 8. 7. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #10 - TestEngine 구현 및 DID 자동 시험 지난 글에서는 Application Layer를 구현하여 VectorCAN, ISO-TP, UDS, CSVReader, Report 클래스를 하나의 프로그램으로 연결하였다. Application에서는 ECU를 선택하고 Diagnostic Session에 진입한 후 DID 목록을 읽어 자동으로 진단을 수행할 수 있게 되었다. 하지만 아직 실제 시험(PASS/FAIL)을 수행하는 핵심 기능은 구현되지 않았다. DID를 하나씩 읽고 응답 데이터를 해석한 뒤 기대값(Expected Value)과 비교하여 시험 결과를 판정하는 작업이 필요하다. 이번 글에서는 TestEngine 클래스를 구현하여 DID_LIST.csv를 기반으로 여러 개의 DID를 자동으로 시험하고, ECU 응답 데이터를 사람이 읽을 수 있.. 2026. 8. 6. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #9 - Application Layer 구현 및 ECU 진단 통신 지난 글에서는 UDS 클래스를 구현하여 Diagnostic Session Control(0x10), Tester Present(0x3E), Read Data By Identifier(0x22)와 같은 UDS 서비스를 작성하였다. 이제 UDS Layer까지 구현이 완료되었으므로, Application에서는 CAN Frame이나 ISO-TP Frame을 직접 생성하거나 처리할 필요가 없다. Application은 ECU를 선택하고 진단 서비스를 호출하며, 시험 결과를 저장하는 전체 흐름만 제어하면 된다. 이번 글에서는 지금까지 구현한 VectorCAN, ISO-TP, UDS, CSVReader, TestEngine, Report 클래스를 하나의 프로그램으로 연결하여 실제 ECU와 진단 통신을 수행하는 A.. 2026. 8. 5. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #8 - UDS 클래스 구현 및 진단 서비스 공통 처리 지난 글에서는 ISO-TP Layer를 구현하여 CAN FD 기반의 진단 데이터를 송수신할 수 있도록 구현하였다. 이제 상위 Layer에서는 CAN Frame이나 ISO-TP Frame을 직접 다룰 필요가 없다. 대신 UDS(ISO 14229)에서 정의한 Diagnostic Service만 생성하면 ISO-TP Layer가 자동으로 CAN Frame을 생성하고 ECU와 통신을 수행하게 된다. 이번 글에서는 UDS 클래스를 구현하여 Diagnostic Session Control(0x10), Tester Present(0x3E), Read Data By Identifier(0x22) 서비스를 작성하고, 모든 UDS Service가 공통으로 사용하는 SendRequest() 함수를 구현해보겠다. 1... 2026. 8. 4. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #7 - ISO-TP 수신 구현 (Single Frame / Multi Frame 재조립) 지난 글에서는 ISO-TP 송신 기능을 구현하여 Payload 크기에 따라 Single Frame과 First Frame을 생성하는 과정을 살펴보았다.하지만 UDS 통신은 요청(Request)을 전송하는 것만큼 ECU의 응답(Response)을 올바르게 수신하는 과정도 중요하다. 특히 ECU의 응답 데이터가 큰 경우에는 여러 개의 CAN Frame으로 분할되어 전송된 데이터를 하나의 Payload로 다시 조립하는 과정이 필요하다. 이번 글에서는 IsoTp::Receive() 함수를 구현하여 Single Frame과 Multi Frame을 수신하고,여러 개의 CAN Frame을 하나의 Payload로 재조립하는 과정을 구현해보겠다. 1. ISO-TP 수신 과정 ISO-TP 수신 과정은 다음과 같은 순서로.. 2026. 8. 3. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #6 - ISO-TP 송신 구현 (Single Frame / First Frame) 지난 글에서는 VectorCAN 클래스를 구현하여 CAN FD Frame을 송신하고 수신하는 기능을 구현하였다. 하지만 CAN FD Frame만으로는 실제 UDS 통신을 구현하기에는 한 가지 문제가 있다. CAN FD는 최대 64Byte까지 데이터를 전송할 수 있지만, 진단 데이터의 크기는 이보다 더 큰 경우가 많기 때문이다. 예를 들어 VIN(17Byte)은 하나의 CAN FD Frame으로 전송할 수 있지만, ECU Download나 Firmware Update와 같이 수백 Byte 이상의 데이터는 여러 개의 CAN Frame으로 나누어 전송해야 한다. 이러한 문제를 해결하기 위해 사용하는 프로토콜이 ISO-TP(ISO 15765-2) 이다. 이번 글에서는 IsoTp 클래스를 생성하고 Payl.. 2026. 8. 1. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #5 - CAN FD Frame 송수신 구현 지난 글에서는 OpenChannel() 함수를 구현하여 Vector Hardware Config에서 Application Channel을 읽고, CAN FD Channel을 활성화하는 과정을 구현하였다. 이제 CAN Hardware를 사용할 준비가 완료되었으므로 실제 CAN FD Frame을 송신하고 수신하는 기능을 구현해보겠다. 이번 글에서는 VectorCAN 클래스의 Send()와 Receive() 함수를 구현한다. 이 단계가 완료되면 ECU와 CAN Frame을 직접 주고받을 수 있으며, 다음 글에서 구현할 ISO-TP와 UDS 통신의 기반이 된다. 1. Send()와 Receive()의 역할 VectorCAN 클래스는 CAN Driver를 직접 제어하는 가장 하위 Layer이다. 이번에 구.. 2026. 7. 31. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #4 - CAN FD Channel Open 구현 지난 글에서는 VectorCAN 클래스를 생성하고 xlOpenDriver()를 이용하여 Vector XL Driver를 초기화하는 과정을 구현하였다. 또한 xlGetDriverConfig()를 이용하여 현재 PC에 연결된 Vector Hardware 정보를 읽을 수 있도록 구현하였다. 이번 글에서는 실제 CAN FD Channel을 Open하는 OpenChannel() 함수를 구현해보겠다. 이 과정이 완료되면 Application은 CAN Hardware를 사용할 준비를 마치게 되며,이후 CAN Frame 송수신 기능을 구현할 수 있다. 1. OpenChannel() 함수 이번 글에서 구현할 함수는 다음과 같다. bool VectorCAN::OpenChannel(const TargetInfo& t.. 2026. 7. 30. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #3 - VectorCAN 클래스 구현 및 Driver 초기화 지난 글에서는 Visual Studio 프로젝트를 생성하고 Vector XL Driver Library를 프로젝트에 연결하는 방법을 살펴보았다. 이제부터는 실제 코드를 작성하면서 UDS Diagnostic Automation Tool을 구현해보겠다. 이번 글에서는 가장 하위 Layer인 VectorCAN 클래스를 생성하고,Vector XL Driver를 초기화한 후 현재 PC에 연결된 Vector Hardware 정보를 확인하는 기능까지 구현한다. 1. VectorCAN Layer의 역할 VectorCAN은 실제 CAN Hardware와 직접 통신하는 Layer이다. 상위 Layer에서는 CAN Frame을 송수신하기만 하면 되며, Driver API를 직접 호출할 필요는 없다. 즉, UDS L.. 2026. 7. 29. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #2 - 개발 환경 구축 및 XL Driver 설정 지난 글에서는 프로젝트의 전체 구조와 개발 목표를 소개하였다. 이번 글에서는 실제 개발을 시작하기 전에 필요한 개발 환경을 구축하고, Vector XL Driver Library를 프로젝트에 연결하는 과정까지 진행해보겠다. 이번 단계가 끝나면 Visual Studio에서 Vector CAN Hardware를 제어할 준비가 완료된다. 1. 개발 환경 이번 프로젝트에서 사용하는 개발 환경은 다음과 같다.항목내용OSWindows 10 / Windows 11IDEVisual Studio 2022Language C++CAN HardwareVector VN5650DriverVector XL Driver LibraryProtocolCAN FDApplicationStandalone Console Program 이번 .. 2026. 7. 28. Vector XL Driver Library를 이용한 UDS 진단 자동화 Tool 개발 #1 - 프로젝트 소개 및 Software Architecture 1. 프로젝트 개요 자동차 ECU를 개발하다 보면 동일한 UDS 진단 시험을 수백 번, 많게는 수천 번 반복하게 된다. Software Version 확인, DID 검증, DTC 확인, Routine Control 수행 등 대부분의 작업은 CANoe와 CAPL을 이용하지만, 반복 시험이 많아질수록 자동화의 필요성이 커진다. 대표적으로 다음과 같은 항목들이 있다.ECU Software Version 확인Part Number 확인Manufacturing Data 확인Calibration Data 확인Fault Memory 확인Coding 값 검증Diagnostic Session 진입 시험일반적으로 이러한 시험은 Vector CANoe와 CAPL Script를 이용하여 수행한다. CANoe는 자동차 네트워크 .. 2026. 7. 28. 이전 1 2 3 4 ··· 15 다음 반응형