Automotive 툴킷 문제 해결 안내서 및 FAQ

업데이트 됨 Jan 7, 2020

해당 제품

Hardware

  • CAN Interface Device

Software

  • ECU Measurement and Calibration Toolkit
  • Automotive Diagnostic Command Set Toolkit

Driver

  • NI-XNET

문의사항

NI Automotive Toolkit (ECU MC Toolkit 또는 Automotive Diagnostic Command Set)을 사용할 때 문제가 발생합니다. 기본적인 문제 해결 단계는 무엇입니까?

해결책

ECU MC Toolkit

개요

ECU MC 툴킷은 CAN 캘리브레이션 프로토콜(CCP)과 범용 캘리브레이션 프로토콜(XCP)의 두 가지 통신 프로토콜로 구성됩니다. CCP는 이전 프로토콜이며 CAN을 통해 작동하지만 CCP의 확장인 XCP는 여러 다른 물리적 계층에서 작동합니다. ECU MC 툴킷은 XCP over CAN, TCP/IP 및 UDP를 지원합니다.

기본 문제 해결 및 관련 정보

첫 번째 단계는 물리 계층이 올바르게 구성되었는지 확인하는 것입니다. 관련 질문은 다음과 같습니다.
  • CCP 또는 XCP를 사용하십니까? XCP 인 경우 물리 계층 (CAN 또는 이더넷)은 무엇입니까?
  • CAN을 사용한다면 :
    • ECU MC의 전송 속도(Baud Rate)가 ECU의 전송 속도와 일치하는지 확인하십시오.
    • 네트워크가 올바르게 종단되었는지 확인하십시오 .
    • ECU MC 프로그램과 동시에 XNET 버스 모니터를 실행하면 버스에 오류 프레임이 표시됩니까?
    • 그렇다면 종료, 부적절한 전송 속도 설정 또는 부적절한 샘플 포인트 설정에 문제가 있음을 나타냅니다. CAN FD 시스템은 전송 속도 또는 샘플 포인트 불일치에 특히 민감할 수 있습니다. 자세한 내용은 이 문서를 참조하십시오 .
    • ECU 및 ECU MC 응용 프로그램을 실행하는 장치를 제외하고 버스에서 다른 모든 장치를 제거하고 문제가 지속되는지 확인하십시오.

물리 계층이 제대로 작동하는 것 같으면 다음 단계는 버스에서 어떤 메시지가 전송되는지 확인하는 것입니다. XCP와 CCP는 표준화된 메시지와 네트워크 노드 간의 응답을 가진 문서화 된 통신 프로토콜입니다. 노드 간 통신 로그를 확보하면 통신을 중단시킨 명령 또는 메시지, 어떤 장치에서 발생한 오류 코드 및 이유를 정확하게 확인할 수 있습니다.

참고 : 로그에서 캡처할 가장 중요한 부분은 ECU MC 툴킷과 ECU 간의 초기 통신입니다. 초기화하는 동안 전송되는 명령을 찾으십시오. 전송되는 DAQ 데이터는 그다지 중요하지 않습니다.

Windows에서

ECU MC Toolkit은 ECU MC CCP 및 XCP Trace라는 유틸리티를 설치합니다. 유틸리티는 시작되자마자 실행됩니다. 이 유틸리티는 C:\Program Files (x86)\National Instruments\ECU Measurement and Calibration Toolkit\bin\ECUMC XCP and CCP Trace.exe에 있습니다. (또는 Windows 검색 표시 줄에서 이 유틸리티를 검색 할 수 있습니다.) 유틸리티가 시작되면 ECU MC 응용 프로그램을 실행한 다음 유틸리티로 돌아가서 로그 파일을 저장하십시오. 추적을 통해 캡처할 명령을 변경하려면 추적 >> 옵션으로 이동하십시오.

RT 타겟에서

  • 물리 계층이 CAN인 경우 : 수동 관찰자로 작동하려면 네트워크에 별도의 CAN 인터페이스를 설정해야 합니다. "Listen Only?"를 ON으로 설정해 XNET Bus Monitor 세션에서 관찰할 수 있습니다.
  • 물리 계층이 이더넷(UDP 또는 TCP/IP)인 경우: Linux RT 컨트롤러에서 Wireshark를 허용하는 패키지가 있습니다.
통신 로그는 때때로 스스로 해독하기가 어렵습니다. 상호 참조를 위해 A2L 데이터베이스 파일을 준비해야 하는 경우가 종종 있습니다. 전체 파일이 항상 필요한 것은 아닙니다. 일반적으로 관련 섹션만 있으면 됩니다.(예 : ECU의 연결 매개 변수 정의)

Seedkey DLLs

Seed/Key 알고리즘은 특정 장치만 액세스 할 수 있도록 하여 ECU를 보호하는 방법입니다. 일반적으로 Seedkey DLL이라는 DLL에 함수로 저장됩니다. Seedkey DLL은 Call-Response 방식의 암호를 생성합니다.

보호 된 ECU에 연결하려고 하면 시드 (임의의 숫자)를 생성하고 Seedkey 알고리즘을 사용하여 적절한 키 또는 응답을 생성합니다. 계속하려면 해당 시드를 가져와서 적절한 Seedkey DLL에 대한 입력으로 제공해야하며, 이는 적절한 키를 생성하기 위해 ECU와 동일한 계산을 수행합니다. 키를 제공하면 ECU가 잠금 해제되고 상호 작용할 수 있습니다.


FAQs

  • Real-Time Target에서 Seedkey DLL을 사용할 수 있습니까?
일부 Seedkey 라이브러리는 .so 파일로 제공되며 Linux RT 대상과 호환됩니다. Seedkey DLL을 .so 파일로 컴파일 할 수 있으면 Linux RT에서 실행될 수 있습니다.

그렇지 않으면 DLL은 Windows 파일이므로 RT 대상에서 실행할 수 없습니다. ECU MC 응용 프로그램을 실행하는 RT 타겟에는 Seedkey DLL을 배포할 수 없습니다. 해결책은 원격 시드 키 세션을 여는 것입니다. RT 타겟이 Windows 호스트 PC에 연결되어 있어야 합니다.

예를 들어 Linux RT를 실행하는 CompactRIO 대상에서 ECU MC 응용 프로그램을 실행하고 있습니다. ECU는 시드 키 알고리즘으로 보호됩니다. ECU MC 응용 프로그램이 ECU에 연결을 시도하고 ECU가 시드로 응답합니다. ECU MC 어플리케이션은 시드를 가져와서 이더넷 연결을 통해 원격 Seedkey 서버라고 하는 Windows PC에서 실행되는 VI로 보냅니다. 이 VI는 Seed를 가져와서 Seedkey DLL에 대한 입력으로 제공하고, Key를 출력으로 가져와서 해당 Key를 CompactRIO에서 실행되는 어플리케이션으로 다시 보냅니다. 그런 다음 어플리케이션은 Key를 ECU로 전송하여 연결을 허용합니다.
ECU MC 툴킷은 LabVIEW의 도움말 >> 예제 찾기 >> 툴킷 및 모듈 >> ECU 측정 및 교정 >> 고급 >> Remote Seedkey.lvproj에 있는 즉시 사용 가능한 원격 Seedkey 서버 어플리케이션 과 함께 제공됩니다.
  • MC ECU Connect.vi에서 오류 -301039가 발생했습니다
가능한 이유 :
ECU Measurement and Calibration Toolkit:  (Hex 0xFFFB6811) The function to calculate the key was not found in the Seed-Key dll. Solution: Make sure that the Seed-Key dll exports the function "ASAP1A_CCP_ComputeKeyFromSeed" (without any further decorations).

오류가 나타내는 것처럼 원인은 Seedkey를 계산하는 Seedkey DLL의 함수 이름입니다. ECU MC 툴킷은 이 기능에 대해 두 가지 가능한 이름만 허용합니다.
  • CCP : ASAP1A_CCP_ComputeKeyFromSeed
  • XCP : XCP_ComputeKeyFromSeed 및 XCP_GetAvailablePrivileges.
Seedkey DLL은 때때로 seed2key처럼 키 생성 기능에 다른 이름을 사용합니다. 이는 일부 XCP 마스터 소프트웨어에서 작동 할 수 있지만 이는 ECU MC 툴킷이 지원하지 않는 CCP 또는 XCP 표준에서 벗어난 것입니다.

Seedkey DLL에서 키 생성 기능의 존재와 이름을 조사하기 위해 Dependency Walker와 같은 타사 유틸리티를 사용하여 해당 기능의 이름을 볼 수 있습니다.

해결책은 Seedkey DLL의 Seedkey 함수 이름을 지원되는 이름으로 변경하는 것입니다.


자동차 진단 명령 세트

개요

ADCS (Automotive Diagnostic Command Set)는 KWP2000 (Key Word Protocol), UDS (Unified Diagnostic Services) 및 OBD (On-Board Diagnostics)와 같은 몇 가지 자동차 통신 프로토콜에 대한 지원을 추가하는 API입니다. 이 프로토콜은 ECU와 통신하여 데이터를 수집하고 온보드 메모리를 프로그래밍하는 데 사용됩니다. 이들은 진단 목적으로 종종 사용됩니다 : 고장 코드 수집 및 작동 중 ECU의 상태 또는 상태 모니터링.

이 프로토콜은 대부분 고속 CAN 물리 계층에서 작동하지만 때로는 CAN FD 및 LIN도 사용합니다.

기본 문제 해결 및 관련 정보

이러한 프로토콜들은 CAN 및 LIN에서 작동하므로 물리 계층이 올바르게 작동하는지 확인하는 과정이 중요합니다. 관련 질문은 다음과 같습니다.
  • ADCS의 전송 속도가 ECU의 전송 속도와 일치하는지 확인하십시오.
  • 네트워크가 올바르게 종료되었는지 확인하십시오 .
  • ADCS 프로그램과 동시에 XNET 버스 모니터를 실행하면 버스에 오류 프레임이 표시됩니까?
    • 그렇다면 종료, 부적절한 전송 속도(Baud Rate) 설정 또는 부적절한 샘플 포인트 설정에 문제가 있음을 나타냅니다. CAN FD 시스템은 전송 속도 또는 샘플 포인트 불일치에 특히 민감 할 수 있습니다. 자세한 내용은이 기사를 참조하십시오.
  • ECU 및 ADCS 애플리케이션을 실행하는 장치를 제외하고 버스에서 다른 모든 장치를 제거하고 문제가 지속되는지 확인하십시오.
물리 계층이 제대로 작동하는 것 같으면 조사의 다음 단계는 버스에서 어떤 메시지가 전송되는지 확인하는 것입니다. ADCS가 지원하는 다양한 프로토콜은 표준화된 메시지와 네트워크 노드 간의 응답을 포함하는 문서화 된 통신 프로토콜입니다. 노드 간 통신 로그를 확보하면 통신을 중단시킨 명령 또는 메시지, 어떤 장치에서 발생한 오류 코드 및 이유를 정확하게 확인할 수 있습니다.

네트워크 통신을 추적하려면 ADCS에서 사용하는 동일한 인터페이스로 하위 모드에서 XNET 버스 모니터 세션을 시작하십시오. Log Error Frames? 및 Log Transmitted Frames? 가 체크 되었는지 확인하십시오.

FAQs

  • ECU가 어떤 OBD PID를 지원하는지 어떻게 알 수 있습니까?
ADCS 툴킷은 OBD Get Supported PIDs.vi라는 예제와 함께 제공됩니다. 고객이 이 예제를 실행하면 순서대로 지원되는 PID 배열과 지원되지 않는 PID 배열을 표시합니다. PIDs Out 열에는 지원되는 PID의 숫자 이름이 표시됩니다. PID 이름을 실제 값과 연관시키려면 Wikipedia 페이지를 참조하십시오.
  • ADCS는 ODX 파일과 같은 ECU 데이터베이스를 지원합니까?
데이터베이스는 현재 ADCS에서 지원되지 않습니다.