Small changes after FAT and EMS Test

- Changed Modbus server config for EMS connectivity
- Changed some default EWL Limits
This commit is contained in:
Matthias Heisig
2025-06-13 16:37:14 +02:00
parent 6fe10cc58c
commit b6791f7951
8 changed files with 308 additions and 230 deletions

View File

@@ -87,7 +87,7 @@ VAR_GLOBAL PERSISTENT
// Pressure posolyt tank inlet
stConfigPosolytPressureTankInlet := (iAIMax := 32767, iAIMin := 0, rPVMax := 2000, rPVMin := 0, sUnit := 'mbar'),
stEWLPosolytPressureTankInlet := (rErrorMin := -20, rWarningMin := -10, rWarningMax := 15, rErrorMax := 25),
stEWLPosolytPressureTankInlet := (rErrorMin := -20, rWarningMin := -10, rWarningMax := 50, rErrorMax := 75),
stEWDPosolytPressureTankInlet :=
(
timHardwareSignalLevelOn := T#0S,
@@ -104,7 +104,7 @@ VAR_GLOBAL PERSISTENT
// Pressure negolyt tank inlet
stConfigNegolytPressureTankInlet := (iAIMax := 32767, iAIMin := 0, rPVMax := 2000, rPVMin := 0, sUnit := 'mbar'),
stEWLNegolytPressureTankInlet := (rErrorMin := -20, rWarningMin := -10, rWarningMax := 15, rErrorMax := 25),
stEWLNegolytPressureTankInlet := (rErrorMin := -20, rWarningMin := -10, rWarningMax := 50, rErrorMax := 75),
stEWDNegolytPressureTankInlet :=
(
timHardwareSignalLevelOn := T#0S,
@@ -121,7 +121,7 @@ VAR_GLOBAL PERSISTENT
// Temperature sensor posolyt tank inlet
stConfigPosolytTempTankInlet := (iAIMax := 32767, iAIMin := -32768, rPVMax := 3276.7, rPVMin := -3276.8, sUnit := '°C'),
stEWLPosolytTempTankInlet := (rErrorMin := 10, rWarningMin := 15, rWarningMax := 50, rErrorMax := 60),
stEWLPosolytTempTankInlet := (rErrorMin := 10, rWarningMin := 15, rWarningMax := 42, rErrorMax := 45),
stEWDPosolytTempTankInlet :=
(
timHardwareSignalLevelOn := T#0S,
@@ -138,7 +138,7 @@ VAR_GLOBAL PERSISTENT
// Temperature sensor negolyt tank inlet
stConfigNegolytTempTankInlet := (iAIMax := 32767, iAIMin := -32768, rPVMax := 3276.7, rPVMin := -3276.8, sUnit := '°C'),
stEWLNegolytTempTankInlet := (rErrorMin := 15, rWarningMin := 15, rWarningMax := 50, rErrorMax := 60),
stEWLNegolytTempTankInlet := (rErrorMin := 15, rWarningMin := 15, rWarningMax := 42, rErrorMax := 45),
stEWDNegolytTempTankInlet :=
(
timHardwareSignalLevelOn := T#0S,
@@ -158,7 +158,7 @@ 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 := 77, rErrorMax := 80),
stEWLVoltageSegment := (rErrorMin := 50, rWarningMin := 54, rWarningMax := 79, rErrorMax := 80),
stEWDVoltageSegment :=
(
timHardwareSignalLevelOn := T#0S,
@@ -195,10 +195,10 @@ VAR_GLOBAL PERSISTENT
rPumpNegolytOnPower : REAL := 70.0;
// Pump posolyt discharge segment without inverter power in %
rPumpPosolytDisChrgPower : REAL := 45.0;
rPumpPosolytDisChrgPower : REAL := 50.0;
// Pump posolyt discharge segment without inverter power in %
rPumpNegolytDisChrgPower : REAL := 45.0;
rPumpNegolytDisChrgPower : REAL := 50.0;
// Unit voltage pumps shutoff threshold (Volt)
rPumpshutoffThreshold : REAL := 15.0;
@@ -207,7 +207,7 @@ VAR_GLOBAL PERSISTENT
rMinimumUnitVoltage : REAL := 55.0;
// Maximum unit voltage for fully charged (Volt)
rMaximumUnitVoltage : REAL := 79.5;
rMaximumUnitVoltage : REAL := 78.5;
// Delta value to minimum unit voltage for shutdown discharge (Volt)
rDeltaUnitVoltageShutdownDischarge : REAL := 5.0;
@@ -225,11 +225,11 @@ VAR_GLOBAL PERSISTENT
// Maximum allowed charging power (Watt) per String
// 24.000 W -> 2.000 W per Unit
diMaxStringChargingPower : DINT := -50_000;
diMaxStringChargingPower : DINT := -48_000;
// Maximum allowed discharging power (Watt) per String
// 24.000 W -> 2.000 W per Unit
diMaxStringDischargePower : DINT := 50_000;
diMaxStringDischargePower : DINT := 48_000;
// Inverter ip address for string 1
sInverterIpString1 : STRING := '192.168.42.10';
@@ -252,7 +252,7 @@ VAR_GLOBAL PERSISTENT
rStringEmptyVoltage : REAL := 660.0;
// Unit wait startup time (was 1 minute, reduced because of Doppelhöcker-Test)
timUnitStartupTime : TIME := T#5S;
timUnitStartupTime : TIME := T#15S;
// Unit balancing wait startup time
timUnitBalancingStartupTime : TIME := T#3M;

File diff suppressed because one or more lines are too long

View File

@@ -549,6 +549,9 @@ CASE _iState OF
_tonErrorDCCBNotClosed.IN := FALSE;
xError := TRUE;
xReady := FALSE;
IF (NOT _fbDCMainSwitchNotClosed.bRaised) THEN
_fbDCMainSwitchNotClosed.Raise(0);
END_IF
_iState := 1000;
END_IF
@@ -770,6 +773,7 @@ CASE _iState OF
IF (NOT xEnable) AND (NOT _xErrorInternal) THEN
xError := FALSE;
_xReleaseSafetyIntlkErrors := FALSE;
ClearAlarms();
//eStatus := E_COMPONENT_STATUS.OFF;
_iState := 0;
END_IF
@@ -843,6 +847,13 @@ stHMIInterface.eStatus := eStatus;
// Reset Safety
xResetSafetyDCCB := xResetSafety;]]></ST>
</Implementation>
<Action Name="ClearAlarms" Id="{541a307f-e5d8-4588-8fd3-6f4bdf6a71dd}">
<Implementation>
<ST><![CDATA[IF _fbDCMainSwitchNotClosed.bRaised THEN
_fbDCMainSwitchNotClosed.Clear(0, FALSE);
END_IF]]></ST>
</Implementation>
</Action>
<Method Name="FB_init" Id="{9e8494eb-1b40-4be9-91c8-810ecbdf7f0c}">
<Declaration><![CDATA[METHOD FB_init : BOOL
VAR_INPUT

View File

@@ -156,6 +156,8 @@ VAR
_rMinCurrentInverterDCVoltage : REAL;
_fbModbusRead : FB_MBReadRegs;
// _fbModbusWrite : FB_MBWriteSingleReg;
// _fbModbusWriteMult : FB_MBWriteRegs;
//_wLength : WORD := 49;
xDebugTest : BOOL;
_wDebug1 : WORD;
@@ -172,12 +174,58 @@ VAR
_rPowerDH : REAL;
_fbTONDHCycleTime : TON := (PT := T#15M);
//_uiTest : UINT := 1;
//_diTest : DINT := 123;
//_fbKaco : FB_PowerSupplyKaco('Kaco');
//_xEnableKaco : BOOL;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[IF _xFirstCycle THEN
<ST><![CDATA[(*
IF xDebugTest THEN
(*
_fbModbusWrite(
sIPAddr:= '127.0.0.1',
nTCPPort:= 502,
nUnitID:= 16#FF,
nMBAddr:= 13004,
nValue:= 1,
bExecute:= TRUE,
tTimeout:= T#10S,
bBusy=> ,
bError=> ,
nErrId=> );
IF (NOT _fbModbusWrite.bBusy) THEN
xDebugTest := FALSE;
_fbModbusWrite(bExecute := FALSE);
END_IF
*)
_fbModbusWriteMult(
sIPAddr:= '127.0.0.1',
nTCPPort:= 502,
nUnitID:= 16#FF,
nQuantity:= 2,
nMBAddr:= 12000,
cbLength:= SIZEOF(_diTest),
pSrcAddr:= ADR(_diTest),
bExecute:= TRUE,
tTimeout:= T#10S,
bBusy=> ,
bError=> ,
nErrId=> );
IF (NOT _fbModbusWriteMult.bBusy) THEN
xDebugTest := FALSE;
_fbModbusWriteMult(bExecute := FALSE);
END_IF
END_IF
*)
IF _xFirstCycle THEN
_xFirstCycle := FALSE;
_xGetPowerMeterData := TRUE;
@@ -217,6 +265,7 @@ IF GVL_MODBUS.stBMSErrorReg.wConfirmAlarms > 0 THEN
_xConfirmAlarms := TRUE;
END_IF
// Ack alarms from hardware button
_fbRTrigHardwareAck(CLK := _xHarwareResetButton);
IF _fbRTrigHardwareAck.Q THEN