update and uncomment the needed file

This commit is contained in:
atef 2025-09-01 14:52:52 +02:00
parent b424643213
commit c0030d7795
4 changed files with 26 additions and 54 deletions

View File

@ -114,36 +114,8 @@ public static class Program
await DataLogging(statusrecord, timestamp); // save a csv file locally
await SaveModbusTcpFile(statusrecord); // save the json file for modbuscTCP
/* statusrecord.AcDcGrowatt.RemotePowerControl.WriteLine(" = RemotePowerControl");
statusrecord.AcDcGrowatt.EnableCommand.WriteLine(" = EnableCommand");
statusrecord.AcDcGrowatt.ControlPermession.WriteLine(" ControlPermession");*/
statusrecord.AcDcGrowatt.GridMeterPower.WriteLine(" GridMeterPower");
statusrecord.AcDcGrowatt.InverterActivePower.WriteLine(" InverterActivePower");
statusrecord.AcDcGrowatt.PhaseACurrent.WriteLine(" PhaseACurrent "); //30409 we set power here
statusrecord.AcDcGrowatt.GridAbLineVoltage.WriteLine(" GridAbLineVoltage "); //30409 we set power here
// statusrecord.AcDcGrowatt.RemotePowerControlChargeDuration.WriteLine(" = RemotePowerControlChargeDuration");
statusrecord.AcDcGrowatt.Batteries[0].Soc.WriteLine(" SOC");
statusrecord.AcDcGrowatt.Batteries[0].Power.WriteLine(" Battery Power");
statusrecord.AcDcGrowatt.Batteries[0].Current.WriteLine(" Battery Current");
statusrecord.AcDcGrowatt.Batteries[0].Voltage.WriteLine(" Battery Voltage");
/* statusrecord.AcDcGrowatt.BatteryMaxChargePower.WriteLine(" BatteryMaxChargePower "); //30409 we set power here
statusrecord.AcDcGrowatt.BatteryMaxDischargePower.WriteLine(" BatteryMaxDischargePower "); //30409 we set power here*/
statusrecord.AcDcGrowatt.SystemOperatingMode.WriteLine(" = SystemOperatingMode");
statusrecord.AcDcGrowatt.BatteryOperatingMode.WriteLine(" = BatteryOperatingMode");
statusrecord.AcDcGrowatt.OperatingPriority.WriteLine(" = OperatingPriority"); // 30408 this the duration
statusrecord.AcDcGrowatt.FaultMainCode.WriteLine(" = FaultMainCode"); // 30408 this the duration
statusrecord.AcDcGrowatt.FaultSubCode.WriteLine(" = FaultSubCode"); // 30408 this the duration
statusrecord.AcDcGrowatt.WarningMainCode.WriteLine(" = WarningMainCode"); // 30408 this the duration
statusrecord.AcDcGrowatt.WarningSubCode.WriteLine(" = WarningSubCode"); // 30408 this the duration
var stopTime = DateTime.Now;
Console.WriteLine(stopTime.ToString("HH:mm:ss.fff"));
Console.WriteLine("***************************** Finish Battery Data *********************************************");
EssModeControl(statusrecord,EssMode.LoadPriority);
EssModeControl(statusrecord,EssMode.LoadPriority); // this should moved to config file
statusrecord.ApplyDefaultSettings();
@ -182,7 +154,7 @@ public static class Program
switch (mode)
{
case EssMode.Off:
return "no mode";/*
return "no mode";
case EssMode.GridPriority:
statusrecord.AcDcGrowatt.RemotePowerControl = true;
statusrecord.AcDcGrowatt.RemotePowerControlChargeDuration = 0; // 30408 this the duration
@ -201,7 +173,7 @@ public static class Program
return "Battery priority mode active";
case EssMode.LoadPriority:
statusrecord.AcDcGrowatt.RemotePowerControl = false;
return "Load priority mode active";*/
return "Load priority mode active";
default:
throw new ArgumentOutOfRangeException(nameof(mode), mode, null);
}
@ -302,7 +274,7 @@ public static class Program
{
if (st is null)
return;
/*
st.AcDcGrowatt.BatteryMaxChargeCurrent = st.Config.MaximumChargingCurrent;
st.AcDcGrowatt.BatteryMaxdischargeCurrent = st.Config.MaximumDischargingCurrent;
st.AcDcGrowatt.EmsCommunicationFailureTime = 20; // 20 sec
@ -312,7 +284,7 @@ public static class Program
st.AcDcGrowatt.BatteryChargeCutoffVoltage = 100; //st.Config.BatteryChargeCutoffVoltage;
st.AcDcGrowatt.BatteryDischargeCutoffVoltage = 20; //st.Config.BatteryDischargeCutoffVoltage;
st.AcDcGrowatt.BatteryMaxChargeCurrent = 200; //st.Config.BatteryChargeCutoffVoltage;
st.AcDcGrowatt.BatteryMaxdischargeCurrent = 200; //st.Config.BatteryChargeCutoffVoltage;*/
st.AcDcGrowatt.BatteryMaxdischargeCurrent = 200; //st.Config.BatteryChargeCutoffVoltage;
}
@ -354,13 +326,13 @@ public static class Program
private static async Task SaveModbusTcpFile(StatusRecord status)
{
var modbusData = new Dictionary<String, UInt16>();
var protcolNumber = 2.0;
const Double protcolNumber = 1.1;
var pv1Power = status.AcDcGrowatt.Pv1Current * status.AcDcGrowatt.Pv1Voltage;
var pv2Power = status.AcDcGrowatt.Pv2Current * status.AcDcGrowatt.Pv2Voltage;
// SYSTEM DATA
var result1 = ConvertToModbusRegisters((protcolNumber * 10), "UInt16", 30000); // this to be updated to modbusTCP version
// var result2 = ConvertToModbusRegisters(status.AcDcGrowatt.SystemDateTime.ToUnixTime(), "UInt32", 30001);
var result2 = ConvertToModbusRegisters(status.AcDcGrowatt.SystemDateTime.ToUnixTime(), "UInt32", 30001);
var result3 = ConvertToModbusRegisters(status.AcDcGrowatt.SystemOperatingMode, "UInt16", 30003);
var result17 = ConvertToModbusRegisters(status.AcDcGrowatt.OperatingPriority, "UInt16", 30004);
@ -388,7 +360,7 @@ public static class Program
// Merge all results into one dictionary
var allResults = new[]
{
result1,/* result2, */result3, result17, result4, result5, result6, result7, result8,
result1,result2, result3, result17, result4, result5, result6, result7, result8,
result9, result10, result11, result12, result13, result14, result15, result16, result18, result19
};

View File

@ -26,7 +26,6 @@ public partial class WITGrowatRecord
public Int32 MeterPower => _MeterPower;
public ActivePower GridMeterPower => _GridPower;
public Int32 BatteryPower1
{
get => _BatteryPower1;
@ -56,7 +55,7 @@ public partial class WITGrowatRecord
public DcPower Pv1InpuPower => _Pv1InpuPower;
// ********************************** Holding Registers (Control) *************************************************************
/*
// public UInt16 DeviceModel => _DeviceModel;
public UInt32 RatedPower
{
@ -95,21 +94,22 @@ public partial class WITGrowatRecord
set => _EnableCommand = value;
}
public DateTime SystemDateTime
{
get
{
var systemTime1 = _SystemTime1 + 2000; // We add 2000 years to fit a correct epoch time
return new DateTime(systemTime1, _SystemTime2, _SystemTime3, _SystemTime4, _SystemTime5,
_SystemTime6);
}
public DateTime SystemDateTime
{
get
{
var systemTime1 = _SystemTime1 + 2000; // We add 2000 years to fit a correct epoch time
return new DateTime(systemTime1, _SystemTime2, _SystemTime3, _SystemTime4, _SystemTime5,
_SystemTime6);
}
}
/* public Boolean EnableSyn
{
get => _EnableSyn ;
set => _EnableSyn = value;
}*/
/*
public Percent ActivePowerPercentDerating
{
get => _ActivePowerPercentDerating;
@ -234,7 +234,7 @@ public partial class WITGrowatRecord
set => _BatteryMaxdischargeCurrent = (UInt16) value;
}
*/
public IReadOnlyList<BatteryRecord> Batteries => new List<BatteryRecord>
@ -255,7 +255,7 @@ public partial class WITGrowatRecord
AccumulatedDischargeEnergy = _AccumulatedDishargeEnergy1,
BatteryAmbientTemperature = _BatteryAmbientTemperature1
},
}
/*
new BatteryRecord
{

View File

@ -129,7 +129,7 @@ public partial class WITGrowatRecord
/****************************** Holding registers ****************************/
// [HoldingRegister(30000)] private UInt16 _DeviceModel;
/* [HoldingRegister<UInt32>(30016, Scale = 0.1)] private UInt32 _RatedPower;
[HoldingRegister<UInt32>(30016, Scale = 0.1)] private UInt32 _RatedPower;
[HoldingRegister<UInt32>(30018, Scale = 0.1)] private UInt32 _MaxActivePower;
[HoldingRegister<UInt32>(30028, Scale = 0.1)] private UInt32 _PvInputMaxPower;
[HoldingRegister(30030)] private UInt16 _BatteryType;

View File

@ -41,7 +41,7 @@ public class ModbusDevice<[DynamicallyAccessedMembers(All)] R> where R : notnull
foreach (var batch in _Batches)
{
batch.Read(record);
//Thread.Sleep(50); // this added mainly for Growatt reading
Thread.Sleep(50); // this added mainly for Growatt reading
}
return record;
}