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 readonly struct AlarmEvent1_
public readonly struct AlarmEvent1
{
private readonly Byte _record;
@ -16,7 +16,7 @@ public class AlarmBitMessage
public Boolean DischargeSwitchFault => (_record & (1 << 6)) == 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
public enum AlarmEvent2
public readonly struct AlarmEvent2
{
MonomerHighVoltageAlarm,
MonomerOvervoltageProtection,
MonomerLowVoltageAlarm,
MonomerUnderVoltageProtection,
HighVoltageAlarmForTotalVoltage,
OvervoltageProtectionForTotalVoltage,
LowVoltageAlarmForTotalVoltage,
UnderVoltageProtectionForTotalVoltage
private readonly Byte _record;
public Boolean MonomerHighVoltageAlarm => (_record & (1 << 0)) == 1;
public Boolean MonomerOvervoltageProtection => (_record & (1 << 1)) == 1;
public Boolean MonomerLowVoltageAlarm => (_record & (1 << 2)) == 1;
public Boolean MonomerUnderVoltageProtection => (_record & (1 << 3)) == 1;
public Boolean HighVoltageAlarmForTotalVoltage => (_record & (1 << 4)) == 1;
public Boolean OvervoltageProtectionForTotalVoltage => (_record & (1 << 5)) == 1;
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
public enum AlarmEvent3
public readonly struct AlarmEvent3
{
ChargeHighTemperatureAlarm,
ChargeOverTemperatureProtection,
ChargeLowTemperatureAlarm,
ChargeUnderTemperatureProtection,
DischargeHighTemperatureAlarm,
DischargeOverTemperatureProtection,
DischargeLowTemperatureAlarm,
DischargeUnderTemperatureProtection
private readonly Byte _record;
public Boolean ChargeHighTemperatureAlarm => (_record & (1 << 0)) == 1;
public Boolean ChargeOverTemperatureProtection => (_record & (1 << 1)) == 1;
public Boolean ChargeLowTemperatureAlarm => (_record & (1 << 2)) == 1;
public Boolean ChargeUnderTemperatureProtection => (_record & (1 << 3)) == 1;
public Boolean DischargeHighTemperatureAlarm => (_record & (1 << 4)) == 1;
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
public enum AlarmEvent4
public readonly struct AlarmEvent4
{
EnvironmentHighTemperatureAlarm,
EnvironmentOverTemperatureProtection,
EnvironmentLowTemperatureAlarm,
EnvironmentUnderTemperatureProtection,
PowerOverTemperatureProtection,
PowerHighTemperatureAlarm,
CellLowTemperatureHeating,
ReservationBit
private readonly Byte _record;
public Boolean EnvironmentHighTemperatureAlarm => (_record & (1 << 0)) == 1;
public Boolean EnvironmentOverTemperatureProtection => (_record & (1 << 1)) == 1;
public Boolean EnvironmentLowTemperatureAlarm => (_record & (1 << 2)) == 1;
public Boolean EnvironmentUnderTemperatureProtection => (_record & (1 << 3)) == 1;
public Boolean PowerOverTemperatureProtection => (_record & (1 << 4)) == 1;
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
public enum AlarmEvent5
public readonly struct AlarmEvent5
{
ChargeOverCurrentAlarm,
ChargeOverCurrentProtection,
DischargeOverCurrentAlarm,
DischargeOverCurrentProtection,
TransientOverCurrentProtection,
OutputShortCircuitProtection,
TransientOverCurrentLockout,
OutputShortCircuitLockout
private readonly Byte _record;
public Boolean ChargeOverCurrentAlarm => (_record & (1 << 0)) == 1;
public Boolean ChargeOverCurrentProtection => (_record & (1 << 1)) == 1;
public Boolean DischargeOverCurrentAlarm => (_record & (1 << 2)) == 1;
public Boolean DischargeOverCurrentProtection => (_record & (1 << 3)) == 1;
public Boolean TransientOverCurrentProtection => (_record & (1 << 4)) == 1;
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
public enum AlarmEvent6
public readonly struct AlarmEvent6
{
ChargeHighVoltageProtection,
IntermittentRechargeWaiting,
ResidualCapacityAlarm,
ResidualCapacityProtection,
CellLowVoltageChargingProhibition,
OutputReversePolarityProtection,
OutputConnectionFault,
InsideBit
private readonly Byte _record;
public Boolean ChargeHighVoltageProtection => (_record & (1 << 0)) == 1;
public Boolean IntermittentRechargeWaiting => (_record & (1 << 1)) == 1;
public Boolean ResidualCapacityAlarm => (_record & (1 << 2)) == 1;
public Boolean ResidualCapacityProtection => (_record & (1 << 3)) == 1;
public Boolean CellLowVoltageChargingProhibition => (_record & (1 << 4)) == 1;
public Boolean OutputReversePolarityProtection => (_record & (1 << 5)) == 1;
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
public enum OnOffState
public readonly struct OnOffState
{
DischargeSwitchState,
ChargeSwitchState,
CurrentLimitSwitchState,
HeatingSwitchState,
ReservationBit1,
ReservationBit2,
ReservationBit3,
ReservationBit4
private readonly Byte _record;
public Boolean DischargeSwitchState => (_record & (1 << 0)) == 1;
public Boolean ChargeSwitchState => (_record & (1 << 1)) == 1;
public Boolean CurrentLimitSwitchStat => (_record & (1 << 2)) == 1;
public Boolean HeatingSwitchState => (_record & (1 << 3)) == 1;
public Boolean ReservationBit1 => (_record & (1 << 4)) == 1;
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
public enum EquilibriumState1
public readonly struct EquilibriumState1
{
Cell01Equilibrium,
Cell02Equilibrium,
Cell03Equilibrium,
Cell04Equilibrium,
Cell05Equilibrium,
Cell06Equilibrium,
Cell07Equilibrium,
Cell08Equilibrium
private readonly Byte _record;
public Boolean Cell01Equilibrium => (_record & (1 << 0)) == 1;
public Boolean Cell02Equilibrium => (_record & (1 << 1)) == 1;
public Boolean Cell03Equilibrium => (_record & (1 << 2)) == 1;
public Boolean Cell04Equilibrium => (_record & (1 << 3)) == 1;
public Boolean Cell05Equilibrium => (_record & (1 << 4)) == 1;
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
public enum EquilibriumState2
public readonly struct EquilibriumState2
{
Cell09Equilibrium,
Cell10Equilibrium,
Cell11Equilibrium,
Cell12Equilibrium,
Cell13Equilibrium,
Cell14Equilibrium,
Cell15Equilibrium,
Cell16Equilibrium
private readonly Byte _record;
public Boolean Cell09Equilibrium => (_record & (1 << 0)) == 1;
public Boolean Cell10Equilibrium => (_record & (1 << 1)) == 1;
public Boolean Cell11Equilibrium => (_record & (1 << 2)) == 1;
public Boolean Cell12Equilibrium => (_record & (1 << 3)) == 1;
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
public enum SystemState
public readonly struct SystemState
{
Discharge,
Charge,
FloatingCharge,
ReservationBit1,
Standby,
Shutdown,
ReservationBit2,
ReservationBit3
private readonly Byte _record;
public Boolean Discharge => (_record & (1 << 0)) == 1;
public Boolean Charge => (_record & (1 << 1)) == 1;
public Boolean FloatingCharge => (_record & (1 << 2)) == 1;
public Boolean ReservationBit1 => (_record & (1 << 3)) == 1;
public Boolean Standby => (_record & (1 << 4)) == 1;
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
public enum DisconnectionState1
public readonly struct DisconnectionState1
{
Cell01Disconnection,
Cell02Disconnection,
Cell03Disconnection,
Cell04Disconnection,
Cell05Disconnection,
Cell06Disconnection,
Cell07Disconnection,
Cell08Disconnection
private readonly Byte _record;
public Boolean Cell01Disconnection => (_record & (1 << 0)) == 1;
public Boolean Cell02Disconnection => (_record & (1 << 1)) == 1;
public Boolean Cell03Disconnection => (_record & (1 << 2)) == 1;
public Boolean Cell04Disconnection => (_record & (1 << 3)) == 1;
public Boolean Cell05Disconnection => (_record & (1 << 4)) == 1;
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
public enum DisconnectionState2
public readonly struct DisconnectionState2
{
Cell09Disconnection,
Cell10Disconnection,
Cell11Disconnection,
Cell12Disconnection,
Cell13Disconnection,
Cell14Disconnection,
Cell15Disconnection,
Cell16Disconnection
}
private readonly Byte _record;
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
public enum AlarmEvent7
public readonly struct AlarmEvent7
{
InsideBit1,
InsideBit2,
InsideBit3,
InsideBit4,
AutomaticChargingWaiting,
ManualChargingWaiting,
InsideBit5,
InsideBit6
private readonly Byte _record;
public Boolean InsideBit1 => (_record & (1 << 0)) == 1;
public Boolean InsideBit2 => (_record & (1 << 1)) == 1;
public Boolean InsideBit3 => (_record & (1 << 2)) == 1;
public Boolean InsideBit4 => (_record & (1 << 3)) == 1;
public Boolean AutomaticChargingWaiting => (_record & (1 << 4)) == 1;
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
public enum AlarmEvent8
public readonly struct AlarmEvent8
{
EepStorageFault,
RtcError,
VoltageCalibrationNotPerformed,
CurrentCalibrationNotPerformed,
ZeroCalibrationNotPerformed,
InsideBit1,
InsideBit2,
InsideBit3
private readonly Byte _record;
public Boolean EepStorageFault => (_record & (1 << 0)) == 1;
public Boolean RtcError => (_record & (1 << 1)) == 1;
public Boolean VoltageCalibrationNotPerformed => (_record & (1 << 2)) == 1;
public Boolean CurrentCalibrationNotPerformed => (_record & (1 << 3)) == 1;
public Boolean ZeroCalibrationNotPerformed => (_record & (1 << 4)) == 1;
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 List<String> CellAlarmList { get; set; }
public List<String> CellTemperatureAlarm { get; set; }
public String EnviTempAlarm { get; set; }
public String PowerTempAlarm { get; set; }
public String CurrentAlarm { get; set; }
public String TotalVoltageAlarm { get; set; }
public AlarmEvent1_ AlarmEvent1 { get; set; }
/* public AlarmBitMessage.AlarmEvent2 AlarmEvent2 { get; set; }
public AlarmBitMessage.AlarmEvent3 AlarmEvent3 { get; set; }
public AlarmBitMessage.AlarmEvent4 AlarmEvent4 { get; set; }
public AlarmBitMessage.AlarmEvent5 AlarmEvent5 { get; set; }
public AlarmBitMessage.AlarmEvent6 AlarmEvent6 { get; set; }
public AlarmBitMessage.AlarmEvent7 AlarmEvent7 { get; set; }
public AlarmBitMessage.AlarmEvent8 AlarmEvent8 { get; set; }
public AlarmBitMessage.DisconnectionState1 DisconnectionState1 { get; set; }
public AlarmBitMessage.DisconnectionState2 DisconnectionState2 { get; set; }
public AlarmBitMessage.EquilibriumState1 EquilibriumState1 { get; set; }
public AlarmBitMessage.EquilibriumState2 EquilibriumState2 { get; set; }
public AlarmBitMessage.OnOffState OnOffState { get; set; }
public AlarmBitMessage.SystemState SystemState { get; set; }*/
public List<String> CellAlarmList { get; }
public List<String> CellTemperatureAlarm { get; }
public String EnviTempAlarm { get; }
public String PowerTempAlarm { get; }
public String CurrentAlarm { get; }
public String TotalVoltageAlarm { get; }
public AlarmEvent1 AlarmEvent1 { get; }
public AlarmEvent2 AlarmEvent2 { get; }
public AlarmEvent3 AlarmEvent3 { get; }
public AlarmEvent4 AlarmEvent4 { get; }
public AlarmEvent5 AlarmEvent5 { get; }
public AlarmEvent6 AlarmEvent6 { get; }
public AlarmEvent7 AlarmEvent7 { get; }
public AlarmEvent8 AlarmEvent8 { get; }
public DisconnectionState1 DisconnectionState1 { get; }
public DisconnectionState2 DisconnectionState2 { get; }
public EquilibriumState1 EquilibriumState1 { get; }
public EquilibriumState2 EquilibriumState2 { get; }
public OnOffState OnOffState { get; }
public SystemState SystemState { get; }
public BatteryDeligreenAlarmRecord( List<String> cellAlarmList, List<String> cellTemperatureAlarm, String enviTempAlarm1, String powerTempAlarm1,
String currentAlarm1, String totalVoltageAlarm1, Byte alarmEvent1/*, Enum alarmEvent2, Enum alarmEvent3,
Enum alarmEvent4, Enum alarmEvent5, Enum alarmEvent6, Enum alarmEvent7, Enum alarmEvent8, Enum disconnectionState1,
Enum disconnectionState2, Enum equilibriumState1, Enum equilibriumState2, Enum onOffState, Enum systemState*/)
String currentAlarm1, String totalVoltageAlarm1, Byte alarmEvent1, Byte alarmEvent2, Byte alarmEvent3,
Byte alarmEvent4, Byte alarmEvent5, Byte alarmEvent6, Byte alarmEvent7, Byte alarmEvent8, Byte disconnectionState1,
Byte disconnectionState2, Byte equilibriumState1, Byte equilibriumState2, Byte onOffState, Byte systemState)
{
CellAlarmList = cellAlarmList;
CellTemperatureAlarm = cellTemperatureAlarm;
@ -38,6 +37,23 @@ public class BatteryDeligreenAlarmRecord
PowerTempAlarm = powerTempAlarm1;
CurrentAlarm = currentAlarm1;
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);
}
}