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