using InnovEnergy.Lib.Protocols.Modbus.Reflection.Attributes; using InnovEnergy.Lib.StatusApi.DeviceTypes; using InnovEnergy.Lib.Units.Composite; #pragma warning disable CS0649 namespace InnovEnergy.Lib.Devices.EmuMeter; using Float32 = Single; [AddressOffset(-2)] // why? public record EmuMeterRegisters : IAc3Meter { [HoldingRegister(9002)] private Float32 _ActivePowerL1; [HoldingRegister(9004)] private Float32 _ActivePowerL2; [HoldingRegister(9006)] private Float32 _ActivePowerL3; [HoldingRegister(9012)] private Float32 _ReactivePowerL1; [HoldingRegister(9014)] private Float32 _ReactivePowerL2; [HoldingRegister(9016)] private Float32 _ReactivePowerL3; [HoldingRegister(9022)] private Float32 _ApparentPowerL1; [HoldingRegister(9024)] private Float32 _ApparentPowerL2; [HoldingRegister(9026)] private Float32 _ApparentPowerL3; [HoldingRegister(9102)] private Float32 _CurrentL1; [HoldingRegister(9104)] private Float32 _CurrentL2; [HoldingRegister(9106)] private Float32 _CurrentL3; [HoldingRegister(9200)] private Float32 _VoltageL1N; [HoldingRegister(9202)] private Float32 _VoltageL2N; [HoldingRegister(9204)] private Float32 _VoltageL3N; [HoldingRegister(9310)] private Float32 _Frequency; public Ac3Bus Ac => Ac3Bus.FromPhasesAndFrequency ( l1: AcPhase.FromVoltageCurrentActiveReactiveApparent ( _VoltageL1N, _CurrentL1, _ActivePowerL1, _ReactivePowerL1, _ApparentPowerL1 ), l2: AcPhase.FromVoltageCurrentActiveReactiveApparent ( _VoltageL2N, _CurrentL2, _ActivePowerL2, _ReactivePowerL2, _ApparentPowerL2 ), l3: AcPhase.FromVoltageCurrentActiveReactiveApparent ( _VoltageL3N, _CurrentL3, _ActivePowerL3, _ReactivePowerL3, _ApparentPowerL3 ), frequency: _Frequency ); }