Files
JBD_BMS_Tools/types.ts
2025-12-19 00:55:55 +09:00

132 lines
3.7 KiB
TypeScript

export interface BMSBasicInfo {
packVoltage: number; // Volts
current: number; // Amps
remainingCapacity: number; // Ah
fullCapacity: number; // Ah
cycleCount: number;
productionDate: string;
balanceStatus: number; // Bitfield
protectionStatus: ProtectionStatus;
version: number;
rsoc: number; // %
mosfetStatus: {
charge: boolean;
discharge: boolean;
};
ntcCount: number;
ntcTemps: number[]; // Celsius
}
export interface BMSCellInfo {
voltages: number[]; // Volts
}
// C# JbdDevice.cs의 레지스터 목록과 1:1 매칭되도록 확장
export interface BMSConfig {
// --- Basic Protection ---
cellOvp: number; // 0x24 (mV)
cellOvpRel: number; // 0x25 (mV)
cellUvp: number; // 0x26 (mV)
cellUvpRel: number; // 0x27 (mV)
packOvp: number; // 0x20 (10mV)
packOvpRel: number; // 0x21 (10mV)
packUvp: number; // 0x22 (10mV)
packUvpRel: number; // 0x23 (10mV)
// Temperatures (Basic)
chgOt: number; // 0x18
chgOtRel: number; // 0x19
chgUt: number; // 0x1A
chgUtRel: number; // 0x1B
dsgOt: number; // 0x1C
dsgOtRel: number; // 0x1D
dsgUt: number; // 0x1E (C# mapping check needed, using std logic)
dsgUtRel: number; // 0x1F
// Over Current
chgOc: number; // 0x?? Depends on mapping, typically extended
dsgOc: number;
// --- Delays (2 bytes split) ---
// Format: [Delay1 (s/ms), Delay2 (s/ms)]
cellVDelays: { cuvp: number; covp: number }; // 0x3D
packVDelays: { puvp: number; povp: number }; // 0x3C
chgTDelays: { chgut: number; chgot: number }; // 0x3A
dsgTDelays: { dsgut: number; dsgot: number }; // 0x3B
chgOcDelays: { delay: number; release: number }; // 0x3E
dsgOcDelays: { delay: number; release: number }; // 0x3F
// --- High Protection ---
covpHigh: number; // 0x36
cuvpHigh: number; // 0x37
// --- Function Config (Bitfield 0x2D) ---
funcConfig: number; // Raw uint16 value
// --- NTC Config (Bitfield 0x2E) ---
ntcConfig: number; // Raw uint16 value
// --- Balance ---
balStart: number; // 0x2A (mV)
balWindow: number; // 0x2B (mV)
// --- Capacity & Misc ---
designCapacity: number; // 0x10 (10mAh)
cycleCapacity: number; // 0x11 (10mAh)
dsgRate: number; // 0x14 (%)
cap100: number; // 0x12
cap80: number; // 0x32
cap60: number; // 0x33
cap40: number; // 0x34
cap20: number; // 0x35
cap0: number; // 0x13
fetCtrl: number; // 0x30 (s)
ledTimer: number; // 0x31 (s)
// --- Hardware / Misc ---
shuntRes: number; // 0x2C (mOhm)
cellCnt: number; // 0x2F
cycleCnt: number; // 0x17
serialNum: number; // 0x16
// --- Strings ---
mfgName: string; // 0xA0
deviceName: string; // 0xA1
barcode: string; // 0xA2
// --- Date ---
mfgDate: number; // 0x15 (Raw uint16 encoded)
}
export interface ProtectionStatus {
covp: boolean; // Cell Over Voltage Protection
cuvp: boolean; // Cell Under Voltage Protection
povp: boolean; // Pack Over Voltage Protection
puvp: boolean; // Pack Under Voltage Protection
chgot: boolean; // Charge Over Temp
chgut: boolean; // Charge Under Temp
dsgot: boolean; // Discharge Over Temp
dsgut: boolean; // Discharge Under Temp
chgoc: boolean; // Charge Over Current
dsgoc: boolean; // Discharge Over Current
sc: boolean; // Short Circuit
afe: boolean; // AFE Error
}
export enum ConnectionState {
DISCONNECTED = 'DISCONNECTED',
CONNECTING = 'CONNECTING',
CONNECTED = 'CONNECTED',
ERROR = 'ERROR',
}
export interface SerialOptions {
baudRate: number;
dataBits: number;
stopBits: number;
parity: ParityType;
}
export type ParityType = 'none' | 'even' | 'odd';