CAN 버스 & J1939 디코더
차량 네트워크 분석 도구 - DBC 지원
CAN ID 디코더
CAN ID를 파싱하여 우선순위, PGN, 소스 주소, 목적지 주소 등 J1939 파라미터를 추출합니다.
문서
이 도구는 CAN(Controller Area Network) 및 SAE J1939 프로토콜 분석을 종합적으로 지원합니다. CAN은 자동차 및 산업 애플리케이션에서 지배적인 통신 표준이며, J1939는 대형 차량 및 비도로 장비를 위해 CAN을 확장합니다.
J1939 프로토콜 이해
SAE J1939은 29비트 확장 식별자를 가진 CAN 2.0B 위에 구축된 상위 계층 프로토콜입니다. 29비트 CAN ID는 메시지 라우팅과 우선순위를 정의하는 여러 파라미터를 인코딩합니다.
J1939 식별자 구조
29비트 식별자는 별도의 필드로 분할됩니다. 최상위 비트에서 최하위 비트까지 구조는 우선순위(3비트), 예약/EDP(1비트), 데이터 페이지(1비트), PDU 포맷(8비트), PDU 특정(8비트), 소스 주소(8비트)를 포함합니다. 이 인코딩은 차량 네트워크 내에서 효율적인 메시지 우선순위 지정 및 주소 지정을 가능하게 합니다.
파라미터 그룹 번호 (PGN)
PGN은 J1939의 기본 주소 지정 메커니즘입니다. 전송되는 데이터의 유형과 내용을 식별합니다. PGN은 PDU 포맷과 PDU 특정 필드에서 파생되며, 해석은 메시지가 PDU1 또는 PDU2 포맷을 사용하는지에 따라 달라집니다.
PDU 포맷이 240(0xF0) 미만이면 메시지는 목적지 특정 주소 지정을 가진 PDU1 포맷입니다. PDU 특정 필드에는 목적지 주소가 포함됩니다. PDU 포맷이 240 이상이면 메시지는 브로드캐스트 메시지용 PDU2 포맷이며, PDU 특정은 PGN 자체의 일부가 됩니다.
신호 추출 방법
J1939 및 CAN 프로토콜은 8바이트 데이터 프레임 내에 여러 신호를 인코딩합니다. 각 신호에는 정의된 시작 비트 위치, 비트 길이 및 바이트 순서가 있습니다. 이 도구는 Intel(Little-Endian) 및 Motorola(Big-Endian) 바이트 순서 규칙을 모두 지원합니다.
물리 값은 표준 공식을 사용하여 원시 신호 값에서 계산됩니다: 물리 값 = 원시 값 × 계수 + 오프셋. 이 변환은 이진 센서 판독값을 온도, 압력 또는 속도와 같은 의미 있는 엔지니어링 단위로 변환합니다.
일반적인 J1939 PGN
- PGN 65262 (0xFEEE) - 엔진 온도 1: 엔진 냉각수 온도, 연료 온도, 오일 온도 판독값을 포함합니다.
- PGN 61444 (0xF004) - 전자 엔진 컨트롤러 1: 실제 엔진 토크, 운전자 요구 토크, 엔진 속도(RPM)를 보고합니다.
- PGN 65265 (0xFEF1) - 크루즈 컨트롤/차량 속도: 휠 기반 및 엔진 기반 차량 속도 측정값을 제공합니다.
- PGN 65269 (0xFEF5) - 주변 조건: 대기압, 주변 온도, 엔진 흡기 온도를 포함합니다.
- PGN 65263 (0xFEEF) - 엔진 유체 레벨/압력: 연료 공급 압력, 오일 압력, 냉각수 압력을 보고합니다.
실용적 응용
- ECU 개발: 임베디드 컨트롤러 개발 및 통합 테스트 중 메시지 포맷을 검증합니다.
- 차량 진단: 실시간 CAN 트래픽을 분석하여 통신 문제를 해결하고 센서 판독값을 확인합니다.
- 차량 텔레매틱스: 연료 소비 모니터링, 엔진 가동 시간 추적, 예측 유지 관리를 위해 J1939 데이터를 파싱합니다.
- 파워트레인 캘리브레이션: 성능 튜닝 및 배기가스 규정 준수 확인을 위해 엔진 파라미터를 추출합니다.
- 프로토콜 교육: 실제 메시지 예제의 실습 디코딩을 통해 J1939 프로토콜 구조를 학습합니다.
바이트 순서 규칙
Intel(Little-Endian)은 최하위 비트와 바이트에서 시작하며, x86 프로세서와 많은 현대 ECU에서 일반적으로 사용됩니다. Motorola(Big-Endian)는 최상위 비트와 바이트에서 시작하며, CAN 및 자동차 애플리케이션에서 전통적으로 사용됩니다. 정확한 신호 해석을 위해 올바른 바이트 순서를 선택하는 것이 중요합니다.
기능 개요
이 포괄적인 CAN 버스 디코더는 다양한 차량 네트워크 분석 요구를 충족하기 위해 4가지 주요 기능 모듈을 제공합니다:
- ID 디코딩: 29비트 J1939 확장 ID 또는 11비트 표준 ID를 분석합니다. 우선순위, PGN, 소스 주소, 대상 주소, PDU 포맷 정보를 추출합니다.
- 데이터 추출: 구성 가능한 시작 비트, 비트 길이, 바이트 순서로 8바이트 CAN 프레임에서 신호 값을 추출합니다. 부호/부호 없는 정수와 IEEE 754 부동소수점을 지원합니다.
- 로그 뷰어: Linux candump, Vector ASC, PCAN TRC를 포함한 다양한 형식의 CAN 로그 파일을 파싱합니다. CAN ID로 필터링하고 CSV로 내보내기.
- DBC 디코더: Vector CANdb++ DBC 파일을 로드하여 모든 신호를 자동 디코딩합니다. 메시지 탐색, 신호 검색, 노드 보기, 빠른 신호 디코딩 실행.
DBC 파일 지원
DBC(CAN 데이터베이스) 파일은 메시지, 신호, 노드, 값 설명을 포함한 CAN 통신의 완전한 구조를 정의합니다. 이 도구는 Vector CANdb++ 형식의 DBC 파일을 완벽하게 지원합니다.
DBC 파일을 로드한 후 주기 시간과 신호 수와 함께 정의된 모든 메시지를 탐색하고, 이름이나 단위로 수천 개의 신호를 검색하고, ECU 노드와 전송 메시지를 보고, 사전 정의된 신호 정의를 사용하여 원시 CAN 데이터를 빠르게 디코딩할 수 있습니다.
DBC 파서는 다음을 지원합니다: 메시지 정의(BO_), 신호 정의(SG_), 노드 선언(BU_), 값 설명(VAL_), 코멘트(CM_), 속성(주기 시간 및 초기값 포함), Intel/Motorola 바이트 순서, 부호/부호 없는 값 유형.
지원되는 입력 형식
유연성을 위해 다양한 데이터 입력 형식을 지원합니다:
- 공백이 있는 16진수: 공백으로 구분된 표준 형식. 예:
FF 00 11 22 33 44 55 66 - 공백 없는 16진수: 공백 없이 연속된 16진수 문자열. 예:
FF00112233445566 - Base64: Base64로 인코딩된 바이너리 데이터. 예:
/wARIjNEVWY= - C/C++ 배열: C 스타일 배열 표기법. 예:
0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66
로그 파일 형식
로그 뷰어는 일반적인 CAN 로그 형식의 자동 감지를 지원합니다:
- Linux candump:
(1234567890.123456) can0 18FEF100#FF00112233445566 - Vector ASC:
0.000000 1 18FEF100x Rx d 8 FF 00 11 22 33 44 55 66 - PCAN Trace:
1) 1234.5 18FEF100 8 FF 00 11 22 33 44 55 66
전송 프로토콜 지원
J1939 전송 프로토콜(TP)은 8바이트를 초과하는 메시지 전송을 가능하게 합니다. TP 재조립을 활성화하면 다중 프레임 메시지(BAM 및 CMDT)를 완전한 페이로드로 결합하여 자동 분석할 수 있습니다.
관련 도구
Modbus RTU/ASCII/TCP 파서
CRC-16/LRC 계산 및 시리얼 디버깅을 통해 Modbus RTU/ASCII/TCP 프로토콜 프레임 분석, 인코딩 및 디버그
온라인 시리얼 포트 디버거
브라우저 기반 시리얼 디버깅 도구 - 다운로드 불필요, Web Serial API를 통한 실시간 모니터링
LoRaWAN 디코더
LoRaWAN PHYPayload 패킷 인코딩/디코딩, 에어타임 계산기, OTAA/ABP 입망 및 데이터 프레임 지원
MQTT 코덱
상세 필드 분석, Hex 뷰어 및 패킷 빌더로 MQTT 프로토콜 패킷 인코딩 및 디코딩