Implemented fixes and improvements during comissioning
- New Balancing mode - HMI Interface for Inverterdata implemented - Adjusted GVL_CONFIG values - Read inverter data even when inverter is off - Added OPC UA settings to inverter data hmi interface - Added multisettings to safety project for strings
This commit is contained in:
@@ -13,10 +13,10 @@ VAR_GLOBAL PERSISTENT
|
||||
(
|
||||
rTargetMin := 0.0,
|
||||
rTargetMax := 100.0,
|
||||
timRampUpTime := T#5S,
|
||||
timRampDownTime := T#5S,
|
||||
stAnalogInputConfig := (iAIMax := 32767, iAIMin := 0, rPVMax := 100, rPVMin := 0, sUnit := '%'),
|
||||
stAnalogOutputConfig := (iAIMax := 32767, iAIMin := 0, rPVMax := 100, rPVMin := 0),
|
||||
timRampUpTime := T#10S,
|
||||
timRampDownTime := T#10S,
|
||||
stAnalogInputConfig := (iAIMax := 108, iAIMin := 0, rPVMax := 100, rPVMin := 0, sUnit := '%'),
|
||||
stAnalogOutputConfig := (iAIMax := 29490, iAIMin := 0, rPVMax := 100, rPVMin := 4.807),
|
||||
xHasAnalogFeedback := TRUE,
|
||||
xHasMCBFeedback := TRUE,
|
||||
xHasRepairSwitchFeedback := FALSE
|
||||
@@ -29,8 +29,8 @@ VAR_GLOBAL PERSISTENT
|
||||
rTargetMax := 100.0,
|
||||
timRampUpTime := T#5S,
|
||||
timRampDownTime := T#5S,
|
||||
stAnalogInputConfig := (iAIMax := 32767, iAIMin := 0, rPVMax := 100, rPVMin := 0, sUnit := '%'),
|
||||
stAnalogOutputConfig := (iAIMax := 32767, iAIMin := 0, rPVMax := 100, rPVMin := 0),
|
||||
stAnalogInputConfig := (iAIMax := 108, iAIMin := 0, rPVMax := 100, rPVMin := 0, sUnit := '%'),
|
||||
stAnalogOutputConfig := (iAIMax := 29490, iAIMin := 0, rPVMax := 100, rPVMin := 4.807),
|
||||
xHasAnalogFeedback := TRUE,
|
||||
xHasMCBFeedback := TRUE,
|
||||
xHasRepairSwitchFeedback := FALSE
|
||||
@@ -44,103 +44,103 @@ VAR_GLOBAL PERSISTENT
|
||||
|
||||
// Pressure posolyt segment inlet
|
||||
stConfigPosolytPressureSegmentInlet := (iAIMax := 32767, iAIMin := 0, rPVMax := 2000, rPVMin := 0, sUnit := 'mbar'),
|
||||
stEWLPosolytPressureSegmentInlet := (rErrorMin := 170, rWarningMin := 200, rWarningMax := 600, rErrorMax := 700),
|
||||
stEWLPosolytPressureSegmentInlet := (rErrorMin := 200, rWarningMin := 250, rWarningMax := 550, rErrorMax := 600),
|
||||
stEWDPosolytPressureSegmentInlet :=
|
||||
(
|
||||
timHardwareSignalLevelOn := T#0S,
|
||||
timHardwareSignalLevelOff := T#5S,
|
||||
timErrorLowOn := T#2S,
|
||||
timErrorLowOn := T#1S,
|
||||
timErrorLowOff := T#5S,
|
||||
timWarningLowOn := T#2S,
|
||||
timWarningLowOn := T#1S,
|
||||
timWarningLowOff := T#5S,
|
||||
timWarningHighOn := T#2S,
|
||||
timWarningHighOn := T#1S,
|
||||
timWarningHighOff := T#5S,
|
||||
timErrorHighOn := T#2S,
|
||||
timErrorHighOn := T#1S,
|
||||
timErrorHighOff := T#5S
|
||||
),
|
||||
|
||||
// Pressure negolyt segment inlet
|
||||
stConfigNegolytPressureSegmentInlet := (iAIMax := 32767, iAIMin := 0, rPVMax := 2000, rPVMin := 0, sUnit := 'mbar'),
|
||||
stEWLNegolytPressureSegmentInlet := (rErrorMin := 170, rWarningMin := 200, rWarningMax := 600, rErrorMax := 700),
|
||||
stEWLNegolytPressureSegmentInlet := (rErrorMin := 200, rWarningMin := 250, rWarningMax := 550, rErrorMax := 600),
|
||||
stEWDNegolytPressureSegmentInlet :=
|
||||
(
|
||||
timHardwareSignalLevelOn := T#0S,
|
||||
timHardwareSignalLevelOff := T#5S,
|
||||
timErrorLowOn := T#2S,
|
||||
timErrorLowOn := T#1S,
|
||||
timErrorLowOff := T#5S,
|
||||
timWarningLowOn := T#2S,
|
||||
timWarningLowOn := T#1S,
|
||||
timWarningLowOff := T#5S,
|
||||
timWarningHighOn := T#2S,
|
||||
timWarningHighOn := T#1S,
|
||||
timWarningHighOff := T#5S,
|
||||
timErrorHighOn := T#2S,
|
||||
timErrorHighOn := T#1S,
|
||||
timErrorHighOff := T#5S
|
||||
),
|
||||
|
||||
// Pressure posolyt tank inlet
|
||||
stConfigPosolytPressureTankInlet := (iAIMax := 32767, iAIMin := 0, rPVMax := 2000, rPVMin := 0, sUnit := 'mbar'),
|
||||
stEWLPosolytPressureTankInlet := (rErrorMin := -100, rWarningMin := -50, rWarningMax := 100, rErrorMax := 120),
|
||||
stEWLPosolytPressureTankInlet := (rErrorMin := -20, rWarningMin := -10, rWarningMax := 15, rErrorMax := 25),
|
||||
stEWDPosolytPressureTankInlet :=
|
||||
(
|
||||
timHardwareSignalLevelOn := T#0S,
|
||||
timHardwareSignalLevelOff := T#5S,
|
||||
timErrorLowOn := T#2S,
|
||||
timErrorLowOn := T#1S,
|
||||
timErrorLowOff := T#5S,
|
||||
timWarningLowOn := T#2S,
|
||||
timWarningLowOn := T#1S,
|
||||
timWarningLowOff := T#5S,
|
||||
timWarningHighOn := T#2S,
|
||||
timWarningHighOn := T#1S,
|
||||
timWarningHighOff := T#5S,
|
||||
timErrorHighOn := T#2S,
|
||||
timErrorHighOn := T#1S,
|
||||
timErrorHighOff := T#5S
|
||||
),
|
||||
|
||||
// Pressure negolyt tank inlet
|
||||
stConfigNegolytPressureTankInlet := (iAIMax := 32767, iAIMin := 0, rPVMax := 2000, rPVMin := 0, sUnit := 'mbar'),
|
||||
stEWLNegolytPressureTankInlet := (rErrorMin := -100, rWarningMin := -50, rWarningMax := 100, rErrorMax := 120),
|
||||
stEWLNegolytPressureTankInlet := (rErrorMin := -20, rWarningMin := -10, rWarningMax := 15, rErrorMax := 25),
|
||||
stEWDNegolytPressureTankInlet :=
|
||||
(
|
||||
timHardwareSignalLevelOn := T#0S,
|
||||
timHardwareSignalLevelOff := T#5S,
|
||||
timErrorLowOn := T#2S,
|
||||
timErrorLowOn := T#1S,
|
||||
timErrorLowOff := T#5S,
|
||||
timWarningLowOn := T#2S,
|
||||
timWarningLowOn := T#1S,
|
||||
timWarningLowOff := T#5S,
|
||||
timWarningHighOn := T#2S,
|
||||
timWarningHighOn := T#1S,
|
||||
timWarningHighOff := T#5S,
|
||||
timErrorHighOn := T#2S,
|
||||
timErrorHighOn := T#1S,
|
||||
timErrorHighOff := T#5S
|
||||
),
|
||||
|
||||
// Temperature sensor posolyt tank inlet
|
||||
stConfigPosolytTempTankInlet := (iAIMax := 32767, iAIMin := -32768, rPVMax := 3276.7, rPVMin := -3276.8, sUnit := '°C'),
|
||||
stEWLPosolytTempTankInlet := (rErrorMin := -10, rWarningMin := -5, rWarningMax := 50, rErrorMax := 60),
|
||||
stEWLPosolytTempTankInlet := (rErrorMin := 10, rWarningMin := 15, rWarningMax := 50, rErrorMax := 60),
|
||||
stEWDPosolytTempTankInlet :=
|
||||
(
|
||||
timHardwareSignalLevelOn := T#0S,
|
||||
timHardwareSignalLevelOff := T#5S,
|
||||
timErrorLowOn := T#2S,
|
||||
timErrorLowOn := T#1S,
|
||||
timErrorLowOff := T#5S,
|
||||
timWarningLowOn := T#2S,
|
||||
timWarningLowOn := T#1S,
|
||||
timWarningLowOff := T#5S,
|
||||
timWarningHighOn := T#2S,
|
||||
timWarningHighOn := T#1S,
|
||||
timWarningHighOff := T#5S,
|
||||
timErrorHighOn := T#2S,
|
||||
timErrorHighOn := T#1S,
|
||||
timErrorHighOff := T#5S
|
||||
),
|
||||
|
||||
// Temperature sensor negolyt tank inlet
|
||||
stConfigNegolytTempTankInlet := (iAIMax := 32767, iAIMin := -32768, rPVMax := 3276.7, rPVMin := -3276.8, sUnit := '°C'),
|
||||
stEWLNegolytTempTankInlet := (rErrorMin := -10, rWarningMin := -5, rWarningMax := 50, rErrorMax := 60),
|
||||
stEWLNegolytTempTankInlet := (rErrorMin := 15, rWarningMin := 15, rWarningMax := 50, rErrorMax := 60),
|
||||
stEWDNegolytTempTankInlet :=
|
||||
(
|
||||
timHardwareSignalLevelOn := T#0S,
|
||||
timHardwareSignalLevelOff := T#5S,
|
||||
timErrorLowOn := T#2S,
|
||||
timErrorLowOn := T#1S,
|
||||
timErrorLowOff := T#5S,
|
||||
timWarningLowOn := T#2S,
|
||||
timWarningLowOn := T#1S,
|
||||
timWarningLowOff := T#5S,
|
||||
timWarningHighOn := T#2S,
|
||||
timWarningHighOn := T#1S,
|
||||
timWarningHighOff := T#5S,
|
||||
timErrorHighOn := T#2S,
|
||||
timErrorHighOn := T#1S,
|
||||
timErrorHighOff := T#5S
|
||||
),
|
||||
|
||||
@@ -149,24 +149,31 @@ VAR_GLOBAL PERSISTENT
|
||||
// Index 0x80n0:02 "Presentation" = Signed(0) -> Resolution 1/10°C
|
||||
// Index 0x80n0:19 "RTD Element" = PT100(0)
|
||||
stConfigVoltageSegment := (iAIMax := 32767, iAIMin := 0, rPVMax := 150, rPVMin := 0, sUnit := 'V'),
|
||||
stEWLVoltageSegment := (rErrorMin := 50, rWarningMin := 55, rWarningMax := 75, rErrorMax := 79),
|
||||
stEWLVoltageSegment := (rErrorMin := 50, rWarningMin := 55, rWarningMax := 77, rErrorMax := 80),
|
||||
stEWDVoltageSegment :=
|
||||
(
|
||||
timHardwareSignalLevelOn := T#0S,
|
||||
timHardwareSignalLevelOff := T#5S,
|
||||
timErrorLowOn := T#2S,
|
||||
timErrorLowOn := T#1S,
|
||||
timErrorLowOff := T#5S,
|
||||
timWarningLowOn := T#2S,
|
||||
timWarningLowOn := T#1S,
|
||||
timWarningLowOff := T#5S,
|
||||
timWarningHighOn := T#2S,
|
||||
timWarningHighOn := T#1S,
|
||||
timWarningHighOff := T#5S,
|
||||
timErrorHighOn := T#2S,
|
||||
timErrorHighOn := T#1S,
|
||||
timErrorHighOff := T#5S
|
||||
),
|
||||
|
||||
rMaxDeltaPSegmentInlet := 100.0
|
||||
rMaxDeltaPSegmentInlet := 50.0
|
||||
);
|
||||
|
||||
// ===========================
|
||||
// SCS Current measurement settings
|
||||
// ===========================
|
||||
stConfigSCSCurrent : ST_ANALOG_IO_CONFIG := (iAIMax := 32767, iAIMin := 0, rPVMax := 200, rPVMin := 0, sUnit := 'A');
|
||||
stEWLSCSCurrent : ST_ANALOG_EW_LEVELS;
|
||||
stEWDSCSCurrent : ST_ANALOG_EW_DELAYS;
|
||||
|
||||
// ===========================
|
||||
// Part shortage workaround
|
||||
// ===========================
|
||||
@@ -197,6 +204,33 @@ VAR_GLOBAL PERSISTENT
|
||||
xUnit4Is1500V := TRUE
|
||||
)
|
||||
);
|
||||
|
||||
stString2VoltageConfig : ST_STRING_VOLT_CONFIG :=
|
||||
(
|
||||
stModule1VoltConfig :=
|
||||
(
|
||||
xUnit1Is1500V := FALSE,
|
||||
xUnit2Is1500V := TRUE,
|
||||
xUnit3Is1500V := TRUE,
|
||||
xUnit4Is1500V := TRUE
|
||||
),
|
||||
|
||||
stModule2VoltConfig :=
|
||||
(
|
||||
xUnit1Is1500V := FALSE,
|
||||
xUnit2Is1500V := TRUE,
|
||||
xUnit3Is1500V := TRUE,
|
||||
xUnit4Is1500V := TRUE
|
||||
),
|
||||
|
||||
stModule3VoltConfig :=
|
||||
(
|
||||
xUnit1Is1500V := FALSE,
|
||||
xUnit2Is1500V := TRUE,
|
||||
xUnit3Is1500V := TRUE,
|
||||
xUnit4Is1500V := TRUE
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// ===========================
|
||||
@@ -204,8 +238,8 @@ VAR_GLOBAL PERSISTENT
|
||||
// ===========================
|
||||
|
||||
// Pump on power (%)
|
||||
rPumpPosolytOnPower : REAL := 70.0;
|
||||
rPumpNegolytOnPower : REAL := 70.0;
|
||||
rPumpPosolytOnPower : REAL := 65.0;
|
||||
rPumpNegolytOnPower : REAL := 65.0;
|
||||
|
||||
// Pump discharge segment without inverter power (%)
|
||||
rPumpPosolytDisChrgPower : REAL := 35.0;
|
||||
@@ -215,18 +249,18 @@ VAR_GLOBAL PERSISTENT
|
||||
rPumpshutoffThreshold : REAL := 15.0;
|
||||
|
||||
// Minimum unit voltage required for inverter startup (Volt)
|
||||
rMinimumUnitVoltage : REAL := 50.0;
|
||||
rMinimumUnitVoltage : REAL := 55.0;
|
||||
|
||||
// Delta value to minimum unit voltage for shutdown discharge (Volt)
|
||||
rDeltaUnitVoltageShutdownDischarge : REAL := 5.0;
|
||||
|
||||
// Maximum absolute voltage difference
|
||||
// between units in the same module
|
||||
rMaxAbsDiffVoltageUnitsOnModule : REAL := 5.0;
|
||||
rMaxAbsDiffVoltageUnitsOnModule : REAL := 10.0;
|
||||
|
||||
// Maximum absolute voltage difference
|
||||
// between Modules (Volt)
|
||||
rMaxAbsDiffVoltageModulesInString : REAL := 10.0;
|
||||
rMaxAbsDiffVoltageModulesInString : REAL := 20.0;
|
||||
|
||||
// Minimum absolute power command to enable battery (Watt)
|
||||
diMinimumAbsPowerForEnable : DINT := 100;
|
||||
@@ -239,26 +273,34 @@ VAR_GLOBAL PERSISTENT
|
||||
// 60.000 W -> 5.000 W per Unit
|
||||
diMaxStringDischargePower : DINT := 60_000;
|
||||
|
||||
// Inverter ip address
|
||||
sInverterIp : STRING := '192.168.42.10';
|
||||
// Inverter ip address for string 1
|
||||
sInverterIpString1 : STRING := '192.168.42.10';
|
||||
|
||||
// Inverter ip address for string 2
|
||||
sInverterIpString2 : STRING := '192.168.42.20';
|
||||
|
||||
// Absolute shutdown discharge power (Watt)
|
||||
// 12.000 W -> 1.000 W per unit
|
||||
rAbsShutdownDischargePower : REAL := 12_000;
|
||||
rAbsShutdownDischargePower : REAL := 6_500;
|
||||
|
||||
// Allow inverter fast shutdown discharge
|
||||
xShutdownDischargeWithInverter : BOOL := FALSE;
|
||||
|
||||
// String fully charged voltage (Volt)
|
||||
// 960 V -> 80 V per Unit
|
||||
rStringFullyChargedVoltage : REAL := 960.0;
|
||||
rStringFullyChargedVoltage : REAL := 950.0;
|
||||
|
||||
// String empty voltage (Volt) (585V is needed for the inverter to start up -> 50V per Segment)
|
||||
// 600 V -> 50 V per Unit
|
||||
rStringEmptyVoltage : REAL := 600.0;
|
||||
// String empty voltage (Volt) (617V is needed for the inverter to start up -> 51.4V per Segment)
|
||||
rStringEmptyVoltage : REAL := 630.0;
|
||||
|
||||
// Unit wait startup time
|
||||
timUnitStartupTime : TIME := T#5S;
|
||||
timUnitStartupTime : TIME := T#1M;
|
||||
|
||||
// Unit balancing wait startup time
|
||||
timUnitBalancingStartupTime : TIME := T#3M;
|
||||
|
||||
// Dummy to deactivate functions
|
||||
xDummy : BOOL := FALSE;
|
||||
|
||||
END_VAR]]></Declaration>
|
||||
</GVL>
|
||||
|
||||
Reference in New Issue
Block a user