Innovenergy_trunk/csharp/Lib/Devices/IEM3kGridMeter/IEM3kGridMeterRegisters.cs

73 lines
2.4 KiB
C#
Raw Normal View History

2023-07-11 12:06:53 +00:00
using InnovEnergy.Lib.Protocols.Modbus.Reflection.Attributes;
using InnovEnergy.Lib.StatusApi.DeviceTypes;
using InnovEnergy.Lib.Units.Composite;
2024-02-20 16:43:23 +00:00
using static System.Math;
2023-07-11 12:06:53 +00:00
#pragma warning disable CS0649
namespace InnovEnergy.Lib.Devices.IEM3kGridMeter;
using Float32 = Single;
[AddressOffset(-2)] // why?
public class Iem3KGridMeterRegisters : IAc3Meter
{
2024-02-20 16:43:23 +00:00
private const Float32 ZeroBecauseReactivePowerNotSupported = 0;
2023-09-01 06:54:46 +00:00
2023-07-11 12:06:53 +00:00
// TODO
2024-02-20 16:43:23 +00:00
[HoldingRegister<Float32>(3054)] private Float32 _ActivePowerL1;
[HoldingRegister<Float32>(3056)] private Float32 _ActivePowerL2;
[HoldingRegister<Float32>(3058)] private Float32 _ActivePowerL3;
2023-07-11 12:06:53 +00:00
2024-02-20 16:43:23 +00:00
[HoldingRegister<Float32>(3000)] private Float32 _CurrentL1;
[HoldingRegister<Float32>(3002)] private Float32 _CurrentL2;
[HoldingRegister<Float32>(3004)] private Float32 _CurrentL3;
[HoldingRegister<Float32>(3028)] private Float32 _VoltageL1N;
[HoldingRegister<Float32>(3030)] private Float32 _VoltageL2N;
[HoldingRegister<Float32>(3032)] private Float32 _VoltageL3N;
[HoldingRegister<Float32>(3110)] private Float32 _Frequency;
2023-07-11 12:06:53 +00:00
2024-02-20 16:43:23 +00:00
//[HoldingRegister<Float32>(9012)] private Float32 _ReactivePowerL1;
//[HoldingRegister<Float32>(9014)] private Float32 _ReactivePowerL2;
//[HoldingRegister<Float32>(9016)] private Float32 _ReactivePowerL3;
2023-09-01 06:54:46 +00:00
2024-02-20 16:43:23 +00:00
//[HoldingRegister<Float32>(9012)] private Float32 _ReactivePowerL1;
//[HoldingRegister<Float32>(9014)] private Float32 _ReactivePowerL2;
//[HoldingRegister<Float32>(9016)] private Float32 _ReactivePowerL3;
2023-09-01 06:54:46 +00:00
2024-02-20 16:43:23 +00:00
//[HoldingRegister<Float32>(9022)] private Float32 _ApparentPowerL1;
//[HoldingRegister<Float32>(9024)] private Float32 _ApparentPowerL2;
//[HoldingRegister<Float32>(9026)] private Float32 _ApparentPowerL3;
2023-07-11 12:06:53 +00:00
2024-02-20 16:43:23 +00:00
public Ac3Bus Ac => new Ac3Bus
{
L1 = new ()
{
Current = Abs(_CurrentL1),
Voltage = Abs(_VoltageL1N),
Phi = Atan2(ZeroBecauseReactivePowerNotSupported, _ActivePowerL1)
},
L2 = new ()
{
Current = Abs(_CurrentL2),
Voltage = Abs(_VoltageL2N),
Phi = Atan2(ZeroBecauseReactivePowerNotSupported, _ActivePowerL2)
},
L3 = new ()
{
Current = Abs(_CurrentL3),
Voltage = Abs(_VoltageL3N),
Phi = Atan2(ZeroBecauseReactivePowerNotSupported, _ActivePowerL3)
},
Frequency = _Frequency
};
2023-07-11 12:06:53 +00:00
}