diff --git a/csharp/App/GrowattCommunication/MiddlewareClasses/RabbitMQManager.cs b/csharp/App/GrowattCommunication/MiddlewareClasses/RabbitMQManager.cs index 2207ba0af..01c5ff692 100644 --- a/csharp/App/GrowattCommunication/MiddlewareClasses/RabbitMQManager.cs +++ b/csharp/App/GrowattCommunication/MiddlewareClasses/RabbitMQManager.cs @@ -56,6 +56,4 @@ public static class RabbitMqManager Console.WriteLine($"Producer sent message: {message}"); } - - } \ No newline at end of file diff --git a/csharp/Lib/Devices/WITGrowatt4-15K/DataType/GrowattErrorCode.cs b/csharp/Lib/Devices/WITGrowatt4-15K/DataType/GrowattErrorCode.cs new file mode 100644 index 000000000..3a231e963 --- /dev/null +++ b/csharp/Lib/Devices/WITGrowatt4-15K/DataType/GrowattErrorCode.cs @@ -0,0 +1,58 @@ +namespace InnovEnergy.Lib.Devices.WITGrowatt4_15K.DataType; + +public enum GrowattErrorCode +{ + NoAlarm = 0, + ExportLimitationFailSafe = 311, + + DcBiasAbnormal = 400, + HighDcComponentOutputCurrent = 402, + BusVoltageSamplingAbnormal = 404, + RelayFault = 405, + OverTemperature = 408, + BusVoltageAbnormal = 409, + + InternalCommunicationFailure = 411, + TemperatureSensorDisconnected = 412, + IgbtDriveFault = 413, + EepromError = 414, + AuxiliaryPowerAbnormal = 415, + DcAcOvercurrentProtection = 416, + + CommunicationProtocolMismatch = 417, + DspComFirmwareMismatch = 418, + DspSoftwareHardwareMismatch = 419, + CpldAbnormal = 421, + RedundancySamplingInconsistent = 422, + PwmPassThroughSignalFailure = 423, + AfciSelfTestFailure = 425, + PvCurrentSamplingAbnormal = 426, + AcCurrentSamplingAbnormal = 427, + BusSoftbootFailure = 429, + EpoFault = 430, + MonitoringChipBootVerificationFailed = 431, + + BmsCommunicationFailure = 500, + BmsChargeDischargeFailure = 501, + BatteryVoltageLow = 502, + BatteryVoltageHigh = 503, + BatteryTemperatureAbnormal = 504, + BatteryReversed = 505, + BatteryOpenCircuit = 506, + BatteryOverloadProtection = 507, + Bus2VoltageAbnormal = 508, + + BatteryChargeOcp = 509, + BatteryDischargeOcp = 510, + BatterySoftStartFailed = 511, + + EpsOutputShortCircuited = 600, + OffGridBusVoltageLow = 601, + OffGridTerminalVoltageAbnormal = 602, + SoftStartFailed = 603, + OffGridOutputVoltageAbnormal = 604, + BalancedCircuitSelfTestFailed = 605, + HighDcComponentOutputVoltage = 606, + OffGridOutputOverload = 607, + OffGridParallelSignalAbnormal = 608 +} \ No newline at end of file diff --git a/csharp/Lib/Devices/WITGrowatt4-15K/DataType/GrowattWarningCode.cs b/csharp/Lib/Devices/WITGrowatt4-15K/DataType/GrowattWarningCode.cs new file mode 100644 index 000000000..97e0fd8ac --- /dev/null +++ b/csharp/Lib/Devices/WITGrowatt4-15K/DataType/GrowattWarningCode.cs @@ -0,0 +1,58 @@ +namespace InnovEnergy.Lib.Devices.WITGrowatt4_15K.DataType; + +public enum GrowattWarningCode : UInt16 +{ + NoAlarm =0, + StringFault = 200, + PvStringPidQuickConnectAbnormal = 201, + DcSpdFunctionAbnormal = 202, + PvShortCircuited = 203, + PvBoostDriverAbnormal = 204, + AcSpdFunctionAbnormal = 205, + DcFuseBlown = 208, + + DcInputVoltageTooHigh = 209, + PvReversed = 210, + PidFunctionAbnormal = 219, + PvStringDisconnected = 220, + PvStringCurrentUnbalanced = 221, + + NoUtilityGrid = 300, + GridVoltageOutOfRange = 301, + GridFrequencyOutOfRange = 302, + Overload = 303, + MeterDisconnected = 308, + MeterReverselyConnected = 309, + LinePeVoltageAbnormal = 310, + PhaseSequenceError = 311, + + FanFailure = 400, + MeterAbnormal = 401, + OptimizerCommunicationAbnormal = 402, + OverTemperature = 407, + OverTemperatureAlarm = 408, + NtcTemperatureSensorBroken = 409, + SyncSignalAbnormal = 411, + GridStartupConditionsNotMet = 412, + + BatteryCommunicationFailure = 500, + BatteryDisconnected = 501, + BatteryVoltageTooHigh = 502, + BatteryVoltageTooLow = 503, + BatteryReverseConnected = 504, + LeadAcidTempSensorDisconnected = 505, + BatteryTemperatureOutOfRange = 506, + BmsFault = 507, + LithiumBatteryOverload = 508, + BmsCommunicationAbnormal = 509, + BatterySpdAbnormal = 510, + + OutputDcComponentBiasAbnormal = 600, + DcComponentOverHighOutputVoltage = 601, + OffGridOutputVoltageTooLow = 602, + OffGridOutputVoltageTooHigh = 603, + OffGridOutputOverCurrent = 604, + OffGridBusVoltageTooLow = 605, + OffGridOutputOverload = 606, + BalancedCircuitAbnormal = 609 +} diff --git a/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Api.cs b/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Api.cs index 4fd1ab729..4d29fc83d 100644 --- a/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Api.cs +++ b/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Api.cs @@ -42,10 +42,10 @@ public partial class WITGrowatRecord public BatteryoperatinStatus BatteryOperatingMode => (BatteryoperatinStatus) _batteryOperatingMode; public OperatingPriority OperatingMode => (OperatingPriority)_operatingPriority; - public UInt16 FaultMainCode => _faultMainCode; // need to pre proceesed - public UInt16 FaultSubCode => _faultSubCode; // need to pre proceesed - public UInt16 WarningMainCode => _warningMainCode; // need to pre proceesed - public UInt16 WarningSubCode => _warningSubCode; // need to pre proceesed + public GrowattErrorCode FaultMainCode => _faultMainCode; // need to pre proceesed + public UInt16 FaultSubCode => _faultSubCode; // need to pre proceesed + public GrowattWarningCode WarningMainCode => _warningMainCode; // need to pre proceesed + public UInt16 WarningSubCode => _warningSubCode; // need to pre proceesed public Voltage Pv1Voltage => _pv1Voltage; public Current Pv1Current => _pv1Current; @@ -96,10 +96,10 @@ public partial class WITGrowatRecord get => _VppProtocolVerNumber; } - public Boolean ControlPermession + public Boolean ControlPermission { - get => _ControlPermession; - set => _ControlPermession = value; + get => _ControlPermission; + set => _ControlPermission = value; } public Boolean EnableCommand @@ -172,16 +172,16 @@ public partial class WITGrowatRecord set => _BatteryMaxDischargePower = value; } - public Percent ChargeCutoffSocVoltage + public Voltage ChargeCutoffSocVoltage { - get => _BatteryChargeCutoffVoltage; - set => _BatteryChargeCutoffVoltage = (UInt16)value; + get => _batteryChargeCutoffVoltage; + set => _batteryChargeCutoffVoltage = (UInt16)value; } - public Percent DischargeCutoffVoltage + public Voltage DischargeCutoffVoltage { - get => _BatteryDischargeCutoffVoltage; - set => _BatteryDischargeCutoffVoltage = (UInt16)value; + get => _batteryDischargeCutoffVoltage; + set => _batteryDischargeCutoffVoltage = (UInt16)value; } public Percent LoadPriorityDischargeCutoffSoc @@ -249,9 +249,8 @@ public partial class WITGrowatRecord set => _batteryMaxDischargingCurrent = (UInt16) value; } - public Double Battery1MaxDischargingCurrent => _batteryMaxDischargingCurrent; - - public Double Battery1MaxChargingCurrent => _batteryMaxChargingCurrent; + public Double Battery1MaxDischargingCurrent => _batteryMaxDischargingCurrent; + public Double Battery1MaxChargingCurrent => _batteryMaxChargingCurrent; public Percent Battery1Soc => _BatterySoc1; public Percent Battery1Soh => _BatterySoh1; diff --git a/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Modbus.cs b/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Modbus.cs index 63ad4b751..b31a63090 100644 --- a/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Modbus.cs +++ b/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Modbus.cs @@ -1,3 +1,4 @@ +using InnovEnergy.Lib.Devices.WITGrowatt4_15K.DataType; using InnovEnergy.Lib.Protocols.Modbus.Reflection.Attributes; namespace InnovEnergy.Lib.Devices.WITGrowatt4_15K; @@ -19,9 +20,9 @@ public partial class WITGrowatRecord [InputRegister(31002)] private UInt16 _operatingPriority; [InputRegister(31003)] private UInt16 _reserved1; [InputRegister(31004)] private UInt16 _reserved2; - [InputRegister(31005)] private UInt16 _faultMainCode;// Can we change this to warning? + [InputRegister(31005)] private GrowattErrorCode _faultMainCode;// Can we change this to warning? [InputRegister(31006)] private UInt16 _faultSubCode; // Can we change this to warning? - [InputRegister(31007)] private UInt16 _warningMainCode; + [InputRegister(31007)] private GrowattWarningCode _warningMainCode; [InputRegister(31008)] private UInt16 _warningSubCode; [InputRegister(31009)] private UInt16 _reserved3; // 31010–31099 — PV Parameters @@ -144,7 +145,7 @@ public partial class WITGrowatRecord [HoldingRegister(30030)] private UInt16 _BatteryType; [HoldingRegister(30099)] private UInt16 _VppProtocolVerNumber; - [HoldingRegister(30100, writable: true)] private Boolean _ControlPermession; // 0 Disabled, 1 enabled + [HoldingRegister(30100, writable: true)] private Boolean _ControlPermission; // 0 Disabled, 1 enabled [HoldingRegister(30101, writable: true)] private Boolean _EnableCommand; // 0: Off, 1: On; Defaut is 1; not stored, must enable this register to control inverter [HoldingRegister(30102)] private UInt16 _CountryRegionCode; [HoldingRegister(30103)] private UInt16 _Reserved8; @@ -166,7 +167,7 @@ public partial class WITGrowatRecord [HoldingRegister(30162)] private UInt16 _PowerFactor; // [0, 2000] ∪ [18000, 20000]; Default: 20000; Actual PF = (Register Value - 10000) [HoldingRegister(30203, writable : true)] private UInt16 _EmsCommunicationFailureTime; // [1,300] TODO to 30 - [HoldingRegister(30204, writable : true)] private Boolean _EnableEmsCommunicationFailureTime; // 0: disabled, 1 = enabled we should enable this TODO + [HoldingRegister(30204, writable : true)] private Boolean _EnableEmsCommunicationFailureTime; // 0: disabled, 1 = enabled we should not enable this the naming is not correct [HoldingRegister(30300)] private UInt16 _BatteryClusterIndex; // [0..3] [HoldingRegister(30400 , writable: true)] private UInt32 _BatteryMaxChargePower; // @@ -182,8 +183,8 @@ public partial class WITGrowatRecord [HoldingRegister(30474)] private UInt16 _ActualChargeDischargePowerControlValue; // [HoldingRegister(30475)] private UInt16 _OffGridDischargeCutoffSoc; // - [HoldingRegister(30496, writable: true, Scale = 0.1)] private UInt16 _BatteryChargeCutoffVoltage; // - [HoldingRegister(30497, writable: true, Scale = 0.1)] private UInt16 _BatteryDischargeCutoffVoltage; // + [HoldingRegister(30496, writable: true, Scale = 0.1)] private UInt16 _batteryChargeCutoffVoltage; // + [HoldingRegister(30497, writable: true, Scale = 0.1)] private UInt16 _batteryDischargeCutoffVoltage; // [HoldingRegister(30498, writable: true, Scale = 0.1)] private UInt16 _batteryMaxChargingCurrent; // [HoldingRegister(30499, writable: true, Scale = 0.1)] private UInt16 _batteryMaxDischargingCurrent; //*/ } \ No newline at end of file