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 { /* // ======================================================== // Register declarations // ======================================================== // to test by block first // ---- Operating states (0x1000–0x1014) [HoldingRegister(4096, writable: false)] private UInt16 _notUsedRemain; // 0x1000 [HoldingRegister(4098, writable: false)] private UInt16 _inverterOperatingState; // 0x1002 (3 bits) [HoldingRegister(4100, writable: false)] private UInt16 _pv1OperatingState; // 0x1004 (1 bit) [HoldingRegister(4101, writable: false)] private UInt16 _pv2OperatingState; // 0x1005 (1 bit) [HoldingRegister(4103, writable: false)] private UInt16 _battery1OperatingState; // 0x1007 (3 bits) // Battery 2 operating state bits (0x1009–0x100B) [HoldingRegister(4105, writable: false)] private UInt16 _bat2StateBit0; // 0x1009 [HoldingRegister(4106, writable: false)] private UInt16 _bat2StateBit1; // 0x100A [HoldingRegister(4107, writable: false)] private UInt16 _bat2StateBit2; // 0x100B // ORED state bits (0x100C–0x100F) [HoldingRegister(4108, writable: false)] private UInt16 _oredStateBit0; // 0x100C [HoldingRegister(4109, writable: false)] private UInt16 _oredStateBit1; // 0x100D [HoldingRegister(4110, writable: false)] private UInt16 _oredStateBit2; // 0x100E [HoldingRegister(4111, writable: false)] private UInt16 _oredStateBit3; // 0x100F // DCDC state (separate bits for DC/AC variants) [HoldingRegister(4112, writable: false)] private UInt16 _dcdcStateDc; // 0x1010 [HoldingRegister(4113, writable: false)] private UInt16 _dcdcStateAc; // 0x1011 // PV3 / PV4 operational state [HoldingRegister(4114, writable: false)] private UInt16 _pv3OperatingState; // 0x1012 [HoldingRegister(4115, writable: false)] private UInt16 _pv4OperatingState; // 0x1013 // Power grid status [HoldingRegister(4116, writable: false)] private UInt16 _powerGridStatus; // 0x1014 // ---- Alarm / fault flags (0x1048–0x10CE) (0: Normal, 1: Abnormal) [HoldingRegister(4168, writable: false)] private UInt16 _abnormalGridVoltage; // 0x1048 Abnormal grid voltage [HoldingRegister(4169, writable: false)] private UInt16 _abnormalGridFrequency; // 0x1049 Abnormal grid frequency [HoldingRegister(4170, writable: false)] private UInt16 _invertedSequenceOfGridVoltage; // 0x104A Inverted sequence of grid voltage [HoldingRegister(4171, writable: false)] private UInt16 _gridVoltagePhaseLoss; // 0x104B Grid voltage phase loss [HoldingRegister(4172, writable: false)] private UInt16 _abnormalOutputVoltage; // 0x104C Abnormal output voltage [HoldingRegister(4173, writable: false)] private UInt16 _abnormalOutputFrequency; // 0x104D Abnormal output frequency [HoldingRegister(4174, writable: false)] private UInt16 _abnormalNullLine; // 0x104E Abnormal null line [HoldingRegister(4175, writable: false)] private UInt16 _excessivelyHighAmbientTemperature; // 0x104F Excessively high ambient temperature [HoldingRegister(4176, writable: false)] private UInt16 _excessiveRadiatorTemperature; // 0x1050 Excessive radiator temperature [HoldingRegister(4177, writable: false)] private UInt16 _insulationFault; // 0x1051 Insulation fault [HoldingRegister(4178, writable: false)] private UInt16 _leakageProtectionFault; // 0x1052 Leakage protection fault [HoldingRegister(4179, writable: false)] private UInt16 _auxiliaryPowerFault; // 0x1053 Auxiliary power fault [HoldingRegister(4180, writable: false)] private UInt16 _fanFault; // 0x1054 Fan fault [HoldingRegister(4181, writable: false)] private UInt16 _modelCapacityFault; // 0x1055 Model capacity fault [HoldingRegister(4182, writable: false)] private UInt16 _abnormalLightningArrester; // 0x1056 Abnormal lightning arrester [HoldingRegister(4183, writable: false)] private UInt16 _islandProtection; // 0x1057 Island protection [HoldingRegister(4184, writable: false)] private UInt16 _battery1NotConnected; // 0x1058 Battery 1 not connected [HoldingRegister(4185, writable: false)] private UInt16 _battery1Overvoltage; // 0x1059 Battery 1 overvoltage [HoldingRegister(4186, writable: false)] private UInt16 _battery1Undervoltage; // 0x105A Battery 1 undervoltage [HoldingRegister(4187, writable: false)] private UInt16 _battery1DischargeEnd; // 0x105B Battery 1 discharge end [HoldingRegister(4188, writable: false)] private UInt16 _battery1Inverted; // 0x105C Battery 1 inverted [HoldingRegister(4189, writable: false)] private UInt16 _battery2NotConnected; // 0x105D Battery 2 not connected [HoldingRegister(4190, writable: false)] private UInt16 _battery2Overvoltage; // 0x105E Battery 2 overvoltage [HoldingRegister(4191, writable: false)] private UInt16 _battery2Undervoltage; // 0x105F Battery 2 undervoltage [HoldingRegister(4192, writable: false)] private UInt16 _battery2DischargeEnd; // 0x1060 Battery 2 discharge end [HoldingRegister(4193, writable: false)] private UInt16 _battery2Inverted; // 0x1061 Battery 2 inverted [HoldingRegister(4194, writable: false)] private UInt16 _pv1NotAccessed; // 0x1062 PV1 not accessed [HoldingRegister(4195, writable: false)] private UInt16 _pv1Overvoltage; // 0x1063 PV1 overvoltage [HoldingRegister(4196, writable: false)] private UInt16 _abnormalPv1CurrentSharing; // 0x1064 Abnormal PV1 current sharing [HoldingRegister(4197, writable: false)] private UInt16 _pv2NotAccessed; // 0x1065 PV2 not accessed [HoldingRegister(4198, writable: false)] private UInt16 _pv2Overvoltage; // 0x1066 PV2 overvoltage [HoldingRegister(4199, writable: false)] private UInt16 _abnormalPv2CurrentSharing; // 0x1067 Abnormal PV2 current sharing [HoldingRegister(4200, writable: false)] private UInt16 _dcBusOvervoltage; // 0x1068 DC bus overvoltage [HoldingRegister(4201, writable: false)] private UInt16 _dcBusUndervoltage; // 0x1069 DC bus undervoltage [HoldingRegister(4202, writable: false)] private UInt16 _dcBusVoltageUnbalance; // 0x106A DC bus voltage unbalance [HoldingRegister(4203, writable: false)] private UInt16 _pv1PowerTubeFault; // 0x106B PV1 power tube fault [HoldingRegister(4204, writable: false)] private UInt16 _pv2PowerTubeFault; // 0x106C PV2 power tube fault [HoldingRegister(4205, writable: false)] private UInt16 _battery1PowerTubeFault; // 0x106D Battery 1 power tube fault [HoldingRegister(4206, writable: false)] private UInt16 _battery2PowerTubeFault; // 0x106E Battery 2 power tube fault [HoldingRegister(4207, writable: false)] private UInt16 _inverterPowerTubeFault; // 0x106F Inverter power tube fault [HoldingRegister(4208, writable: false)] private UInt16 _systemOutputOverload; // 0x1070 System output overload [HoldingRegister(4209, writable: false)] private UInt16 _inverterOverload; // 0x1071 Inverter overload [HoldingRegister(4210, writable: false)] private UInt16 _inverterOverloadTimeout; // 0x1072 Inverter overload timeout [HoldingRegister(4211, writable: false)] private UInt16 _battery1OverloadTimeout; // 0x1073 Battery 1 overload timeout [HoldingRegister(4212, writable: false)] private UInt16 _battery2OverloadTimeout; // 0x1074 Battery 2 overload timeout [HoldingRegister(4213, writable: false)] private UInt16 _inverterSoftStartFailure; // 0x1075 Inverter soft start failure [HoldingRegister(4214, writable: false)] private UInt16 _battery1SoftStartFailure; // 0x1076 Battery 1 soft start failure [HoldingRegister(4215, writable: false)] private UInt16 _battery2SoftStartFailure; // 0x1077 Battery 2 soft start failure [HoldingRegister(4216, writable: false)] private UInt16 _dsp1ParameterSettingFault; // 0x1078 DSP1 parameter setting fault [HoldingRegister(4217, writable: false)] private UInt16 _dsp2ParameterSettingFault; // 0x1079 DSP2 parameter setting fault [HoldingRegister(4218, writable: false)] private UInt16 _dspVersionCompatibilityFault; // 0x107A DSP version compatibility fault [HoldingRegister(4219, writable: false)] private UInt16 _cpldVersionCompatibilityFault; // 0x107B CPLD version compatibility fault [HoldingRegister(4220, writable: false)] private UInt16 _cpldCommunicationFault; // 0x107C CPLD communication fault [HoldingRegister(4221, writable: false)] private UInt16 _dspCommunicationFault; // 0x107D DSP communication fault [HoldingRegister(4222, writable: false)] private UInt16 _outputVoltageDcOverlimit; // 0x107E Output voltage DC overlimit [HoldingRegister(4223, writable: false)] private UInt16 _outputCurrentDcOverlimit; // 0x107F Output current DC overlimit [HoldingRegister(4224, writable: false)] private UInt16 _relaySelfCheckFails; // 0x1080 Relay self-check fails [HoldingRegister(4225, writable: false)] private UInt16 _abnormalInverter; // 0x1081 Abnormal inverter [HoldingRegister(4226, writable: false)] private UInt16 _poorGrounding; // 0x1082 Poor grounding [HoldingRegister(4227, writable: false)] private UInt16 _pv1SoftStartFailure; // 0x1083 PV1 soft start failure [HoldingRegister(4228, writable: false)] private UInt16 _pv2SoftStartFailure2; // 0x1084 PV2 soft start failure [HoldingRegister(4229, writable: false)] private UInt16 _balancedCircuitOverloadTimeout; // 0x1085 Balanced circuit overload timeout [HoldingRegister(4230, writable: false)] private UInt16 _pv1OverloadTimeout; // 0x1086 PV1 overload timeout [HoldingRegister(4231, writable: false)] private UInt16 _pv2OverloadTimeout; // 0x1087 PV2 overload timeout [HoldingRegister(4232, writable: false)] private UInt16 _pcbOvertemperature; // 0x1088 PCB overtemperature [HoldingRegister(4233, writable: false)] private UInt16 _dcConverterOvertemperature; // 0x1089 DC converter overtemperature [HoldingRegister(4234, writable: false)] private UInt16 _busSlowOvervoltage; // 0x108A Bus slow overvoltage [HoldingRegister(4235, writable: false)] private UInt16 _abnormalOffGridOutputVoltage; // 0x108B Abnormal off-grid output voltage [HoldingRegister(4236, writable: false)] private UInt16 _hardwareBusOvervoltage; // 0x108C Hardware bus overvoltage [HoldingRegister(4237, writable: false)] private UInt16 _hardwareOvercurrent; // 0x108D Hardware overcurrent [HoldingRegister(4238, writable: false)] private UInt16 _dcConverterOvervoltage; // 0x108E DC converter overvoltage [HoldingRegister(4239, writable: false)] private UInt16 _dcConverterHardwareOvervoltage; // 0x108F DC converter hardware overvoltage [HoldingRegister(4240, writable: false)] private UInt16 _dcConverterOvercurrent; // 0x1090 DC converter overcurrent [HoldingRegister(4241, writable: false)] private UInt16 _dcConverterHardwareOvercurrent; // 0x1091 DC converter hardware overcurrent [HoldingRegister(4242, writable: false)] private UInt16 _dcConverterResonatorOvercurrent; // 0x1092 DC converter resonator overcurrent [HoldingRegister(4243, writable: false)] private UInt16 _pv1InsufficientPower; // 0x1093 PV1 insufficient power [HoldingRegister(4244, writable: false)] private UInt16 _pv2InsufficientPower; // 0x1094 PV2 insufficient power [HoldingRegister(4245, writable: false)] private UInt16 _battery1InsufficientPower; // 0x1095 Battery 1 insufficient power [HoldingRegister(4246, writable: false)] private UInt16 _battery2InsufficientPower; // 0x1096 Battery 2 insufficient power [HoldingRegister(4247, writable: false)] private UInt16 _lithiumBattery1ChargeForbidden; // 0x1097 Lithium battery 1 charge forbidden [HoldingRegister(4248, writable: false)] private UInt16 _lithiumBattery1DischargeForbidden; // 0x1098 Lithium battery 1 discharge forbidden [HoldingRegister(4249, writable: false)] private UInt16 _lithiumBattery2ChargeForbidden; // 0x1099 Lithium battery 2 charge forbidden [HoldingRegister(4250, writable: false)] private UInt16 _lithiumBattery2DischargeForbidden; // 0x109A Lithium battery 2 discharge forbidden [HoldingRegister(4251, writable: false)] private UInt16 _lithiumBattery1Full; // 0x109B Lithium battery 1 full [HoldingRegister(4252, writable: false)] private UInt16 _lithiumBattery1DischargeEnd; // 0x109C Lithium battery 1 discharge end [HoldingRegister(4253, writable: false)] private UInt16 _lithiumBattery2Full; // 0x109D LithiumBattery2 full [HoldingRegister(4254, writable: false)] private UInt16 _lithiumBattery2DischargeEnd; // 0x109E Lithium battery 2 discharge end [HoldingRegister(4255, writable: false)] private UInt16 _loadPowerOverload; // 0x109F Load power overload [HoldingRegister(4256, writable: false)] private UInt16 _abnormalLeakageSelfCheck; // 0x10A0 Abnormal leakage self-check [HoldingRegister(4257, writable: false)] private UInt16 _inverterOvertemperatureAlarm; // 0x10A1 Inverter overtemperature alarm [HoldingRegister(4258, writable: false)] private UInt16 _inverterOvertemperature; // 0x10A2 Inverter overtemperature [HoldingRegister(4259, writable: false)] private UInt16 _dcConverterOvertemperatureAlarm; // 0x10A3 DC converter overtemperature alarm [HoldingRegister(4260, writable: false)] private UInt16 _parallelCommunicationAlarm; // 0x10A4 Parallel communication alarm [HoldingRegister(4261, writable: false)] private UInt16 _systemDerating; // 0x10A5 System derating [HoldingRegister(4262, writable: false)] private UInt16 _inverterRelayOpen; // 0x10A6 Inverter relay open [HoldingRegister(4263, writable: false)] private UInt16 _inverterRelayShortCircuit; // 0x10A7 Inverter relay short circuit [HoldingRegister(4264, writable: false)] private UInt16 _pvAccessMethodErrorAlarm; // 0x10A8 PV access method error alarm [HoldingRegister(4265, writable: false)] private UInt16 _parallelModuleMissing; // 0x10A9 Parallel module missing [HoldingRegister(4266, writable: false)] private UInt16 _duplicateMachineNumbersForParallelModules; // 0x10AA Duplicate machine numbers for parallel modules [HoldingRegister(4267, writable: false)] private UInt16 _parameterConflictInParallelModule; // 0x10AB Parameter conflict in parallel module [HoldingRegister(4268, writable: false)] private UInt16 _reservedAlarms4; // 0x10AC Reserved alarms4 [HoldingRegister(4269, writable: false)] private UInt16 _reverseMeterConnection; // 0x10AD Reverse meter connection [HoldingRegister(4270, writable: false)] private UInt16 _inverterSealPulse; // 0x10AE Inverter Seal Pulse [HoldingRegister(4271, writable: false)] private UInt16 _pv3NotConnected; // 0x10AF PV3 not connected [HoldingRegister(4272, writable: false)] private UInt16 _pv3Overvoltage; // 0x10B0 PV3 overvoltage [HoldingRegister(4273, writable: false)] private UInt16 _pv3AverageCurrentAnomaly; // 0x10B1 PV3 average current anomaly [HoldingRegister(4274, writable: false)] private UInt16 _pv4NotConnected; // 0x10B2 PV4 not connected [HoldingRegister(4275, writable: false)] private UInt16 _pv4Overvoltage; // 0x10B3 PV4 overvoltage [HoldingRegister(4276, writable: false)] private UInt16 _pv4AverageCurrentAnomaly; // 0x10B4 PV4 average current anomaly [HoldingRegister(4277, writable: false)] private UInt16 _pv3PowerTubeFailure; // 0x10B5 PV3 power tube failure [HoldingRegister(4278, writable: false)] private UInt16 _pv4PowerTubeFailure; // 0x10B6 PV4 power tube failure [HoldingRegister(4279, writable: false)] private UInt16 _pv3SoftStartFailure; // 0x10B7 PV3 soft start failure [HoldingRegister(4280, writable: false)] private UInt16 _pv4SoftStartFailure; // 0x10B8 PV4 soft start failure [HoldingRegister(4281, writable: false)] private UInt16 _pv3OverloadTimeout; // 0x10B9 PV3 overload timeout [HoldingRegister(4282, writable: false)] private UInt16 _pv4OverloadTimeout; // 0x10BA PV4 overload timeout [HoldingRegister(4283, writable: false)] private UInt16 _pv3ReverseConnection; // 0x10BB PV3 reverse connection [HoldingRegister(4284, writable: false)] private UInt16 _pv4ReverseConnection; // 0x10BC PV4 reverse connection [HoldingRegister(4285, writable: false)] private UInt16 _abnormalDieselGeneratorVoltage; // 0x10BD Abnormal diesel generator voltage [HoldingRegister(4286, writable: false)] private UInt16 _abnormalDieselGeneratorFrequency; // 0x10BE Abnormal diesel generator frequency [HoldingRegister(4287, writable: false)] private UInt16 _dieselGeneratorVoltageReverseSequence; // 0x10BF Diesel generator voltage reverse sequence [HoldingRegister(4288, writable: false)] private UInt16 _dieselGeneratorVoltageOutOfPhase; // 0x10C0 Diesel generator voltage out of phase [HoldingRegister(4289, writable: false)] private UInt16 _leadBatteryTemperatureAbnormality; // 0x10C1 Lead battery temperature abnormality [HoldingRegister(4290, writable: false)] private UInt16 _batteryAccessMethodError; // 0x10C2 Battery access method error [HoldingRegister(4291, writable: false)] private UInt16 _reservedAlarms5; // 0x10C3 Reserved alarms5 [HoldingRegister(4292, writable: false)] private UInt16 _battery1BackupProhibited; // 0x10C4 Battery 1 backup prohibited [HoldingRegister(4293, writable: false)] private UInt16 _battery2BackupProhibited; // 0x10C5 Battery 2 backup prohibited [HoldingRegister(4294, writable: false)] private UInt16 _abnormalGridCurrent; // 0x10C6 Abnormal grid current [HoldingRegister(4295, writable: false)] private UInt16 _generatorOverload; // 0x10C7 Generator overload [HoldingRegister(4296, writable: false)] private UInt16 _busSoftStartFailure; // 0x10C8 Bus soft start failure [HoldingRegister(4297, writable: false)] private UInt16 _openCircuitOfPowerGridRelay; // 0x10C9 Open circuit of power grid relay [HoldingRegister(4298, writable: false)] private UInt16 _shortCircuitOfPowerGridRelay; // 0x10CA Short circuit of power grid relay [HoldingRegister(4299, writable: false)] private UInt16 _generatorRelayOpenCircuit; // 0x10CB Generator relay open circuit [HoldingRegister(4300, writable: false)] private UInt16 _generatorRelayShortCircuit; // 0x10CC Generator relay short circuit [HoldingRegister(4301, writable: false)] private UInt16 _insufficientPhotovoltaicPower; // 0x10CD Insufficient photovoltaic power [HoldingRegister(4302, writable: false)] private UInt16 _photovoltaic1Overcurrent; // 0x10CE Photovoltaic 1 overcurrent*/ /****************************** Holding registers ****************************/ // Voltages [HoldingRegister(4096)] public UInt32 _gridAPhaseVoltage; // 0x1000 [HoldingRegister(4098)] private UInt32 _grid_B_Phase_Voltage; // 0x1002 [HoldingRegister(4100)] private UInt32 _grid_C_Phase_Voltage; // 0x1004 // Line-to-line Voltages (V) [HoldingRegister(4102)] private UInt32 _grid_AB_Wire_Voltage; // 0x1006 [HoldingRegister(4104)] private UInt32 _grid_BC_Wire_Voltage; // 0x1008 [HoldingRegister(4106)] private UInt32 _grid_CA_Wire_Voltage; // 0x100A // Frequency (Hz) [HoldingRegister(4114)] private UInt32 _grid_Voltage_Frequency; // 0x1012 // Currents (A) [HoldingRegister(4116)] private UInt32 _grid_A_Phase_Current; // 0x1014 [HoldingRegister(4118)] private UInt32 _grid_B_Phase_Current; // 0x1016 [HoldingRegister(4120)] private UInt32 _grid_C_Phase_Current; // 0x1018 [HoldingRegister(4122)] private UInt32 _grid_N_Wire_Current; // 0x101A*/ // ─────────────────────────────────────────────── // Power Measurements // ─────────────────────────────────────────────── // Apparent Power (kVA) [HoldingRegister(4136)] private UInt32 _gridAPhaseApparentPower; // 0x1028 [HoldingRegister(4138)] private UInt32 _gridBPhaseApparentPower; // 0x102A [HoldingRegister(4140)] private UInt32 _gridCPhaseApparentPower; // 0x102C // Active Power (kW) [HoldingRegister(4142)] private UInt32 _gridAPhaseActivePower; // 0x102E [HoldingRegister(4144)] private UInt32 _gridBPhaseActivePower; // 0x1030 [HoldingRegister(4146)] private UInt32 _gridCPhaseActivePower; // 0x1032 // Reactive Power (kVar) [HoldingRegister(4148)] private UInt32 _gridAPhaseReactivePower; // 0x1034 [HoldingRegister(4150)] private UInt32 _gridBPhaseReactivePower; // 0x1036 [HoldingRegister(4152)] private UInt32 _gridCPhaseReactivePower; // 0x1038 // ─────────────────────────────────────────────── // Load Voltages (V) // ─────────────────────────────────────────────── [HoldingRegister(4166)] private UInt32 _loadAPhaseVoltage; // 0x1046 [HoldingRegister(4168)] private UInt32 _loadBPhaseVoltage; // 0x1048 [HoldingRegister(4170)] private UInt32 _loadCPhaseVoltage; // 0x104A [HoldingRegister(4172)] private UInt32 _loadABWireVoltage; // 0x104C [HoldingRegister(4174)] private UInt32 _loadBCWireVoltage; // 0x104E [HoldingRegister(4176)] private UInt32 _loadCAWireVoltage; // 0x1050 [HoldingRegister(4184)] private UInt32 _loadVoltageFrequency; // 0x1058 // ─────────────────────────────────────────────── // Load Currents (A) // ─────────────────────────────────────────────── [HoldingRegister(4186)] private UInt32 _loadAPhaseCurrent; // 0x105A [HoldingRegister(4188)] private UInt32 _loadBPhaseCurrent; // 0x105C [HoldingRegister(4190)] private UInt32 _loadCPhaseCurrent; // 0x105E [HoldingRegister(4192)] private UInt32 _loadNWireCurrent; // 0x1060 // ─────────────────────────────────────────────── // Load Apparent Power (kVA) // ─────────────────────────────────────────────── [HoldingRegister(4206)] private UInt32 _loadAPhaseApparentPower; // 0x106E [HoldingRegister(4208)] private UInt32 _loadBPhaseApparentPower; // 0x1070 [HoldingRegister(4210)] private UInt32 _loadCPhaseApparentPower; // 0x1072 // ─────────────────────────────────────────────── // Load Active Power (kW) // ─────────────────────────────────────────────── [HoldingRegister(4212)] private UInt32 _loadAPhaseActivePower; // 0x1074 [HoldingRegister(4214)] private UInt32 _loadBPhaseActivePower; // 0x1076 [HoldingRegister(4216)] private UInt32 _loadCPhaseActivePower; // 0x1078 // ─────────────────────────────────────────────── // Load Reactive Power (kVar) // ─────────────────────────────────────────────── [HoldingRegister(4218)] private UInt32 _loadAPhaseReactivePower; // 0x107A [HoldingRegister(4220)] private UInt32 _loadBPhaseReactivePower; // 0x107C [HoldingRegister(4222)] private UInt32 _loadCPhaseReactivePower; // 0x107E // ─────────────────────────────────────────────── // Inverter Voltages (V) // ─────────────────────────────────────────────── [HoldingRegister(4242)] private UInt32 _inverterAPhaseVoltage; // 0x1092 [HoldingRegister(4244)] private UInt32 _inverterBPhaseVoltage; // 0x1094 [HoldingRegister(4246)] private UInt32 _inverterCPhaseVoltage; // 0x1096 [HoldingRegister(4248)] private UInt32 _inverterABWireVoltage; // 0x1098 [HoldingRegister(4250)] private UInt32 _inverterBCWireVoltage; // 0x109A [HoldingRegister(4252)] private UInt32 _inverterCAWireVoltage; // 0x109C // ─────────────────────────────────────────────── // Inverter Active Power (kW) // ─────────────────────────────────────────────── [HoldingRegister(4288)] private UInt32 _inverterAPhaseActivePower; // 0x10C0 [HoldingRegister(4290)] private UInt32 _inverterBPhaseActivePower; // 0x10C2 [HoldingRegister(4292)] private UInt32 _inverterCPhaseActivePower; // 0x10C4 // ─────────────────────────────────────────────── // DC/AC Temperatures (°C) // ─────────────────────────────────────────────── [HoldingRegister(4318)] private UInt32 _dcacTemperature1; // 0x10DE [HoldingRegister(4320)] private UInt32 _dcacTemperature2; // 0x10E0 [HoldingRegister(4322)] private UInt32 _dcacTemperature3; // 0x10E2 [HoldingRegister(4324)] private UInt32 _dcacTemperature4; // 0x10E4 [HoldingRegister(4326)] private UInt32 _dcacTemperature5; // 0x10E6 // ─────────────────────────────────────────────── // Date / Time Information // ─────────────────────────────────────────────── [HoldingRegister(4338)] private UInt32 _year; // 0x10F2 [HoldingRegister(4340)] private UInt32 _month; // 0x10F4 [HoldingRegister(4342)] private UInt32 _day; // 0x10F6 [HoldingRegister(4344)] private UInt32 _hour; // 0x10F8 [HoldingRegister(4346)] private UInt32 _minute; // 0x10FA [HoldingRegister(4348)] private UInt32 _second; // 0x10FC // ─────────────────────────────────────────────── // Diesel Generator Measurements // ─────────────────────────────────────────────── [HoldingRegister(4362)] private UInt32 _dieselGenAPhaseVoltage; // 0x110A [HoldingRegister(4364)] private UInt32 _dieselGenBPhaseVoltage; // 0x110C [HoldingRegister(4366)] private UInt32 _dieselGenCPhaseVoltage; // 0x110E [HoldingRegister(4368)] private UInt32 _dieselGenABWireVoltage; // 0x1110 [HoldingRegister(4370)] private UInt32 _dieselGenBCWireVoltage; // 0x1112 [HoldingRegister(4372)] private UInt32 _dieselGenCAWireVoltage; // 0x1114 [HoldingRegister(4380)] private UInt32 _dieselGenVoltageFrequency; // 0x111C [HoldingRegister(4382)] private UInt32 _dieselGenAPhaseCurrent; // 0x111E [HoldingRegister(4384)] private UInt32 _dieselGenBPhaseCurrent; // 0x1120 [HoldingRegister(4386)] private UInt32 _dieselGenCPhaseCurrent; // 0x1122 [HoldingRegister(4388)] private UInt32 _dieselGenNWireCurrent; // 0x1124 [HoldingRegister(4402)] private UInt32 _dieselGenAPhaseApparentPower; // 0x1132 [HoldingRegister(4404)] private UInt32 _dieselGenBPhaseApparentPower; // 0x1134 [HoldingRegister(4406)] private UInt32 _dieselGenCPhaseApparentPower; // 0x1136 [HoldingRegister(4408)] private UInt32 _dieselGenAPhaseActivePower; // 0x1138 [HoldingRegister(4410)] private UInt32 _dieselGenBPhaseActivePower; // 0x113A [HoldingRegister(4412)] private UInt32 _dieselGenCPhaseActivePower; // 0x113C [HoldingRegister(4414)] private UInt32 _dieselGenAPhaseReactivePower; // 0x113E [HoldingRegister(4416)] private UInt32 _dieselGenBPhaseReactivePower; // 0x1140 [HoldingRegister(4418)] private UInt32 _dieselGenCPhaseReactivePower; // 0x1142 // ─────────────────────────────────────────────── // Photovoltaic and Battery Measurements // ─────────────────────────────────────────────── [HoldingRegister(4608)] private UInt32 _pvVoltage1; // 0x1200 [HoldingRegister(4610)] private UInt32 _pvCurrent1; // 0x1202 [HoldingRegister(4612)] private UInt32 _pvPower1; // 0x1204 [HoldingRegister(4614)] private UInt32 _pvVoltage2; // 0x1206 [HoldingRegister(4616)] private UInt32 _pvCurrent2; // 0x1208 [HoldingRegister(4618)] private UInt32 _pvPower2; // 0x120A [HoldingRegister(4620)] private UInt32 _batteryVoltage1; // 0x120C [HoldingRegister(4622)] private UInt32 _batteryCurrent1; // 0x120E [HoldingRegister(4624)] private UInt32 _batteryPower1; // 0x1210 [HoldingRegister(4626)] private UInt32 _batterySoc1; // 0x1212 [HoldingRegister(4628)] private UInt32 _batteryFullLoadDuration1; // 0x1214 [HoldingRegister(4630)] private UInt32 _batteryVoltage2; // 0x1216 [HoldingRegister(4632)] private UInt32 _batteryCurrent2; // 0x1218 [HoldingRegister(4634)] private UInt32 _batteryPower2; // 0x121A [HoldingRegister(4636)] private UInt32 _batterySoc2; // 0x121C [HoldingRegister(4638)] private UInt32 _batteryFullLoadDuration2; // 0x121E [HoldingRegister(4640)] private UInt32 _dcdcTemperature1; // 0x1220 [HoldingRegister(4642)] private UInt32 _dcdcTemperature2; // 0x1222 [HoldingRegister(4644)] private UInt32 _dcdcTemperature3; // 0x1224 [HoldingRegister(4646)] private UInt32 _dcdcTemperature4; // 0x1226 [HoldingRegister(4648)] private UInt32 _dcdcTemperature5; // 0x1228 // ─────────────────────────────────────────────── // Energy and Power Summary // ─────────────────────────────────────────────── [HoldingRegister(4672)] private UInt32 _electricityPurchased; // 0x1240 [HoldingRegister(4674)] private UInt32 _electricityFed; // 0x1242 [HoldingRegister(4700)] private UInt32 _selfGeneratedElectricity; // 0x125C [HoldingRegister(4702)] private UInt32 _batteryCharge; // 0x125E [HoldingRegister(4704)] private UInt32 _batteryDischarge; // 0x1260 [HoldingRegister(4706)] private UInt32 _loadPowerConsumption; // 0x1262 [HoldingRegister(4708)] private UInt32 _dailySelfGeneratedElectricity; // 0x1264 [HoldingRegister(4710)] private UInt32 _dailyElectricityPurchased; // 0x1266 [HoldingRegister(4712)] private UInt32 _dailyElectricityFed; // 0x1268 [HoldingRegister(4714)] private UInt32 _dailyBatteryCharge; // 0x126A [HoldingRegister(4716)] private UInt32 _dailyBatteryDischarge; // 0x126C [HoldingRegister(4718)] private UInt32 _dailyLoadPowerConsumption; // 0x126E [HoldingRegister(4720)] private UInt32 _totalPhotovoltaicPower; // 0x1270 [HoldingRegister(4722)] private UInt32 _totalBatteryPower; // 0x1272 [HoldingRegister(4724)] private UInt32 _totalLoadPower; // 0x1274 [HoldingRegister(4726)] private UInt32 _totalGridPower; // 0x1276 [HoldingRegister(4728)] private UInt32 _importantLoadTotalPower; // 0x1278 [HoldingRegister(4730)] private UInt32 _generalLoadTotalPower; // 0x127A [HoldingRegister(4732)] private UInt32 _pv3Voltage; // 0x127C [HoldingRegister(4734)] private UInt32 _pv3Current; // 0x127E [HoldingRegister(4736)] private UInt32 _pv3Power; // 0x1280 [HoldingRegister(4738)] private UInt32 _pv4Voltage; // 0x1282 [HoldingRegister(4740)] private UInt32 _pv4Current; // 0x1284 [HoldingRegister(4742)] private UInt32 _pv4Power; // 0x1286 [HoldingRegister(4744)] private UInt32 _generatorTotalPower; // 0x128C // ─────────────────────────────────────────────── // Manufacturer Information & Software Versions // ─────────────────────────────────────────────── [HoldingRegister(8192)] private UInt16 _protocolVersionNo; // 0x2000 [HoldingRegister(8193)] private UInt16 _dcacSoftwareVersionNo; // 0x2001 [HoldingRegister(8194)] private UInt16 _dcdcSoftwareVersionNo; // 0x2002 [HoldingRegister(8195)] private UInt16 _armSoftwareVersionNo; // 0x2003 [HoldingRegister(8196)] private UInt16 _cpldVersion; // 0x2004 [HoldingRegister(8197)] private UInt16 _afciSoftwareVersionNo; // 0x2005 [HoldingRegister(8198)] private UInt16 _machineType; // 0x2006 // ─────────────────────────────────────────────── // Device Info & Model // ─────────────────────────────────────────────── [HoldingRegister(8199)] private UInt16 _remain; // 0x2007 [HoldingRegister(8200)] private UInt16 _ratedPower; // 0x2008 (value / 100 = kVA) [HoldingRegister(8205)] private UInt16 _model; // 0x200D // ─────────────────────────────────────────────── // System configuration / operation registers // ─────────────────────────────────────────────── [HoldingRegister(12294, writable: true)] private UInt32 _threePhaseWireSystem; // 0x3006 //[HoldingRegister(12296, writable: true)] private UInt32 _remainnotused; // 0x3008 [HoldingRegister(12298, writable: true)] private UInt32 _inputFrequencyClass; // 0x300A [HoldingRegister(12300, writable: true)] private UInt32 _workingMode; // 0x300C [HoldingRegister(12302, writable: true)] private UInt32 _methodSwitchMode; // 0x300E // ─────────────────────────────────────────────── // Inverter Control and Protection Configuration // ─────────────────────────────────────────────── [HoldingRegister(12304, writable: true)] private UInt32 _enableOnGridUnbalanceCompensation; // 0x3010 //[HoldingRegister(12306, writable: true)] private UInt32 _temperatureDrop; // 0x3012 //[HoldingRegister(12308, writable: true)] private UInt32 _hvrt; // 0x3014 //[HoldingRegister(12310, writable: true)] private UInt32 _lvrt; // 0x3016 //[HoldingRegister(12312, writable: true)] private UInt32 _fanGear; // 0x3018 // ─────────────────────────────────────────────── // Battery & PV Configuration // ─────────────────────────────────────────────── [HoldingRegister(12336, writable: true)] private UInt32 _batteryAccessMethod; // 0x3030 [HoldingRegister(12338, writable: true)] private UInt32 _meterAccessEnable; // 0x3032 [HoldingRegister(12340, writable: true)] private UInt32 _enableBattery1; // 0x3034 [HoldingRegister(12342, writable: true)] private UInt32 _enableBattery2; // 0x3036 [HoldingRegister(12344, writable: true)] private UInt32 _enablePv1; // 0x3038 [HoldingRegister(12346, writable: true)] private UInt32 _enablePv2; // 0x303A [HoldingRegister(12348, writable: true)] private UInt32 _batteryType; // 0x303C [HoldingRegister(12350, writable: true)] private UInt32 _batteryCapacity1; // 0x303E [HoldingRegister(12352, writable: true)] private UInt32 _maxChargingCurrentBattery1; // 0x3040 [HoldingRegister(12354, writable: true)] private UInt32 _maxDischargingCurrentBattery1; // 0x3042 [HoldingRegister(12356, writable: true)] private UInt32 _ratedBatteryVoltage1; // 0x304A [HoldingRegister(12358, writable: true)] private UInt32 _minSocBattery1; // 0x3046 [HoldingRegister(12360, writable: true)] private UInt32 _setValueBattery1; // 0x3048 //[HoldingRegister(12362, writable: true)] private UInt32 _activeChargeDischarge; // 0x304A // this [HoldingRegister(12364, writable: true)] private UInt32 _activeChargeDischargePower; // 0x304C [HoldingRegister(12380, writable: true)] private UInt32 _enableIslandProtection; // 0x305C [HoldingRegister(12382, writable: true)] private UInt32 _pvAccessMode; // 0x305E // ─────────────────────────────────────────────── // System & Battery-2 Configuration // ─────────────────────────────────────────────── [HoldingRegister(12384, writable: true)] private UInt32 _outputVoltageAdjustmentFactor; // 0x3060 [HoldingRegister(12386, writable: true)] private UInt32 _setValueBatteryUndervoltage1; // 0x3062 [HoldingRegister(12388, writable: true)] private UInt32 _inverterPowerLimit; // 0x3064 [HoldingRegister(12400, writable: true)] private UInt32 _battery2Capacity; // 0x30B0 [HoldingRegister(12402, writable: true)] private UInt32 _maxChargingCurrentBattery2; // 0x30B2 [HoldingRegister(12404, writable: true)] private UInt32 _maxDischargingCurrentBattery2; // 0x30B4 [HoldingRegister(12406, writable: true)] private UInt32 _battery2RatedVoltage; // 0x30B6 [HoldingRegister(12408, writable: true)] private UInt32 _battery2MinSoc; // 0x30B8 [HoldingRegister(12410, writable: true)] private UInt32 _battery2OverVoltageSetting; // 0x30BA [HoldingRegister(12412, writable: true)] private UInt32 _battery2UnderVoltageSetpoint; // 0x30BC // [HoldingRegister(12414, writable: true)] private UInt32 _singleOrParallelMachine; // 0x30BE [HoldingRegister(12416, writable: true)] private UInt32 _numberOfSystemModules; // 0x30C0 [HoldingRegister(12418, writable: true)] private UInt32 _parallelModuleMachineNumber; // 0x30C2 [HoldingRegister(12420, writable: true)] private UInt32 _accreditedCountries; // 0x30C4 [HoldingRegister(12618, writable: true)] private UInt32 _battery1BackupSOC; // 0x314A [HoldingRegister(12620, writable: true)] private UInt32 _battery2BackupSOC; // 0x314C [HoldingRegister(12746, writable: true)] private UInt32 _enableGridExport; // 0x314A [HoldingRegister(12748, writable: true)] private UInt32 _powerGridExportLimit; // 0x314C // ─────────────────────────────────────────────── // System Control & Diagnostic Registers // ─────────────────────────────────────────────── [HoldingRegister(15426, writable: true)] private UInt32 _powerOn; // 0x3C42 [HoldingRegister(15428, writable: true)] private UInt32 _powerOff; // 0x3C44 [HoldingRegister(15430, writable: true)] private UInt32 _faultClearing; // 0x3C46 [HoldingRegister(15518, writable: true)] private UInt32 _meterReverseManualDetection; // 0x3C9E //[HoldingRegister(15520, writable: true)] private UInt32 _batteryVoltageRating; // 0x3CA0 This causing the inverter to switch off, please consider testing it first before uncommenting [HoldingRegister(15522, writable: true)] private UInt32 _battery1Activation; // 0x3CA2 [HoldingRegister(15524, writable: true)] private UInt32 _battery2Activation; // 0x3CA4 // ─────────────────────────────────────────────── // Electric Meter Measurements (Read-Only) // ─────────────────────────────────────────────── [HoldingRegister(40960)] private UInt32 _electricMeterOperatingState; // 0xA000 [HoldingRegister(41216)] private UInt32 _electricMeterAPhaseVoltage; // 0xA100 [HoldingRegister(41218)] private UInt32 _electricMeterBPhaseVoltage; // 0xA102 [HoldingRegister(41220)] private UInt32 _electricMeterCPhaseVoltage; // 0xA104 [HoldingRegister(41222)] private UInt32 _electricMeterAPhaseCurrent; // 0xA106 [HoldingRegister(41224)] private UInt32 _electricMeterBPhaseCurrent; // 0xA108 [HoldingRegister(41226)] private UInt32 _electricMeterCPhaseCurrent; // 0xA10A [HoldingRegister(41234)] private UInt32 _electricMeterAPhaseActivePower; // 0xA112 [HoldingRegister(41236)] private UInt32 _electricMeterBPhaseActivePower; // 0xA114 [HoldingRegister(41238)] private UInt32 _electricMeterCPhaseActivePower; // 0xA116 // ─────────────────────────────────────────────── // Battery Cabinet 1 — Energy / Pack measurements (read-only) // ─────────────────────────────────────────────── [HoldingRegister(45308)] private UInt32 _batteryCab1TotalChargingEnergy; // 0xB0FC kW·h [HoldingRegister(45310)] private UInt32 _batteryCab1TotalDischargedEnergy; // 0xB0FE kW·h [HoldingRegister(45312)] private UInt32 _batteryCab1PackTotalVoltage; // 0xB100 (resolution 0.01 V) [HoldingRegister(45314)] private UInt32 _batteryCab1PackTotalCurrent; // 0xB102 (resolution 0.01 A) [HoldingRegister(45316)] private UInt32 _batteryCab1Temperature; // 0xB104 (resolution 0.01 °C) [HoldingRegister(45318)] private UInt32 _batteryCab1Soc; // 0xB106 % [HoldingRegister(45320)] private UInt32 _batteryCab1Soh; // 0xB108 % // ─────────────────────────────────────────────── // Battery Cabinet 2 — Energy / Pack Measurements (Read-Only) // ─────────────────────────────────────────────── [HoldingRegister(45564)] private UInt32 _batteryCab2TotalChargingEnergy; // 0xB1FC kW·h [HoldingRegister(45566)] private UInt32 _batteryCab2TotalDischargedEnergy; // 0xB1FE kW·h [HoldingRegister(45568)] private UInt32 _batteryCab2PackTotalVoltage; // 0xB200 (0.01 V) [HoldingRegister(45570)] private UInt32 _batteryCab2PackTotalCurrent; // 0xB202 (0.01 A) [HoldingRegister(45572)] private UInt32 _batteryCab2Temperature; // 0xB204 (0.01 °C) [HoldingRegister(45574)] private UInt32 _batteryCab2Soc; // 0xB206 % [HoldingRegister(45576)] private UInt32 _batteryCab2Soh; // 0xB208 % // ─────────────────────────────────────────────── // Time-based scheduling (period 1) configuration // ─────────────────────────────────────────────── [HoldingRegister(49332, writable: true)] private UInt32 _repetitiveWeeks; // 0xC0B4, bit flags Sun–Sat [HoldingRegister(49334, writable: true)] private UInt32 _effectiveStartDate; // 0xC0B6, UNIX timestamp (UTC+offset) [HoldingRegister(49336, writable: true)] private UInt32 _effectiveEndDate; // 0xC0B8, UNIX timestamp (UTC+offset) [HoldingRegister(49338, writable: true)] private UInt32 _chargingPowerPeriod1; // 0xC0BA, float [0–50] kW, default 5 [HoldingRegister(49340, writable: true)] private UInt32 _dischargingPowerPeriod1; // 0xC0BA, float [0–50] kW, default 5 // ─────────────────────────────────────────────── // Time-based charge/discharge schedule period 1 // ─────────────────────────────────────────────── [HoldingRegister(49172, writable: true)] private UInt32 _chargeStartTimePeriod1; // 0xC014 [0-2359] (start) [HoldingRegister(49174, writable: true)] private UInt32 _chargeEndTimePeriod1; // 0xC016 [0-2359] (end) [HoldingRegister(49176, writable: true)] private UInt32 _dischargeStartTimePeriod1; // 0xC018 [0-2359] (start) [HoldingRegister(49178, writable: true)] private UInt32 _dischargeEndTimePeriod1; // 0xC01A [0-2359] (end) }