You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Windows Forms 기반의 BMS CAN/UDS 진단통신 모니터링 툴입니다. PCAN-USB 장비를 통해 Main/Sub BMS와 CAN 메시지를 송수신하고, ISO-TP(CAN-TP) 위에서 UDS 서비스를 수행하여 배터리 상태, DTC, 세션, WriteDataByIdentifier 기능을 확인합니다.
현재 구현 기준: Windows C# WinForms, net10.0-windows, PEAK PCANBasic.NET, Classic CAN Standard ID, DLC 8, PCAN_USBBUS1, 125 Kbps
현재 툴은 요청 ID 하나(0x700)를 사용하고, 응답 ID로 Main/Sub BMS를 구분합니다. 산출물의 범용 UDS 예시에는 0x7E0/0x7E8, 0x7E1/0x7E9 구조도 포함되어 있으나, 이 저장소의 C# 구현 기준은 0x700/0x701/0x711입니다.
📡 CAN/UDS 통신 사양
CAN 기본값
항목
현재 구현값
위치
CAN Channel
PCAN_USBBUS1
Form1.cs
Bitrate
PCAN_BAUD_125K
Form1.cs
Frame Type
Classic CAN, Standard ID
산출물/코드 기준
DLC
8 byte
CanTpFrame.cs
Request ID
0x700
CanTpFrame.cs
Main Response ID
0x701
CanTpFrame.cs
Sub Response ID
0x711
CanTpFrame.cs
DID Read Timeout
1500 ms
Form1.cs
CAN-TP 프레임
프레임
PCI
구조
비고
Single Frame
0x0L
[Length] + UDS Payload + Padding
UDS payload 최대 7 byte
First Frame
0x1L
10 LL + Payload 첫 6 byte
전체 payload 길이 포함
Consecutive Frame
0x2N
SN + Payload 7 byte
Sequence Number 검증
Flow Control
0x30
30 00 00 00 00 00 00 00
First Frame 수신 후 Tool이 송신
지원 UDS 서비스
기능
Request SID
Positive SID
요청 예
사용 조건
Diagnostic Session Control
0x10
0x50
10 01, 10 03
CAN 연결 후
ECU Reset
0x11
0x51
11 01
Extended Session
ReadDataByIdentifier
0x22
0x62
22 F1 40
CAN 연결 후
WriteDataByIdentifier
0x2E
0x6E
2E F4 10 01
Extended Session
ReadDTCInformation
0x19
0x59
19 02 FF
CAN 연결 후
ClearDiagnosticInformation
0x14
0x54
14 FF FF FF
CAN 연결 후
TesterPresent
0x3E
0x7E
3E 80
Extended Session 유지
Negative Response
-
0x7F
7F RequestSID NRC
모든 서비스 오류
TesterPresent는 suppress positive response bit(0x80)를 사용하므로 ECU 구현에 따라 Positive Response가 생략될 수 있습니다.
🧾 주요 DID Map
화면 표시 DID
영역
항목
DID
Raw/Scale
표시 변환
Cell & Pack
Cell 1~4 SOC
0xF101~0xF104
%
raw %
Cell & Pack
Cell 1~4 SOH
0xF111~0xF114
%
raw %
Cell & Pack
Cell 1~4 Voltage
0xF121~0xF124
V * 100
raw / 100.0 V
Cell & Pack
Cell 1~4 Temp
0xF131~0xF134
℃
raw ℃
Cell & Pack
Pack SOC
0xF140
%
raw %
Cell & Pack
Pack Current
0xF205
A * 10, signed int16
signed(raw) / 10.0 A
Cell & Pack
Charge Enable
0xF20B
0/1
0=OFF, 1=ON
Cell & Pack
Discharge Enable
0xF207
0/1
0=OFF, 1=ON
Cell & Pack
Max Charge Current
0xF208
A * 10
raw / 10.0 A
Cell & Pack
Max Discharge Current
0xF209
A * 10
raw / 10.0 A
Vehicle Status
BMS Mode
0xF200
enum
0=STOP, 1=RUN
Vehicle Status
Charging
0xF201
enum
0=DISCHARGING, 1=CHARGING, 2=IDLE
Vehicle Status
Contactor
0xF202
enum
0=OPEN, 1=CLOSED, 2=PRECHARGE
Vehicle Status
Balancing
0xF203
enum
0=STABLE, 1=BALANCING, 2=UNSTABLE
Vehicle Status
Thermal
0xF204
enum
0=STABLE, 1=COOLING, 2=HEATING
Vehicle Status
Operation
0xF206
enum
0=NORMAL, 1=CHARGE, 2=DISCHARGE, 3=FAULT, 4=SLEEP
Vehicle Status
Fault Summary
0xF300
enum
0=NORMAL, 1=WARNING, 2=FAULT
Snapshot
BMS Snapshot
0xF310
Multi DID payload
[DID 2 byte + VALUE 2 byte] 반복
Sub BMS 응답에서는 산출물 기준으로 Operation Mode, Pack SOH, Heater, Cell Balancing 일부 항목이 미지원일 수 있으므로 UI에서 N/A 처리 정책을 둡니다.
WriteDataByIdentifier DID
카테고리
항목
DID
길이
값/스케일
비고
Cell Balancing
Balancing Enabled
0xF401
1 byte
0=OFF, 1=ON
Sub BMS 정책에 따라 제한 가능
Charge / Discharge
Charge Enable
0xF410
1 byte
0=OFF, 1=ON
Extended Session
Charge / Discharge
Discharge Enable
0xF411
1 byte
0=OFF, 1=ON
Extended Session
Thermal Management
Fan Command
0xF430
1 byte
0=OFF, 1=ON
Extended Session
Thermal Management
Heater Command
0xF431
1 byte
0=OFF, 1=ON
Sub BMS 미지원 가능
Threshold / Calibration
Over Voltage Threshold
0xF450
2 byte
raw = V * 100
3.0~5.0 V
Threshold / Calibration
Under Voltage Threshold
0xF451
2 byte
raw = V * 100
2.0~4.0 V
Threshold / Calibration
Over Temperature Threshold
0xF452
2 byte
raw = ℃
-40~125 ℃
Threshold / Calibration
Over Current Threshold
0xF453
2 byte
raw = A * 10
0~500 A
Monitoring
Pack Current
0xF205
2 byte
raw = A * 10, signed
Write 팝업에서 읽기 전용
Write 기능은 BmsWriteData의 타입, 범위, 스케일, 길이 검증을 거친 뒤 2E DID_H DID_L DATA... 형식으로 송신합니다.
🧪 주요 동작 흐름
1. PCAN 연결
CONNECT 클릭
-> PCANBasic.Initialize(PCAN_USBBUS1, PCAN_BAUD_125K)
-> 성공 시 CAN Connected 상태 표시
-> Read/Session/DTC 버튼 활성화
산출물 기준 DTC 예시는 0x010001 Over Voltage, 0x010002 Under Voltage, 0x010003 Over Temperature, 0x010004 Over Current, 0x010005 Communication Error, 0x010006 Main BMS Fault, 0x010007 Sub BMS Fault입니다.
4. Session 및 Tester Present
CHANGE SESSION
-> Default: 10 01
-> Extended: 10 03
-> Positive Response: 50 session
Extended Session 진입 후
-> Tester Present: 3E 80
-> 주기적으로 송신하여 세션 유지
Write Parameter는 현재 UI에서 Extended Session일 때만 활성화됩니다.
5. Write Parameter
WRITE DATA 클릭
-> Write 팝업 표시
-> 현재 값 Read
-> 입력값 타입/범위/스케일 검증
-> TX Preview 생성
-> WriteDataByIdentifier 송신
-> Positive Response 6E DID 확인
🖥️ UI 구성
영역
표시/제어 항목
Connection
CAN 연결 상태, 채널, Bitrate, BMS Source(Main/Sub/Waiting)