132 lines
3.7 KiB
TypeScript
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';
|