UpdateAlarm message Struct

This commit is contained in:
atef 2025-04-07 09:53:42 +02:00
parent aaef2b7489
commit 8f097be43f
2 changed files with 215 additions and 145 deletions

View File

@ -3,7 +3,7 @@ namespace InnovEnergy.Lib.Devices.BatteryDeligreen;
public class AlarmBitMessage public class AlarmBitMessage
{ {
public readonly struct AlarmEvent1_ public readonly struct AlarmEvent1
{ {
private readonly Byte _record; private readonly Byte _record;
@ -16,7 +16,7 @@ public class AlarmBitMessage
public Boolean DischargeSwitchFault => (_record & (1 << 6)) == 1; public Boolean DischargeSwitchFault => (_record & (1 << 6)) == 1;
public Boolean CurrentLimitSwitchFault => (_record & (1 << 7)) == 1; public Boolean CurrentLimitSwitchFault => (_record & (1 << 7)) == 1;
public AlarmEvent1_(Byte record) => _record = record; public AlarmEvent1(Byte record) => _record = record;
} }
@ -34,172 +34,226 @@ public class AlarmBitMessage
//} //}
// Enum for Alarm Event 2 // Enum for Alarm Event 2
public enum AlarmEvent2 public readonly struct AlarmEvent2
{ {
MonomerHighVoltageAlarm, private readonly Byte _record;
MonomerOvervoltageProtection, public Boolean MonomerHighVoltageAlarm => (_record & (1 << 0)) == 1;
MonomerLowVoltageAlarm, public Boolean MonomerOvervoltageProtection => (_record & (1 << 1)) == 1;
MonomerUnderVoltageProtection, public Boolean MonomerLowVoltageAlarm => (_record & (1 << 2)) == 1;
HighVoltageAlarmForTotalVoltage, public Boolean MonomerUnderVoltageProtection => (_record & (1 << 3)) == 1;
OvervoltageProtectionForTotalVoltage, public Boolean HighVoltageAlarmForTotalVoltage => (_record & (1 << 4)) == 1;
LowVoltageAlarmForTotalVoltage, public Boolean OvervoltageProtectionForTotalVoltage => (_record & (1 << 5)) == 1;
UnderVoltageProtectionForTotalVoltage public Boolean LowVoltageAlarmForTotalVoltage => (_record & (1 << 6)) == 1;
public Boolean UnderVoltageProtectionForTotalVoltage => (_record & (1 << 7)) == 1;
public AlarmEvent2(Byte record) => _record = record;
} }
// Enum for Alarm Event 3 // Enum for Alarm Event 3
public enum AlarmEvent3 public readonly struct AlarmEvent3
{ {
ChargeHighTemperatureAlarm, private readonly Byte _record;
ChargeOverTemperatureProtection,
ChargeLowTemperatureAlarm, public Boolean ChargeHighTemperatureAlarm => (_record & (1 << 0)) == 1;
ChargeUnderTemperatureProtection, public Boolean ChargeOverTemperatureProtection => (_record & (1 << 1)) == 1;
DischargeHighTemperatureAlarm, public Boolean ChargeLowTemperatureAlarm => (_record & (1 << 2)) == 1;
DischargeOverTemperatureProtection, public Boolean ChargeUnderTemperatureProtection => (_record & (1 << 3)) == 1;
DischargeLowTemperatureAlarm, public Boolean DischargeHighTemperatureAlarm => (_record & (1 << 4)) == 1;
DischargeUnderTemperatureProtection public Boolean DischargeOverTemperatureProtection => (_record & (1 << 5)) == 1;
public Boolean DischargeLowTemperatureAlarm => (_record & (1 << 6)) == 1;
public Boolean DischargeUnderTemperatureProtection => (_record & (1 << 7)) == 1;
public AlarmEvent3(Byte record) => _record = record;
} }
// Enum for Alarm Event 4 // Enum for Alarm Event 4
public enum AlarmEvent4 public readonly struct AlarmEvent4
{ {
EnvironmentHighTemperatureAlarm, private readonly Byte _record;
EnvironmentOverTemperatureProtection,
EnvironmentLowTemperatureAlarm, public Boolean EnvironmentHighTemperatureAlarm => (_record & (1 << 0)) == 1;
EnvironmentUnderTemperatureProtection, public Boolean EnvironmentOverTemperatureProtection => (_record & (1 << 1)) == 1;
PowerOverTemperatureProtection, public Boolean EnvironmentLowTemperatureAlarm => (_record & (1 << 2)) == 1;
PowerHighTemperatureAlarm, public Boolean EnvironmentUnderTemperatureProtection => (_record & (1 << 3)) == 1;
CellLowTemperatureHeating, public Boolean PowerOverTemperatureProtection => (_record & (1 << 4)) == 1;
ReservationBit public Boolean PowerHighTemperatureAlarm => (_record & (1 << 5)) == 1;
public Boolean CellLowTemperatureHeating => (_record & (1 << 6)) == 1;
public Boolean ReservationBit => (_record & (1 << 7)) == 1;
public AlarmEvent4(Byte record) => _record = record;
} }
// Enum for Alarm Event 5 // Enum for Alarm Event 5
public enum AlarmEvent5 public readonly struct AlarmEvent5
{ {
ChargeOverCurrentAlarm, private readonly Byte _record;
ChargeOverCurrentProtection,
DischargeOverCurrentAlarm, public Boolean ChargeOverCurrentAlarm => (_record & (1 << 0)) == 1;
DischargeOverCurrentProtection, public Boolean ChargeOverCurrentProtection => (_record & (1 << 1)) == 1;
TransientOverCurrentProtection, public Boolean DischargeOverCurrentAlarm => (_record & (1 << 2)) == 1;
OutputShortCircuitProtection, public Boolean DischargeOverCurrentProtection => (_record & (1 << 3)) == 1;
TransientOverCurrentLockout, public Boolean TransientOverCurrentProtection => (_record & (1 << 4)) == 1;
OutputShortCircuitLockout public Boolean OutputShortCircuitProtection => (_record & (1 << 5)) == 1;
public Boolean TransientOverCurrentLockout => (_record & (1 << 6)) == 1;
public Boolean OutputShortCircuitLockout => (_record & (1 << 7)) == 1;
public AlarmEvent5(Byte record) => _record = record;
} }
// Enum for Alarm Event 6 // Enum for Alarm Event 6
public enum AlarmEvent6 public readonly struct AlarmEvent6
{ {
ChargeHighVoltageProtection, private readonly Byte _record;
IntermittentRechargeWaiting, public Boolean ChargeHighVoltageProtection => (_record & (1 << 0)) == 1;
ResidualCapacityAlarm, public Boolean IntermittentRechargeWaiting => (_record & (1 << 1)) == 1;
ResidualCapacityProtection, public Boolean ResidualCapacityAlarm => (_record & (1 << 2)) == 1;
CellLowVoltageChargingProhibition, public Boolean ResidualCapacityProtection => (_record & (1 << 3)) == 1;
OutputReversePolarityProtection, public Boolean CellLowVoltageChargingProhibition => (_record & (1 << 4)) == 1;
OutputConnectionFault, public Boolean OutputReversePolarityProtection => (_record & (1 << 5)) == 1;
InsideBit public Boolean OutputConnectionFault => (_record & (1 << 6)) == 1;
public Boolean InsideBit => (_record & (1 << 7)) == 1;
public AlarmEvent6(Byte record) => _record = record;
} }
// Enum for On-Off State // Enum for On-Off State
public enum OnOffState public readonly struct OnOffState
{ {
DischargeSwitchState, private readonly Byte _record;
ChargeSwitchState,
CurrentLimitSwitchState, public Boolean DischargeSwitchState => (_record & (1 << 0)) == 1;
HeatingSwitchState, public Boolean ChargeSwitchState => (_record & (1 << 1)) == 1;
ReservationBit1, public Boolean CurrentLimitSwitchStat => (_record & (1 << 2)) == 1;
ReservationBit2, public Boolean HeatingSwitchState => (_record & (1 << 3)) == 1;
ReservationBit3, public Boolean ReservationBit1 => (_record & (1 << 4)) == 1;
ReservationBit4 public Boolean ReservationBit2 => (_record & (1 << 5)) == 1;
public Boolean ReservationBit3 => (_record & (1 << 6)) == 1;
public Boolean ReservationBit4 => (_record & (1 << 7)) == 1;
public OnOffState(Byte record) => _record = record;
} }
// Enum for Equilibrium State 1 // Enum for Equilibrium State 1
public enum EquilibriumState1 public readonly struct EquilibriumState1
{ {
Cell01Equilibrium, private readonly Byte _record;
Cell02Equilibrium,
Cell03Equilibrium, public Boolean Cell01Equilibrium => (_record & (1 << 0)) == 1;
Cell04Equilibrium, public Boolean Cell02Equilibrium => (_record & (1 << 1)) == 1;
Cell05Equilibrium, public Boolean Cell03Equilibrium => (_record & (1 << 2)) == 1;
Cell06Equilibrium, public Boolean Cell04Equilibrium => (_record & (1 << 3)) == 1;
Cell07Equilibrium, public Boolean Cell05Equilibrium => (_record & (1 << 4)) == 1;
Cell08Equilibrium public Boolean Cell06Equilibrium => (_record & (1 << 5)) == 1;
public Boolean Cell07Equilibrium => (_record & (1 << 6)) == 1;
public Boolean Cell08Equilibrium => (_record & (1 << 7)) == 1;
public EquilibriumState1(Byte record) => _record = record;
} }
// Enum for Equilibrium State 2 // Enum for Equilibrium State 2
public enum EquilibriumState2 public readonly struct EquilibriumState2
{ {
Cell09Equilibrium, private readonly Byte _record;
Cell10Equilibrium,
Cell11Equilibrium,
Cell12Equilibrium, public Boolean Cell09Equilibrium => (_record & (1 << 0)) == 1;
Cell13Equilibrium, public Boolean Cell10Equilibrium => (_record & (1 << 1)) == 1;
Cell14Equilibrium, public Boolean Cell11Equilibrium => (_record & (1 << 2)) == 1;
Cell15Equilibrium, public Boolean Cell12Equilibrium => (_record & (1 << 3)) == 1;
Cell16Equilibrium public Boolean Cell13Equilibrium => (_record & (1 << 4)) == 1;
public Boolean Cell14Equilibrium => (_record & (1 << 5)) == 1;
public Boolean Cell15Equilibrium => (_record & (1 << 6)) == 1;
public Boolean Cell16Equilibrium => (_record & (1 << 7)) == 1;
public EquilibriumState2(Byte record) => _record = record;
} }
// Enum for System State // Enum for System State
public enum SystemState public readonly struct SystemState
{ {
Discharge, private readonly Byte _record;
Charge,
FloatingCharge, public Boolean Discharge => (_record & (1 << 0)) == 1;
ReservationBit1, public Boolean Charge => (_record & (1 << 1)) == 1;
Standby, public Boolean FloatingCharge => (_record & (1 << 2)) == 1;
Shutdown, public Boolean ReservationBit1 => (_record & (1 << 3)) == 1;
ReservationBit2, public Boolean Standby => (_record & (1 << 4)) == 1;
ReservationBit3 public Boolean Shutdown => (_record & (1 << 5)) == 1;
public Boolean ReservationBit2 => (_record & (1 << 6)) == 1;
public Boolean ReservationBit3 => (_record & (1 << 7)) == 1;
public SystemState(Byte record) => _record = record;
} }
// Enum for Disconnection State 1 // Enum for Disconnection State 1
public enum DisconnectionState1 public readonly struct DisconnectionState1
{ {
Cell01Disconnection, private readonly Byte _record;
Cell02Disconnection,
Cell03Disconnection, public Boolean Cell01Disconnection => (_record & (1 << 0)) == 1;
Cell04Disconnection, public Boolean Cell02Disconnection => (_record & (1 << 1)) == 1;
Cell05Disconnection, public Boolean Cell03Disconnection => (_record & (1 << 2)) == 1;
Cell06Disconnection, public Boolean Cell04Disconnection => (_record & (1 << 3)) == 1;
Cell07Disconnection, public Boolean Cell05Disconnection => (_record & (1 << 4)) == 1;
Cell08Disconnection public Boolean Cell06Disconnection => (_record & (1 << 5)) == 1;
public Boolean Cell07Disconnection => (_record & (1 << 6)) == 1;
public Boolean Cell08Disconnection => (_record & (1 << 7)) == 1;
public DisconnectionState1(Byte record) => _record = record;
} }
// Enum for Disconnection State 2 // Enum for Disconnection State 2
public enum DisconnectionState2 public readonly struct DisconnectionState2
{ {
Cell09Disconnection, private readonly Byte _record;
Cell10Disconnection,
Cell11Disconnection,
Cell12Disconnection,
Cell13Disconnection,
Cell14Disconnection,
Cell15Disconnection,
Cell16Disconnection
}
public Boolean Cell09Disconnection => (_record & (1 << 0)) == 1;
public Boolean Cell10Disconnection => (_record & (1 << 1)) == 1;
public Boolean Cell11Disconnection => (_record & (1 << 2)) == 1;
public Boolean Cell12Disconnection => (_record & (1 << 3)) == 1;
public Boolean Cell13Disconnection => (_record & (1 << 4)) == 1;
public Boolean Cell14Disconnection => (_record & (1 << 5)) == 1;
public Boolean Cell15Disconnection => (_record & (1 << 6)) == 1;
public Boolean Cell16Disconnection => (_record & (1 << 7)) == 1;
public DisconnectionState2(Byte record) => _record = record;
}
// Enum for Alarm Event 7 // Enum for Alarm Event 7
public enum AlarmEvent7 public readonly struct AlarmEvent7
{ {
InsideBit1, private readonly Byte _record;
InsideBit2,
InsideBit3, public Boolean InsideBit1 => (_record & (1 << 0)) == 1;
InsideBit4, public Boolean InsideBit2 => (_record & (1 << 1)) == 1;
AutomaticChargingWaiting, public Boolean InsideBit3 => (_record & (1 << 2)) == 1;
ManualChargingWaiting, public Boolean InsideBit4 => (_record & (1 << 3)) == 1;
InsideBit5, public Boolean AutomaticChargingWaiting => (_record & (1 << 4)) == 1;
InsideBit6 public Boolean ManualChargingWaiting => (_record & (1 << 5)) == 1;
public Boolean InsideBit5 => (_record & (1 << 6)) == 1;
public Boolean InsideBit6 => (_record & (1 << 7)) == 1;
public AlarmEvent7(Byte record) => _record = record;
} }
// Enum for Alarm Event 8 // Enum for Alarm Event 8
public enum AlarmEvent8 public readonly struct AlarmEvent8
{ {
EepStorageFault, private readonly Byte _record;
RtcError,
VoltageCalibrationNotPerformed, public Boolean EepStorageFault => (_record & (1 << 0)) == 1;
CurrentCalibrationNotPerformed, public Boolean RtcError => (_record & (1 << 1)) == 1;
ZeroCalibrationNotPerformed, public Boolean VoltageCalibrationNotPerformed => (_record & (1 << 2)) == 1;
InsideBit1, public Boolean CurrentCalibrationNotPerformed => (_record & (1 << 3)) == 1;
InsideBit2, public Boolean ZeroCalibrationNotPerformed => (_record & (1 << 4)) == 1;
InsideBit3 public Boolean InsideBit1 => (_record & (1 << 5)) == 1;
public Boolean InsideBit2 => (_record & (1 << 6)) == 1;
public Boolean InsideBit3 => (_record & (1 << 7)) == 1;
public AlarmEvent8(Byte record) => _record = record;
} }
} }

View File

@ -5,32 +5,31 @@ namespace InnovEnergy.Lib.Devices.BatteryDeligreen;
public class BatteryDeligreenAlarmRecord public class BatteryDeligreenAlarmRecord
{ {
public List<String> CellAlarmList { get; set; } public List<String> CellAlarmList { get; }
public List<String> CellTemperatureAlarm { get; set; } public List<String> CellTemperatureAlarm { get; }
public String EnviTempAlarm { get; set; } public String EnviTempAlarm { get; }
public String PowerTempAlarm { get; set; } public String PowerTempAlarm { get; }
public String CurrentAlarm { get; set; } public String CurrentAlarm { get; }
public String TotalVoltageAlarm { get; set; } public String TotalVoltageAlarm { get; }
public AlarmEvent1_ AlarmEvent1 { get; set; } public AlarmEvent1 AlarmEvent1 { get; }
/* public AlarmBitMessage.AlarmEvent2 AlarmEvent2 { get; set; } public AlarmEvent2 AlarmEvent2 { get; }
public AlarmBitMessage.AlarmEvent3 AlarmEvent3 { get; set; } public AlarmEvent3 AlarmEvent3 { get; }
public AlarmBitMessage.AlarmEvent4 AlarmEvent4 { get; set; } public AlarmEvent4 AlarmEvent4 { get; }
public AlarmBitMessage.AlarmEvent5 AlarmEvent5 { get; set; } public AlarmEvent5 AlarmEvent5 { get; }
public AlarmBitMessage.AlarmEvent6 AlarmEvent6 { get; set; } public AlarmEvent6 AlarmEvent6 { get; }
public AlarmBitMessage.AlarmEvent7 AlarmEvent7 { get; set; } public AlarmEvent7 AlarmEvent7 { get; }
public AlarmBitMessage.AlarmEvent8 AlarmEvent8 { get; set; } public AlarmEvent8 AlarmEvent8 { get; }
public DisconnectionState1 DisconnectionState1 { get; }
public AlarmBitMessage.DisconnectionState1 DisconnectionState1 { get; set; } public DisconnectionState2 DisconnectionState2 { get; }
public AlarmBitMessage.DisconnectionState2 DisconnectionState2 { get; set; } public EquilibriumState1 EquilibriumState1 { get; }
public AlarmBitMessage.EquilibriumState1 EquilibriumState1 { get; set; } public EquilibriumState2 EquilibriumState2 { get; }
public AlarmBitMessage.EquilibriumState2 EquilibriumState2 { get; set; } public OnOffState OnOffState { get; }
public AlarmBitMessage.OnOffState OnOffState { get; set; } public SystemState SystemState { get; }
public AlarmBitMessage.SystemState SystemState { get; set; }*/
public BatteryDeligreenAlarmRecord( List<String> cellAlarmList, List<String> cellTemperatureAlarm, String enviTempAlarm1, String powerTempAlarm1, public BatteryDeligreenAlarmRecord( List<String> cellAlarmList, List<String> cellTemperatureAlarm, String enviTempAlarm1, String powerTempAlarm1,
String currentAlarm1, String totalVoltageAlarm1, Byte alarmEvent1/*, Enum alarmEvent2, Enum alarmEvent3, String currentAlarm1, String totalVoltageAlarm1, Byte alarmEvent1, Byte alarmEvent2, Byte alarmEvent3,
Enum alarmEvent4, Enum alarmEvent5, Enum alarmEvent6, Enum alarmEvent7, Enum alarmEvent8, Enum disconnectionState1, Byte alarmEvent4, Byte alarmEvent5, Byte alarmEvent6, Byte alarmEvent7, Byte alarmEvent8, Byte disconnectionState1,
Enum disconnectionState2, Enum equilibriumState1, Enum equilibriumState2, Enum onOffState, Enum systemState*/) Byte disconnectionState2, Byte equilibriumState1, Byte equilibriumState2, Byte onOffState, Byte systemState)
{ {
CellAlarmList = cellAlarmList; CellAlarmList = cellAlarmList;
CellTemperatureAlarm = cellTemperatureAlarm; CellTemperatureAlarm = cellTemperatureAlarm;
@ -38,6 +37,23 @@ public class BatteryDeligreenAlarmRecord
PowerTempAlarm = powerTempAlarm1; PowerTempAlarm = powerTempAlarm1;
CurrentAlarm = currentAlarm1; CurrentAlarm = currentAlarm1;
TotalVoltageAlarm = totalVoltageAlarm1; TotalVoltageAlarm = totalVoltageAlarm1;
AlarmEvent1 = new AlarmEvent1_(alarmEvent1);
AlarmEvent1 = new AlarmEvent1(alarmEvent1);
AlarmEvent2 = new AlarmEvent2(alarmEvent2);
AlarmEvent3 = new AlarmEvent3(alarmEvent3);
AlarmEvent4 = new AlarmEvent4(alarmEvent4);
AlarmEvent5 = new AlarmEvent5(alarmEvent5);
AlarmEvent6 = new AlarmEvent6(alarmEvent6);
AlarmEvent7 = new AlarmEvent7(alarmEvent7);
AlarmEvent8 = new AlarmEvent8(alarmEvent8);
DisconnectionState1 = new DisconnectionState1(disconnectionState1);
DisconnectionState2 = new DisconnectionState2(disconnectionState2);
EquilibriumState1 = new EquilibriumState1(equilibriumState1);
EquilibriumState2 = new EquilibriumState2(equilibriumState2);
OnOffState = new OnOffState(onOffState);
SystemState = new SystemState(systemState);
} }
} }