using InnovEnergy.Lib.Devices.Trumpf.TruConvert; namespace InnovEnergy.Lib.Devices.Trumpf.TruConvertAc; public record TruConvertAcControl { private static readonly TimeSpan DefaultCommunicationTimeOut = TimeSpan.FromSeconds(10); public UInt32 Date { get; init;} public UInt32 Time { get; init;} public UInt32 IpAddress { get; init;} //= 0x C0A80102; public UInt32 Subnet { get; init;} //= 0x FFFFFF00; public UInt32 Gateway { get; init;} //= 0x C0A80102; public Boolean ResetParamToDefault { get; init;} = false ; // Coil public TimeSpan CommunicationTimeout { get; init;} = DefaultCommunicationTimeOut; public Boolean FactoryResetParameters { get; init;} = false; public SystemConfig ConnectedSystemConfig { get; init;} = 0; public UInt16 UpdateSwTrigger { get; init;} = 0; public UInt16 AutomaticSwUpdate { get; init;} = 0; public UInt16 CustomerValuesSaveReset { get; init;} = 0; public UInt16 SerialNumberSystemControl { get; init;} = 0; public UInt16 SerialNumberAcDc { get; init;} = 0; public UInt16 IntegrationLevel { get; init;} = 0; public UInt16 IlBuildnumber { get; init;} = 0; public Boolean PowerStageEnable { get; init;} = true; public SymmetricAcOperationMode SetValueConfig { get; init;} = 0; public Boolean ResetsAlarmAndWarning { get; init;} = false; public PreChargeDcLinkConfig PreChargeDcLinkConfig { get; init;} = (PreChargeDcLinkConfig)0; public PowerFactorConvention PowerFactorConvention { get; init;} = 0; //0 = producer public UInt16 SlaveAddress { get; init;} = Slave.Broadcast; public AcErrorPolicy ErrorHandlingPolicy { get; init;} = 0; public AcDcGridType GridType { get; init;} = 0; public UInt16 SubSlaveAddress { get; init;} = 0; public Boolean UseModbusSlaveIdForAddressing { get; init;} = false; public UInt16 SubSlaveErrorPolicy { get; init;} = 0; // must be an enum public Decimal SignedPowerNominalValue { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal SignedPowerSetValueL1 { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal SignedPowerSetValueL2 { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal SignedPowerSetValueL3 { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal PowerSetValue { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal PowerSetValueL1 { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal PowerSetValueL2 { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal PowerSetValueL3 { get; init;} = 0; // resolution 0.001 and Unit kva, public Decimal MaximumGridCurrentRmsL1 { get; init;} = 0; // resolution : 0.01 public Decimal MaximumGridCurrentRmsL2 { get; init;} = 0; // resolution : 0.01 public Decimal MaximumGridCurrentRmsL3 { get; init;} = 0; // resolution : 0.01 public Decimal CosPhiSetValueL1 { get; init;} = 0; // resolution : 0.01 public Decimal CosPhiSetValueL2 { get; init;} = 0; // resolution : 0.01 public Decimal CosPhiSetValueL3 { get; init;} = 0; // resolution : 0.01 public Boolean PhaseL1IsCapacitive { get; init;} = true; // True = Capacitive, false = Inductive public Boolean PhaseL2IsCapacitive { get; init;} = true; // True = Capacitive, false = Inductive public Boolean PhaseL3IsCapacitive { get; init;} = true; // True = Capacitive, false = Inductive public Boolean PhasesAreCapacitive { get; init;} = true; // True = Capacitive, false = Inductive public Double SetPointCosPhi { get; init;} = 0; // resolution 0.01 public Double SetPointSinPhi { get; init;} = 0; // resolution 0.01 public Double SetPointSinPhiL1 { get; init;} = 0; // resolution 0.01 public Double SetPointSinPhiL2 { get; init;} = 0; // resolution 0.01 public Double SetPointSinPhiL3 { get; init;} = 0; // resolution 0.01 public Decimal FrequencyOffsetIm { get; init;} = 0; // resolution 0.01 public UInt16 VoltageAdjustmentFactorIm { get; init;} = 0; public UInt16 PreChargeDcLinkVoltage { get; init;} = 0; public Decimal MaxPeakCurrentVoltageControlL1 { get; init;} = 0; // resolution 0.01 public Decimal MaxPeakCurrentVoltageControlL2 { get; init;} = 0; // resolution 0.01 public Decimal MaxPeakCurrentVoltageControlL3 { get; init;} = 0; // resolution 0.01 public UInt16 GridFormingMode { get; init;} = 1; // 0 = not grid-forming (grid-tied) ,1 = grid-forming public UInt16 DcLinkRefVoltage { get; init;} = 800; public UInt16 DcLinkMinVoltage { get; init;} = 780; public UInt16 DcLinkMaxVoltage { get; init;} = 820; public UInt16 DcVoltageRefUs { get; init;} = 900; public UInt16 DcMinVoltageUs { get; init;} = 880; public UInt16 DcMaxVoltageUs { get; init;} = 920; // Need to discuss this with Ivo // public UInt16 FrequencySlopeIslandMode { get; init;} = 200; // resolution 0.01 // public UInt16 VoltageSlopeIslandMode { get; init;} = 500; // resolution 0.01 public UInt16 AcDcGcBypassMode { get; init;} = 0; public UInt16 AcDcGcPMaxThresholdPercent { get; init;} = 0; // resolution 0.01 public UInt16 AcDcGcStartupRampEnable { get; init;} = 0; public DcStageConfiguration DcConfigModule { get; init;} = 0; // this must be an enum public UInt16 DcDcPowerDistribution { get; init;} = 0; // 0.1 resolution public AcDcDistributionMode AcDcDistributionMode { get; init;} = 0; }