Innovenergy_trunk/csharp/Lib/Devices/WITGrowatt4-15K/WITGrowatRecord.Modbus.cs

180 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using InnovEnergy.Lib.Protocols.Modbus.Reflection.Attributes;
namespace InnovEnergy.Lib.Devices.WITGrowatt4_15K;
#pragma warning disable CS0169, CS0649
[BigEndian]
// ReSharper disable once InconsistentNaming
public partial class WITGrowatRecord
{
/****************************** Input registers ****************************/
[InputRegister<Int32>(35, Scale = 0.1)] private Int32 _GridPower;
// 3100031009 — Operating Status Info
[InputRegister(31000)] private UInt16 _SystemOperatingMode;
[InputRegister(31001)] private UInt16 _BatteryOperatingMode;
[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(31006)] private UInt16 _FaultSubCode; // Can we change this to warning?
[InputRegister(31007)] private UInt16 _WarningMainCode;
[InputRegister(31008)] private UInt16 _WarningSubCode;
[InputRegister(31009)] private UInt16 _Reserved3;
// 3101031099 — PV Parameters
[InputRegister(31010)] private Int16 _Pv1Voltage;
[InputRegister(31011)] private Int16 _Pv1Current;
[InputRegister(31012)] private Int16 _Pv2Voltage;
[InputRegister(31013)] private Int16 _Pv2Current;
[InputRegister(31058)] private Int16 _Pv1InpuPower;
//— AC Side 31100 - 31199
[InputRegister<Int32>(31100, Scale = 0.1)] private Int32 _ActivePower; // Positive: feed to grid, Negative: draw from the grid
[InputRegister<Int32>(31102, Scale = 0.1)] private Int32 _ReactivePower; // Positive: capacitive, Negative: Inductive
[InputRegister(31104, Scale = 0.1)] private Int16 _Reserved4;
[InputRegister(31105, Scale = 0.01)] private UInt16 _Frequency;
[InputRegister(31106, Scale = 0.1)] private UInt16 _GridAbLineVoltage;
[InputRegister(31107, Scale = 0.1)] private UInt16 _GridBcLineVoltage;
[InputRegister(31108, Scale = 0.1)] private UInt16 _GridCaLineVoltage;
[InputRegister(31109, Scale = 0.1)] private Int16 _PhaseACurrent;
[InputRegister(31110, Scale = 0.1)] private Int16 _PhaseBCurrent;
[InputRegister(31111, Scale = 0.1)] private Int16 _PhaseCCurrent;
[InputRegister<Int32>(31112)] private Int32 _MeterPower; //Positive: draw from grid; Negative: feed to grid
[InputRegister(31114, Scale = 0.1)] private Int16 _InverterTemperature; // -400, 150
[InputRegister(31115, Scale = 0.1)] private Int16 _Reserved5;
[InputRegister(31116, Scale = 0.1)] private Int16 _Reserved6;
[InputRegister(31117, Scale = 0.1)] private Int16 _Reserved7;
[InputRegister<UInt32>(31118, Scale = 0.1)] private UInt32 _EnergyToUser; // consumption
[InputRegister<UInt32>(31120, Scale = 0.1)] private UInt32 _TotalEnergyToUser;
[InputRegister<UInt32>(31122, Scale = 0.1)] private UInt32 _EnergyToGrid; // exportation
[InputRegister<UInt32>(31124, Scale = 0.1)] private UInt32 _TotalEnergyToGrid;
// 3120031299 — First Battery Cluster Info (incl. BDC and BMS)
[InputRegister<Int32>(31200)] private Int32 _BatteryPower1; // positive Charge, Negative Discharge
[InputRegister<UInt32>(31202)] private UInt32 _DailyChargeEnergy1; // 0.1 kw
[InputRegister<UInt32>(31204)] private UInt32 _AccumulatedChargeEnergy1; // 0.1kw
[InputRegister<UInt32>(31206)] private UInt32 _DailyDischargeEnergy1; //0.1kw
[InputRegister<UInt32>(31208)] private UInt32 _AccumulatedDishargeEnergy1; // 0.1kw
[InputRegister<UInt32>(31210)] private UInt32 _BatteryMaxAllowableChargePower1; //
[InputRegister<UInt32>(31212)] private UInt32 _BatteryMaxAllowableDischargePower1; //
[InputRegister(31214)] private Int16 _BatteryVoltage1; //
[InputRegister<Int32>(31215, Scale = 0.1)] private Int32 _BatteryCurrent1; //
[InputRegister(31217)] private UInt16 _BatterySoc1; //
[InputRegister(31218)] private UInt16 _BatterySoh1; //
[InputRegister(31219)] private UInt32 _FullyChargedCapacity; //
[InputRegister(31221)] private UInt32 _BatteryRemainingCapacity; //
[InputRegister(31223)] private Int16 _BatteryAmbientTemperature1; //
[InputRegister(31224)] private UInt16 _BatteryHighestTemperature; //
[InputRegister(31225)] private UInt16 _ClusterTotalNumber1; //
[InputRegister(31226)] private UInt16 _ModulesPerCluster; //
[InputRegister(31227)] private UInt16 _ModuleRatedVoltage; //
[InputRegister(31228)] private UInt16 _ModuleRatedCapacity; //
// 3130031399 — Second Battery Cluster Info (incl. BDC and BMS)
/* [InputRegister<Int32>(31300)] private Int32 _BatteryPower2; // positive Charge, Negative Discharge
[InputRegister<UInt32>(31302)] private UInt32 _DailyChargeEnergy2;
[InputRegister<UInt32>(31304)] private UInt32 _AccumulatedChargeEnergy2;
[InputRegister<UInt32>(31206)] private UInt32 _DailyDischargeEnergy2; //0.1kw
[InputRegister<UInt32>(31308)] private UInt32 _AccumulatedDischargeEnergy2;
[InputRegister<UInt32>(31310)] private UInt32 _BatteryMaxAllowableChargePower2; //
[InputRegister<UInt32>(31312)] private UInt32 _BatteryMaxAllowableDischargePower2; //
[InputRegister(31314)] private Int16 _BatteryVoltage2; //
[InputRegister<Int32>(31315)] private Int32 _BatteryCurrent2; //
[InputRegister(31317)] private UInt16 _BatterySoc2; //
[InputRegister(31318)] private UInt16 _BatterySoh2; //
//[InputRegister(31325)] public UInt16 _ClusterTotalNumber2; //
[InputRegister(31323, Scale = 0.1)] private Int16 _BatteryAmbientTemperature2; // */
// 3140031499 — Third Battery Cluster Info (incl. BDC and BMS)
/* [InputRegister(31400, Scale = 0.1)] private Int32 _BatteryPower3; // positive Charge, Negative Discharge
[InputRegister(31402, Scale = 0.1)] private UInt32 _DailyChargeEnergy3;
[InputRegister(31404, Scale = 0.1)] private UInt32 _DailyDischargeEnergy3;
[InputRegister(31410, Scale = 0.1)] private UInt32 _BatteryMaxAllowableChargePower3; //
[InputRegister(31412, Scale = 0.1)] private UInt32 _BatteryMaxAllowableDischargePower3; //
[InputRegister(31414, Scale = 0.1)] private Int16 _BatteryVoltage3; //
[InputRegister(31415, Scale = 0.1)] private Int32 _BatteryCurrent3; //
[InputRegister(31417)] private UInt16 _BatterySoc3; //
[InputRegister(31418)] private UInt16 _BatterySoh3; //
[InputRegister(31425)] private UInt16 _ClusterTotalNumber3; //
// [InputRegister(31423, Scale = 0.1)] public Int16 BatteryAmbientTemperature3; //
// 3140031499 — Third Battery Cluster Info (incl. BDC and BMS)
[InputRegister(31500, Scale = 0.1)] private Int32 _BatteryPower4; // positive Charge, Negative Discharge
[InputRegister(31502, Scale = 0.1)] private UInt32 _DailyChargeEnergy4;
[InputRegister(31504, Scale = 0.1)] private UInt32 _DailyDischargeEnergy4;
[InputRegister(31510, Scale = 0.1)] private UInt32 _BatteryMaxAllowableChargePower4; //
[InputRegister(31512, Scale = 0.1)] private UInt32 _BatteryMaxAllowableDischargePower4; //
[InputRegister(31514, Scale = 0.1)] private Int16 _BatteryVoltage4; //
[InputRegister(31515, Scale = 0.1)] private Int32 _BatteryCurrent4; //
[InputRegister(31517)] private UInt16 _BatterySoc4; //
[InputRegister(31518)] private UInt16 _BatterySoh4; //
[InputRegister(31525)] private UInt16 _ClusterTotalNumber4; //
// [InputRegister(31523, Scale = 0.1)] public Int16 BatteryAmbientTemperature4; //
*/
/****************************** Holding registers ****************************/
// [HoldingRegister(30000)] private UInt16 _DeviceModel;
[HoldingRegister<UInt32>(30016, Scale = 0.1)] private UInt32 _RatedPower;
[HoldingRegister<UInt32>(30018, Scale = 0.1)] private UInt32 _MaxActivePower;
[HoldingRegister<UInt32>(30028, Scale = 0.1)] private UInt32 _PvInputMaxPower;
[HoldingRegister(30030)] private UInt16 _BatteryType;
[HoldingRegister(30099)] private UInt16 _VppProtocolVerNumber;
[HoldingRegister(30100, writable: true)] private Boolean _ControlPermession; // 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;
[HoldingRegister(30104)] private UInt16 _SystemTime1;
[HoldingRegister(30105)] private UInt16 _SystemTime2;
[HoldingRegister(30106)] private UInt16 _SystemTime3;
[HoldingRegister(30107)] private UInt16 _SystemTime4;
[HoldingRegister(30108)] private UInt16 _SystemTime5;
[HoldingRegister(30109)] private UInt16 _SystemTime6;
[HoldingRegister<UInt32>(30110)] private UInt32 _Reserved9;
[HoldingRegister(30112)] private UInt16 _ComunnicationAddress;
[HoldingRegister(30113)] private UInt16 _CommunicationBaudeRate;
[HoldingRegister(30114)] private UInt16 _Reserved10;
// [HoldingRegister(30115, writable: true)] private Boolean _EnableSyn; //off grid Box : enable = 1, Disable = 0 , Default =0 This is looks like cannot be written
[HoldingRegister(30151, writable: true)] private UInt16 _ActivePowerPercentDerating; // % [0,100]
//[HoldingRegister<UInt32>(30152, writable: true)] private UInt16 _Reserved11; //
[HoldingRegister(30154, writable: true)] private UInt16 _ActivePowerPercent; // Limit percentage: [0, 100]; Default: 100; takes the smaller value of 30151 and 30154 as actual active limit; Not stored
[HoldingRegister(30162, Offset = 10000, Scale = 0.0001)] 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(30300)] private UInt16 _BatteryClusterIndex; // [0..3]
[HoldingRegister<UInt32>(30400 , writable: true)] private UInt32 _BatteryMaxChargePower; //
[HoldingRegister<UInt32>(30402 , writable: true)] private UInt32 _BatteryMaxDischargePower; //
[HoldingRegister(30404, writable: true)] private UInt16 _ChargeCutoffSoc; //
[HoldingRegister(30405, writable: true)] private UInt16 _DischargeCutoffSoc; //
[HoldingRegister(30406, writable: true)] private UInt16 _LoadPriorityDischargeCutoffSoc; //
[HoldingRegister(30407, writable: true)] private Boolean _RemotePowerControl; //
[HoldingRegister(30408, writable: true)] private UInt16 _RemotePowerControlChargeDuration; //
[HoldingRegister<Int16>(30409, writable: true)] private Int16 _RemoteChargDischargePower; //
[HoldingRegister(30410, writable: true)] private Boolean _AcChargeEnable; //
[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(30498, writable: true, Scale = 0.1)] private UInt16 _BatteryMaxChargeCurrent; //
[HoldingRegister(30499, writable: true, Scale = 0.1)] private UInt16 _BatteryMaxdischargeCurrent; //*/
}