diff --git a/csharp/lib/Devices/Trumpf/TruConvertDc/DcControlRegisters.cs b/csharp/lib/Devices/Trumpf/TruConvertDc/DcControlRegisters.cs new file mode 100644 index 000000000..90b0552b6 --- /dev/null +++ b/csharp/lib/Devices/Trumpf/TruConvertDc/DcControlRegisters.cs @@ -0,0 +1,48 @@ +namespace InnovEnergy.Lib.Devices.Trumpf.TruConvertDc; + +public static class DcControlRegisters +{ + public const UInt16 Date = 1001; + public const UInt16 Time = 1003; + public const UInt16 IpAddress = 1005; + public const UInt16 Subnet = 1007; + public const UInt16 Gateway = 1009; + public const UInt16 ResetParamToDefault = 1011; + public const UInt16 TimeoutCommunication = 1017; + public const UInt16 RestartFlag = 1018; + public const UInt16 ConnectedSystemConfig = 1019; + public const UInt16 UpdateSwTrigger = 1027; + public const UInt16 AutomaticSwUpdate = 1028; + public const UInt16 CustomerValuesSaveReset = 1029; + public const UInt16 SerialNumberSystemControl = 2001; + public const UInt16 SerialNumberDcDc = 2003; + public const UInt16 MaterialNumberDcDc = 2005; + public const UInt16 PowerStageOperation = 4001; + public const UInt16 ResetsAlarmAndWarning = 4003; + public const UInt16 SlaveAddress = 4008; + public const UInt16 SlaveAlarmPolicy = 4009; + public const UInt16 SubSlaveAddress = 4011; + public const UInt16 ModbusSlaveId = 4012; + public const UInt16 MaximumBatteryVoltage = 4101; + public const UInt16 MinimumBatteryVoltage = 4102; + public const UInt16 MaximumBatteryVoltageR = 4103; // same as the two previous ones just Different resolution// not sure + public const UInt16 MinimumBatteryVoltageR = 4104; // same as the two previous ones just Different resolution// not sure + public const UInt16 MaximumBatteryChargingCurrent = 4107; + public const UInt16 MaximumBatteryDischargingCurrent = 4110; + public const UInt16 MaximumVoltageOfVcc = 4113; + public const UInt16 MaximumCurrentOfVcc = 4116; + public const UInt16 StartCurrentOfVcc = 4119; + public const UInt16 MaximalPowerAtDc = 4122; + public const UInt16 MaximumVoltageAlarmThreshold = 4125; + public const UInt16 MinimumVoltageAlarmThreshold = 4128; + + //DcDc operation only + public const UInt16 BatteryCurrentSet = 4501; + public const UInt16 DynamicCurrentPerMillisecond = 4502; + + public const UInt16 DcLinkControlMode = 4505; + public const UInt16 ReferenceVoltage = 4506; + public const UInt16 UpperVoltageWindow = 4507; + public const UInt16 LowerVoltageWindow = 4508; + public const UInt16 VoltageDeadBand = 4509; +} \ No newline at end of file diff --git a/csharp/lib/Devices/Trumpf/TruConvertDc/TruConvertDcControl.cs b/csharp/lib/Devices/Trumpf/TruConvertDc/TruConvertDcControl.cs new file mode 100644 index 000000000..82a4e4dcc --- /dev/null +++ b/csharp/lib/Devices/Trumpf/TruConvertDc/TruConvertDcControl.cs @@ -0,0 +1,44 @@ +using InnovEnergy.Lib.Devices.Trumpf.TruConvert; + +namespace InnovEnergy.Lib.Devices.Trumpf.TruConvertDc; + +public record TruConvertDcControl +{ + 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 TimeoutForCommunication { get; init;} = DefaultCommunicationTimeOut; + public Boolean RestartFlag { get; init;} = false ; // Coil + public SystemConfig ConnectedSystemConfig { get; init;} = SystemConfig.NoConfig ; + public UInt16 UpdateSwTrigger { get; init;} = 0 ; + public UInt16 AutomaticSwUpdate { get; init;} = 0 ; + public UInt16 CustomerValuesSaveReset { get; init;} = 0 ; + public UInt32 SerialNumberSystemControl { get; init;} + public UInt32 SerialNumberDcDc { get; init;} + public UInt32 MaterialNumberDcDc { get; init;} + public Boolean PowerStageEnable { get; init;} = true; //Coil + public Boolean ResetsAlarmAndWarning { get; init;} = false; //Coil + public UInt16 SlaveAddress { get; init;} = Slave.Broadcast; + public UInt16 SlaveAlarmPolicy { get; init;} = 0; // this is must be a an enum + public UInt16 SubSlaveAddress { get; init;} = 0; + public Boolean ModbusSlaveId { get; init;} = false; // Coil + public Decimal MaximumBatteryVoltage { get; init;} = 0; // resolution 0.01 + public Decimal MinimumBatteryVoltage { get; init;} = 0; // resolution 0.01 + public Decimal MaximumBatteryChargingCurrent { get; init;} = 0; // resolution 0.1 + public Decimal MaximumBatteryDischargingCurrent { get; init;} = 0; // resolution 0.1 + public Decimal MaximalPowerAtDc { get; init;} = 0; + public Decimal MaximumVoltageAlarmThreshold { get; init;} = 55; // resolution 0.1 + public Decimal MinimumVoltageAlarmThreshold { get; init;} = 0; // resolution 0.1 + public Decimal BatteryCurrentSet { get; init;} = 0; // resolution 1.0 + public Decimal DynamicCurrentPerMillisecond { get; init;} = 0; // resolution : 0.01 + public Decimal DcLinkControlMode { get; init;} = 0; // Parameter aktiviert/deaktiviert "DC link voltage droop mode" + public Decimal ReferenceVoltage { get; init;} = 800; // resolution : 0.1 + public Decimal UpperVoltageWindow { get; init;} = 40; // resolution : 0.1 + public Decimal LowerVoltageWindow { get; init;} = 40; // resolution : 0.1 + public Decimal VoltageDeadBand { get; init;} = 0; // resolution : 0.1 + + private static readonly TimeSpan DefaultCommunicationTimeOut = TimeSpan.FromMinutes(10); +}