simplify AcPhase

This commit is contained in:
ig 2023-02-23 16:16:37 +01:00
parent 5e9e9c560a
commit 438563fef8
2 changed files with 14 additions and 76 deletions

View File

@ -218,33 +218,12 @@ public class TruConvertAcDevice
(
Ac: new ThreePhaseAcConnection
(
AcPhase.FromActiveReactive(
activePower: powerAcL1,
apparentPower: apparentPowerAcL1,
voltage: gridVoltageL1,
current: phaseCurrentL1),
AcPhase.FromActiveReactive(
activePower: powerAcL2,
apparentPower: apparentPowerAcL2,
voltage: gridVoltageL2,
current: phaseCurrentL2),
AcPhase.FromActiveReactive(
activePower: powerAcL3,
apparentPower: apparentPowerAcL3,
voltage: gridVoltageL3,
current: phaseCurrentL3),
new AcPhase(gridVoltageL1,phaseCurrentL1, ACos(powerAcL1/apparentPowerAcL1)),
new AcPhase(gridVoltageL2,phaseCurrentL2, ACos(powerAcL2/apparentPowerAcL2)),
new AcPhase(gridVoltageL3,phaseCurrentL3, ACos(powerAcL3/apparentPowerAcL3)),
gridFrequency // Gird Frequency
),
Dc: new DcConnection
(
dcVoltage,
dcCurrent
),
Dc: new DcConnection(dcVoltage, dcCurrent),
SerialNumber : acSerialNumber.GetInt32(2009).ToString(),

View File

@ -1,76 +1,35 @@
using DecimalMath;
using static DecimalMath.DecimalEx;
namespace InnovEnergy.Lib.StatusApi.Phases;
public record AcPhase
(
Decimal Voltage,
Decimal Current,
Decimal Phi ,
Decimal ApparentPower,
Decimal ActivePower,
Decimal ReactivePower,
Decimal PowerFactor
)
public record AcPhase(Decimal Voltage, Decimal Current, Decimal Phi)
: Phase(Voltage, Current)
{
public Decimal ApparentPower => Voltage * Current;
public Decimal ActivePower => ApparentPower * PowerFactor;
public Decimal ReactivePower => ApparentPower * Sin(Phi);
public Decimal PowerFactor => Cos(Phi);
public static AcPhase FromActiveReactive
(
Decimal activePower,
Decimal apparentPower,
Decimal reactivePower,
Decimal voltage,
Decimal current
)
{
var reactivePower = Sqrt(Math.Abs(apparentPower * apparentPower - activePower * activePower ));
var phi = ATan2(reactivePower, activePower);
return new AcPhase
(
Voltage: voltage,
Current: current,
Phi: phi,
ApparentPower: apparentPower,
ActivePower: activePower,
ReactivePower: reactivePower,
PowerFactor: Cos(phi)
Phi: phi
);
}
public static AcPhase CreateInstance(Decimal voltage, Decimal current, Decimal phi)
{
var powerFactor = Cos(phi);
var apparentPower = voltage * current;
var activePower = apparentPower * powerFactor;
var reactivePower = apparentPower * Sin(phi);
return new AcPhase
(
voltage,
current,
phi,
apparentPower,
activePower,
reactivePower,
powerFactor
);
}
//public Decimal ApparentPower => Voltage * Current;
//public Decimal ActivePower => ApparentPower * PowerFactor;
//public Decimal ReactivePower => ApparentPower * Sin(Phi);
//public Decimal PowerFactor => Cos(Phi);
// public Decimal ReactivePower {get; init;}
// public Decimal ApparentPower {get; }
// public Decimal ActivePower {get; }
// public Decimal PowerFactor {get; init;}
}
}