초기 커밋.

This commit is contained in:
2025-12-19 13:59:34 +09:00
parent 1c0b03f88c
commit 79fea6964b
184 changed files with 94471 additions and 0 deletions

View File

@@ -0,0 +1,165 @@
using System;
namespace LFP_Manager.DataStructure
{
internal static class DbConstData
{
// ============================== //
// DB 정의 (SQLite)
// ============================== //
public static class Database
{
// 오타 수정: AlamrHistory → AlarmHistory
public const string FileName = @"\db\AlarmHistory.db";
public const string TableName = "TAlarmHistory";
// NOTE:
// - SQLite 권장 타입(TEXT/INTEGER/REAL) 사용
// - 마지막 콤마 제거
// - IF NOT EXISTS 추가
// - 자동 증가 PK(Id) 추가
public static readonly string CreateTable = $@"
CREATE TABLE IF NOT EXISTS {TableName} (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
create_date TEXT NOT NULL,
alarm_code INTEGER,
alarm_status INTEGER,
alarm_cname TEXT,
alarm_sname TEXT,
module_no INTEGER,
ct_no INTEGER,
alarm_param_1 REAL,
alarm_param_2 REAL,
alarm_param_3 REAL
);";
public static readonly string CreateIndexes = $@"
CREATE INDEX IF NOT EXISTS IX_{TableName}_create_date ON {TableName}(create_date);
CREATE INDEX IF NOT EXISTS IX_{TableName}_create_date_alarm_code ON {TableName}(create_date, alarm_code);
CREATE INDEX IF NOT EXISTS IX_{TableName}_create_date_module_no ON {TableName}(create_date, module_no);
-- 선택: 코드/상태/모듈 단독 인덱스(필요할 때만)
-- CREATE INDEX IF NOT EXISTS IX_{TableName}_alarm_code ON {TableName}(alarm_code);
-- CREATE INDEX IF NOT EXISTS IX_{TableName}_alarm_status ON {TableName}(alarm_status);
-- CREATE INDEX IF NOT EXISTS IX_{TableName}_module_no ON {TableName}(module_no);
";
}
// ============================== //
// Alarm 코드 정의 (enum)
// - 추가하신 15~18 포함
// - 기존 숫자값 유지 (호환성)
// ============================== //
public enum Alarm
{
CELL_UNDER_VOLTAGE = 0,
CELL_OVER_VOLTAGE = 1,
UNDER_VOLTAGE = 2,
OVER_VOLTAGE = 3, // 오타 수정: VOLTAGAE → VOLTAGE
CHARGE_OVER_TEMPERATURE = 4,
DISCHARGE_OVER_TEMPERATURE = 5,
CHARGE_LOW_TEMPERATURE = 6,
DISCHARGE_LOW_TEMPERATURE = 7,
CHARGE_OVER_CURRENT = 8,
DISCHARGE_OVER_CURRENT = 9,
LOW_SOC = 10,
LOW_SOH = 11,
CELL_VOLTAGE_DIFF = 12,
SHORT_CIRCUIT = 13,
COMM_FAIL = 14,
MOSFET_OVER_TERMPERATURE = 15,
CB_OFF = 16,
VOLTAGE_MEASUREMENT_ERROR = 17, // 신규
TEMPERATURE_MEASUREMENT_ERROR = 18, // 신규
BATTERY_CELL_UNBALANCE = 19, // 신규
EMERGENCY_ALARM = 20, // 신규
STS_STAND_BY = 21,
STS_CHARGING = 22, // 오타 수정: CHARING → CHARGING
STS_DISCHARGING = 23,
STS_PROTECTED = 24,
STS_PRE_CHARGING = 25,
STS_UNKNOWN = 30,
START = 31,
STOP = 32,
}
// index = 코드
private static readonly string[] AlarmNames =
{
/* 0 */ "CELL UNDER VOLTAGE",
/* 1 */ "CELL OVER VOLTAGE",
/* 2 */ "UNDER VOLTAGE",
/* 3 */ "OVER VOLTAGE",
/* 4 */ "CHARGE OVER TEMPERATURE",
/* 5 */ "DISCHARGE OVER TEMPERATURE",
/* 6 */ "CHARGE LOW TEMPERATURE",
/* 7 */ "DISCHARGE LOW TEMPERATURE",
/* 8 */ "CHARGE OVER CURRENT",
/* 9 */ "DISCHARGE OVER CURRENT",
/* 10 */ "LOW SOC",
/* 11 */ "LOW SOH",
/* 12 */ "CELL VOLTAGE DIFFERENCE",
/* 13 */ "SHORT CIRCUIT",
/* 14 */ "COMM FAIL",
/* 15 */ "MOSFET OVER TEMPERATURE",
/* 16 */ "CIRCUIT BREAKER OFF",
/* 17 */ "VOLTAGE MEASUREMENT ERROR",
/* 18 */ "TEMPERATURE MEASUREMENT ERROR",
/* 19 */ "BATTERY CELL UNBALANCE",
/* 20 */ "EMERGENCY ALARM",
/* 21 */ "STAND BY",
/* 22 */ "CHARGING",
/* 23 */ "DISCHARGING",
/* 24 */ "PROTECTED",
/* 25 */ "PRE-CHARGING",
/* 26 */ "RESERVED",
/* 27 */ "RESERVED",
/* 28 */ "RESERVED",
/* 29 */ "RESERVED",
/* 30 */ "UNKNOWN",
/* 31 */ "START",
/* 32 */ "STOP",
};
// 기존 상수 ALARM_NAME_SIZE는 실제 길이와 어긋나므로 제거 권장.
// 필요하시면 아래 프로퍼티로 대체하세요.
public static int AlarmNameCount => AlarmNames.Length;
public static string GetAlarmName(int code)
=> (code >= 0 && code < AlarmNames.Length) ? AlarmNames[code] : $"UNKNOWN({code})";
public static string GetAlarmName(Alarm code) => GetAlarmName((int)code);
// ============================== //
// Flag 정의 (enum)
// ============================== //
public enum Flag
{
RELEASE = 0,
WARNING = 1,
PROTECT = 2,
ERROR = 3,
STS_CHANGED = 4,
INFORMATION = 5,
}
private static readonly string[] FlagNames =
{
"RELEASE",
"WARNING",
"PROTECT",
"ERROR",
"STATUS CHANGED",
"INFORMATION",
};
public static int FlagNameCount => FlagNames.Length;
public static string GetFlagName(int code)
=> (code >= 0 && code < FlagNames.Length) ? FlagNames[code] : $"UNKNOWN({code})";
public static string GetFlagName(Flag code) => GetFlagName((int)code);
}
}