Innovenergy_trunk/csharp/Sinexcel 12K TL/SinexcelRecord.Modbus.cs

313 lines
26 KiB
C#

using System.Diagnostics.CodeAnalysis;
using InnovEnergy.Lib.Protocols.Modbus.Reflection.Attributes;
using InnovEnergy.Lib.Units;
using InnovEnergy.Lib.Units.Power;
// ReSharper disable InconsistentNaming
#pragma warning disable CS0169 // Field is never used
#pragma warning disable CS0649 // Field is never assigned to, and will always have its default value
namespace InnovEnergy.Lib.Devices.Sinexcel_12K_TL;
[BigEndian]
public partial class SinexcelRecord
{
/****************************** Input registers ****************************/
// Voltages
[HoldingRegister<UInt32>(4096)] public UInt32 _gridAPhaseVoltage; // 0x1000
[HoldingRegister<UInt32>(4098)] private UInt32 _grid_B_Phase_Voltage; // 0x1002
[HoldingRegister<UInt32>(4100)] private UInt32 _grid_C_Phase_Voltage; // 0x1004
// Line-to-line Voltages (V)
[HoldingRegister<UInt32>(4102)] private UInt32 _grid_AB_Wire_Voltage; // 0x1006
[HoldingRegister<UInt32>(4104)] private UInt32 _grid_BC_Wire_Voltage; // 0x1008
[HoldingRegister<UInt32>(4106)] private UInt32 _grid_CA_Wire_Voltage; // 0x100A
// Frequency (Hz)
[HoldingRegister<UInt32>(4114)] private UInt32 _grid_Voltage_Frequency; // 0x1012
// Currents (A)
[HoldingRegister<UInt32>(4116)] private UInt32 _grid_A_Phase_Current; // 0x1014
[HoldingRegister<UInt32>(4118)] private UInt32 _grid_B_Phase_Current; // 0x1016
[HoldingRegister<UInt32>(4120)] private UInt32 _grid_C_Phase_Current; // 0x1018
[HoldingRegister<UInt32>(4122)] private UInt32 _grid_N_Wire_Current; // 0x101A*/
// ───────────────────────────────────────────────
// Power Measurements
// ───────────────────────────────────────────────
// Apparent Power (kVA)
[HoldingRegister<UInt32>(4136)] private UInt32 _gridAPhaseApparentPower; // 0x1028
[HoldingRegister<UInt32>(4138)] private UInt32 _gridBPhaseApparentPower; // 0x102A
[HoldingRegister<UInt32>(4140)] private UInt32 _gridCPhaseApparentPower; // 0x102C
// Active Power (kW)
[HoldingRegister<UInt32>(4142)] private UInt32 _gridAPhaseActivePower; // 0x102E
[HoldingRegister<UInt32>(4144)] private UInt32 _gridBPhaseActivePower; // 0x1030
[HoldingRegister<UInt32>(4146)] private UInt32 _gridCPhaseActivePower; // 0x1032
// Reactive Power (kVar)
[HoldingRegister<UInt32>(4148)] private UInt32 _gridAPhaseReactivePower; // 0x1034
[HoldingRegister<UInt32>(4150)] private UInt32 _gridBPhaseReactivePower; // 0x1036
[HoldingRegister<UInt32>(4152)] private UInt32 _gridCPhaseReactivePower; // 0x1038
// ───────────────────────────────────────────────
// Load Voltages (V)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4166)] private UInt32 _loadAPhaseVoltage; // 0x1046
[HoldingRegister<UInt32>(4168)] private UInt32 _loadBPhaseVoltage; // 0x1048
[HoldingRegister<UInt32>(4170)] private UInt32 _loadCPhaseVoltage; // 0x104A
[HoldingRegister<UInt32>(4172)] private UInt32 _loadABWireVoltage; // 0x104C
[HoldingRegister<UInt32>(4174)] private UInt32 _loadBCWireVoltage; // 0x104E
[HoldingRegister<UInt32>(4176)] private UInt32 _loadCAWireVoltage; // 0x1050
[HoldingRegister<UInt32>(4184)] private UInt32 _loadVoltageFrequency; // 0x1058
// ───────────────────────────────────────────────
// Load Currents (A)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4186)] private UInt32 _loadAPhaseCurrent; // 0x105A
[HoldingRegister<UInt32>(4188)] private UInt32 _loadBPhaseCurrent; // 0x105C
[HoldingRegister<UInt32>(4190)] private UInt32 _loadCPhaseCurrent; // 0x105E
[HoldingRegister<UInt32>(4192)] private UInt32 _loadNWireCurrent; // 0x1060
// ───────────────────────────────────────────────
// Load Apparent Power (kVA)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4206)] private UInt32 _loadAPhaseApparentPower; // 0x106E
[HoldingRegister<UInt32>(4208)] private UInt32 _loadBPhaseApparentPower; // 0x1070
[HoldingRegister<UInt32>(4210)] private UInt32 _loadCPhaseApparentPower; // 0x1072
// ───────────────────────────────────────────────
// Load Active Power (kW)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4212)] private UInt32 _loadAPhaseActivePower; // 0x1074
[HoldingRegister<UInt32>(4214)] private UInt32 _loadBPhaseActivePower; // 0x1076
[HoldingRegister<UInt32>(4216)] private UInt32 _loadCPhaseActivePower; // 0x1078
// ───────────────────────────────────────────────
// Load Reactive Power (kVar)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4218)] private UInt32 _loadAPhaseReactivePower; // 0x107A
[HoldingRegister<UInt32>(4220)] private UInt32 _loadBPhaseReactivePower; // 0x107C
[HoldingRegister<UInt32>(4222)] private UInt32 _loadCPhaseReactivePower; // 0x107E
// ───────────────────────────────────────────────
// Inverter Voltages (V)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4242)] private UInt32 _inverterAPhaseVoltage; // 0x1092
[HoldingRegister<UInt32>(4244)] private UInt32 _inverterBPhaseVoltage; // 0x1094
[HoldingRegister<UInt32>(4246)] private UInt32 _inverterCPhaseVoltage; // 0x1096
[HoldingRegister<UInt32>(4248)] private UInt32 _inverterABWireVoltage; // 0x1098
[HoldingRegister<UInt32>(4250)] private UInt32 _inverterBCWireVoltage; // 0x109A
[HoldingRegister<UInt32>(4252)] private UInt32 _inverterCAWireVoltage; // 0x109C
// ───────────────────────────────────────────────
// Inverter Active Power (kW)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4288)] private UInt32 _inverterAPhaseActivePower; // 0x10C0
[HoldingRegister<UInt32>(4290)] private UInt32 _inverterBPhaseActivePower; // 0x10C2
[HoldingRegister<UInt32>(4292)] private UInt32 _inverterCPhaseActivePower; // 0x10C4
// ───────────────────────────────────────────────
// DC/AC Temperatures (°C)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4318)] private UInt32 _dcacTemperature1; // 0x10DE
[HoldingRegister<UInt32>(4320)] private UInt32 _dcacTemperature2; // 0x10E0
[HoldingRegister<UInt32>(4322)] private UInt32 _dcacTemperature3; // 0x10E2
[HoldingRegister<UInt32>(4324)] private UInt32 _dcacTemperature4; // 0x10E4
[HoldingRegister<UInt32>(4326)] private UInt32 _dcacTemperature5; // 0x10E6
// ───────────────────────────────────────────────
// Date / Time Information
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4338)] private UInt32 _year; // 0x10F2
[HoldingRegister<UInt32>(4340)] private UInt32 _month; // 0x10F4
[HoldingRegister<UInt32>(4342)] private UInt32 _day; // 0x10F6
[HoldingRegister<UInt32>(4344)] private UInt32 _hour; // 0x10F8
[HoldingRegister<UInt32>(4346)] private UInt32 _minute; // 0x10FA
[HoldingRegister<UInt32>(4348)] private UInt32 _second; // 0x10FC
// ───────────────────────────────────────────────
// Diesel Generator Measurements
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4362)] private UInt32 _dieselGenAPhaseVoltage; // 0x110A
[HoldingRegister<UInt32>(4364)] private UInt32 _dieselGenBPhaseVoltage; // 0x110C
[HoldingRegister<UInt32>(4366)] private UInt32 _dieselGenCPhaseVoltage; // 0x110E
[HoldingRegister<UInt32>(4368)] private UInt32 _dieselGenABWireVoltage; // 0x1110
[HoldingRegister<UInt32>(4370)] private UInt32 _dieselGenBCWireVoltage; // 0x1112
[HoldingRegister<UInt32>(4372)] private UInt32 _dieselGenCAWireVoltage; // 0x1114
[HoldingRegister<UInt32>(4380)] private UInt32 _dieselGenVoltageFrequency; // 0x111C
[HoldingRegister<UInt32>(4382)] private UInt32 _dieselGenAPhaseCurrent; // 0x111E
[HoldingRegister<UInt32>(4384)] private UInt32 _dieselGenBPhaseCurrent; // 0x1120
[HoldingRegister<UInt32>(4386)] private UInt32 _dieselGenCPhaseCurrent; // 0x1122
[HoldingRegister<UInt32>(4388)] private UInt32 _dieselGenNWireCurrent; // 0x1124
[HoldingRegister<UInt32>(4402)] private UInt32 _dieselGenAPhaseApparentPower; // 0x1132
[HoldingRegister<UInt32>(4404)] private UInt32 _dieselGenBPhaseApparentPower; // 0x1134
[HoldingRegister<UInt32>(4406)] private UInt32 _dieselGenCPhaseApparentPower; // 0x1136
[HoldingRegister<UInt32>(4408)] private UInt32 _dieselGenAPhaseActivePower; // 0x1138
[HoldingRegister<UInt32>(4410)] private UInt32 _dieselGenBPhaseActivePower; // 0x113A
[HoldingRegister<UInt32>(4412)] private UInt32 _dieselGenCPhaseActivePower; // 0x113C
[HoldingRegister<UInt32>(4414)] private UInt32 _dieselGenAPhaseReactivePower; // 0x113E
[HoldingRegister<UInt32>(4416)] private UInt32 _dieselGenBPhaseReactivePower; // 0x1140
[HoldingRegister<UInt32>(4418)] private UInt32 _dieselGenCPhaseReactivePower; // 0x1142
// ───────────────────────────────────────────────
// Photovoltaic and Battery Measurements
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4608)] private UInt32 _pvVoltage1; // 0x1200
[HoldingRegister<UInt32>(4610)] private UInt32 _pvCurrent1; // 0x1202
[HoldingRegister<UInt32>(4612)] private UInt32 _pvPower1; // 0x1204
[HoldingRegister<UInt32>(4614)] private UInt32 _pvVoltage2; // 0x1206
[HoldingRegister<UInt32>(4616)] private UInt32 _pvCurrent2; // 0x1208
[HoldingRegister<UInt32>(4618)] private UInt32 _pvPower2; // 0x120A
[HoldingRegister<UInt32>(4620)] private UInt32 _batteryVoltage1; // 0x120C
[HoldingRegister<UInt32>(4622)] private UInt32 _batteryCurrent1; // 0x120E
[HoldingRegister<UInt32>(4624)] private UInt32 _batteryPower1; // 0x1210
[HoldingRegister<UInt32>(4626)] private UInt32 _batterySoc1; // 0x1212
[HoldingRegister<UInt32>(4628)] private UInt32 _batteryFullLoadDuration1; // 0x1214
[HoldingRegister<UInt32>(4630)] private UInt32 _batteryVoltage2; // 0x1216
[HoldingRegister<UInt32>(4632)] private UInt32 _batteryCurrent2; // 0x1218
[HoldingRegister<UInt32>(4634)] private UInt32 _batteryPower2; // 0x121A
[HoldingRegister<UInt32>(4636)] private UInt32 _batterySoc2; // 0x121C
[HoldingRegister<UInt32>(4638)] private UInt32 _batteryFullLoadDuration2; // 0x121E
[HoldingRegister<UInt32>(4640)] private UInt32 _dcdcTemperature1; // 0x1220
[HoldingRegister<UInt32>(4642)] private UInt32 _dcdcTemperature2; // 0x1222
[HoldingRegister<UInt32>(4644)] private UInt32 _dcdcTemperature3; // 0x1224
[HoldingRegister<UInt32>(4646)] private UInt32 _dcdcTemperature4; // 0x1226
[HoldingRegister<UInt32>(4648)] private UInt32 _dcdcTemperature5; // 0x1228
// ───────────────────────────────────────────────
// Energy and Power Summary
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(4672)] private UInt32 _electricityPurchased; // 0x1240
[HoldingRegister<UInt32>(4674)] private UInt32 _electricityFed; // 0x1242
[HoldingRegister<UInt32>(4700)] private UInt32 _selfGeneratedElectricity; // 0x125C
[HoldingRegister<UInt32>(4702)] private UInt32 _batteryCharge; // 0x125E
[HoldingRegister<UInt32>(4704)] private UInt32 _batteryDischarge; // 0x1260
[HoldingRegister<UInt32>(4706)] private UInt32 _loadPowerConsumption; // 0x1262
[HoldingRegister<UInt32>(4708)] private UInt32 _dailySelfGeneratedElectricity; // 0x1264
[HoldingRegister<UInt32>(4710)] private UInt32 _dailyElectricityPurchased; // 0x1266
[HoldingRegister<UInt32>(4712)] private UInt32 _dailyElectricityFed; // 0x1268
[HoldingRegister<UInt32>(4714)] private UInt32 _dailyBatteryCharge; // 0x126A
[HoldingRegister<UInt32>(4716)] private UInt32 _dailyBatteryDischarge; // 0x126C
[HoldingRegister<UInt32>(4718)] private UInt32 _dailyLoadPowerConsumption; // 0x126E
[HoldingRegister<UInt32>(4720)] private UInt32 _totalPhotovoltaicPower; // 0x1270
[HoldingRegister<UInt32>(4722)] private UInt32 _totalBatteryPower; // 0x1272
[HoldingRegister<UInt32>(4724)] private UInt32 _totalLoadPower; // 0x1274
[HoldingRegister<UInt32>(4726)] private UInt32 _totalGridPower; // 0x1276
[HoldingRegister<UInt32>(4728)] private UInt32 _importantLoadTotalPower; // 0x1278
[HoldingRegister<UInt32>(4730)] private UInt32 _generalLoadTotalPower; // 0x127A
[HoldingRegister<UInt32>(4732)] private UInt32 _pv3Voltage; // 0x127C
[HoldingRegister<UInt32>(4734)] private UInt32 _pv3Current; // 0x127E
[HoldingRegister<UInt32>(4736)] private UInt32 _pv3Power; // 0x1280
[HoldingRegister<UInt32>(4738)] private UInt32 _pv4Voltage; // 0x1282
[HoldingRegister<UInt32>(4740)] private UInt32 _pv4Current; // 0x1284
[HoldingRegister<UInt32>(4742)] private UInt32 _pv4Power; // 0x1286
[HoldingRegister<UInt32>(4744)] private UInt32 _generatorTotalPower; // 0x128C
// ───────────────────────────────────────────────
// Manufacturer Information & Software Versions
// ───────────────────────────────────────────────
[HoldingRegister<UInt16>(8192)] private UInt16 _protocolVersionNo; // 0x2000
[HoldingRegister<UInt16>(8193)] private UInt16 _dcacSoftwareVersionNo; // 0x2001
[HoldingRegister<UInt16>(8194)] private UInt16 _dcdcSoftwareVersionNo; // 0x2002
[HoldingRegister<UInt16>(8195)] private UInt16 _armSoftwareVersionNo; // 0x2003
[HoldingRegister<UInt16>(8196)] private UInt16 _cpldVersion; // 0x2004
[HoldingRegister<UInt16>(8197)] private UInt16 _afciSoftwareVersionNo; // 0x2005
[HoldingRegister<UInt16>(8198)] private UInt16 _machineType; // 0x2006
// ───────────────────────────────────────────────
// Device Info & Model
// ───────────────────────────────────────────────
[HoldingRegister<UInt16>(8199)] private UInt16 _remain; // 0x2007
[HoldingRegister<UInt16>(8200)] private UInt16 _ratedPower; // 0x2008 (value / 100 = kVA)
[HoldingRegister<UInt16>(8205)] private UInt16 _model; // 0x200D
// ───────────────────────────────────────────────
// System configuration / operation registers
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(12294, writable: true)] private UInt32 _threePhaseWireSystem; // 0x3006
[HoldingRegister<UInt32>(12296, writable: true)] private UInt32 _remainnotused; // 0x3008
[HoldingRegister<UInt32>(12298, writable: true)] private UInt32 _inputFrequencyClass; // 0x300A
[HoldingRegister<UInt32>(12300, writable: true)] private UInt32 _workingMode; // 0x300C
[HoldingRegister<UInt32>(12302, writable: true)] private UInt32 _methodSwitchMode; // 0x300E
// ───────────────────────────────────────────────
// Inverter Control and Protection Configuration
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(12304, writable: true)] private UInt32 _enableOnGridUnbalanceCompensation; // 0x3010
[HoldingRegister<UInt32>(12306, writable: true)] private UInt32 _temperatureDrop; // 0x3012
[HoldingRegister<UInt32>(12308, writable: true)] private UInt32 _hvrt; // 0x3014
[HoldingRegister<UInt32>(12310, writable: true)] private UInt32 _lvrt; // 0x3016
[HoldingRegister<UInt32>(12312, writable: true)] private UInt32 _fanGear; // 0x3018
// ───────────────────────────────────────────────
// Battery & PV Configuration
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(12336, writable: true)] private UInt32 _batteryAccessMethod; // 0x3030
[HoldingRegister<UInt32>(12338, writable: true)] private UInt32 _meterAccessEnable; // 0x3032
[HoldingRegister<UInt32>(12340, writable: true)] private UInt32 _enableBattery1; // 0x3034
[HoldingRegister<UInt32>(12342, writable: true)] private UInt32 _enableBattery2; // 0x3036
[HoldingRegister<UInt32>(12344, writable: true)] private UInt32 _enablePv1; // 0x3038
[HoldingRegister<UInt32>(12346, writable: true)] private UInt32 _enablePv2; // 0x303A
[HoldingRegister<UInt32>(12348, writable: true)] private UInt32 _batteryType; // 0x303C
[HoldingRegister<UInt32>(12350, writable: true)] private UInt32 _batteryCapacity1; // 0x303E
[HoldingRegister<UInt32>(12352, writable: true)] private UInt32 _maxChargingCurrentBattery1; // 0x3040
[HoldingRegister<UInt32>(12354, writable: true)] private UInt32 _maxDischargingCurrentBattery1; // 0x3042
[HoldingRegister<UInt32>(12362, writable: true)] private UInt32 _ratedBatteryVoltage1; // 0x304A
[HoldingRegister<UInt32>(12358, writable: true)] private UInt32 _minSocBattery1; // 0x3046
[HoldingRegister<UInt32>(12360, writable: true)] private UInt32 _setValueBattery1; // 0x3048
[HoldingRegister<UInt32>(12364, writable: true)] private UInt32 _activeChargeDischarge; // 0x304A
[HoldingRegister<UInt32>(12366, writable: true)] private UInt32 _activeChargeDischargePower; // 0x304C
[HoldingRegister<UInt32>(12380, writable: true)] private UInt32 _enableIslandProtection; // 0x305C
[HoldingRegister<UInt32>(12382, writable: true)] private UInt32 _pvAccessMode; // 0x305E
// ───────────────────────────────────────────────
// System & Battery-2 Configuration
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(12384, writable: true)] private UInt32 _outputVoltageAdjustmentFactor; // 0x3060
[HoldingRegister<UInt32>(12386, writable: true)] private UInt32 _setValueBatteryUndervoltage1; // 0x3062
[HoldingRegister<UInt32>(12388, writable: true)] private UInt32 _inverterPowerLimit; // 0x3064
[HoldingRegister<UInt32>(12400, writable: true)] private UInt32 _battery2Capacity; // 0x30B0
[HoldingRegister<UInt32>(12402, writable: true)] private UInt32 _maxChargingCurrentBattery2; // 0x30B2
[HoldingRegister<UInt32>(12404, writable: true)] private UInt32 _maxDischargingCurrentBattery2; // 0x30B4
[HoldingRegister<UInt32>(12406, writable: true)] private UInt32 _battery2RatedVoltage; // 0x30B6
[HoldingRegister<UInt32>(12408, writable: true)] private UInt32 _battery2MinSoc; // 0x30B8
[HoldingRegister<UInt32>(12410, writable: true)] private UInt32 _battery2OverVoltageSetting; // 0x30BA
[HoldingRegister<UInt32>(12412, writable: true)] private UInt32 _battery2UnderVoltageSetpoint; // 0x30BC
[HoldingRegister<UInt32>(12414, writable: true)] private UInt32 _singleOrParallelMachine; // 0x30BE
[HoldingRegister<UInt32>(12416, writable: true)] private UInt32 _numberOfSystemModules; // 0x30C0
[HoldingRegister<UInt32>(12418, writable: true)] private UInt32 _parallelModuleMachineNumber; // 0x30C2
[HoldingRegister<UInt32>(12420, writable: true)] private UInt32 _accreditedCountries; // 0x30C4
// ───────────────────────────────────────────────
// System Control & Diagnostic Registers
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(15426, writable: true)] private UInt32 _powerOn; // 0x3C42
[HoldingRegister<UInt32>(15428, writable: true)] private UInt32 _powerOff; // 0x3C44
[HoldingRegister<UInt32>(15430, writable: true)] private UInt32 _faultClearing; // 0x3C46
[HoldingRegister<UInt32>(15518, writable: true)] private UInt32 _meterReverseManualDetection; // 0x3C9E
[HoldingRegister<UInt32>(15520, writable: true)] private UInt32 _batteryVoltage; // 0x3CA0
[HoldingRegister<UInt32>(15522, writable: true)] private UInt32 _batteryRating; // 0x3CA2
[HoldingRegister<UInt32>(15524, writable: true)] private UInt32 _battery1Activation; // 0x3CA4
[HoldingRegister<UInt32>(15526, writable: true)] private UInt32 _battery2Activation; // 0x3CA6
// ───────────────────────────────────────────────
// Electric Meter Measurements (Read-Only)
// ───────────────────────────────────────────────
[HoldingRegister<UInt32>(40960)] private UInt32 _electricMeterOperatingState; // 0xA000
[HoldingRegister<UInt32>(41216)] private UInt32 _electricMeterAPhaseVoltage; // 0xA100
[HoldingRegister<UInt32>(41218)] private UInt32 _electricMeterBPhaseVoltage; // 0xA102
[HoldingRegister<UInt32>(41220)] private UInt32 _electricMeterCPhaseVoltage; // 0xA104
[HoldingRegister<UInt32>(41222)] private UInt32 _electricMeterAPhaseCurrent; // 0xA106
[HoldingRegister<UInt32>(41224)] private UInt32 _electricMeterBPhaseCurrent; // 0xA108
[HoldingRegister<UInt32>(41226)] private UInt32 _electricMeterCPhaseCurrent; // 0xA10A
[HoldingRegister<UInt32>(41234)] private UInt32 _electricMeterAPhaseActivePower; // 0xA112
[HoldingRegister<UInt32>(41236)] private UInt32 _electricMeterBPhaseActivePower; // 0xA114
[HoldingRegister<UInt32>(41238)] private UInt32 _electricMeterCPhaseActivePower; // 0xA116
}