Added inverter startup timeout to GVL_CONFIG and enabled inverter errors

This commit is contained in:
Matthias Heisig
2025-09-11 16:32:53 +02:00
parent 0d3369d54d
commit 8bd2e9a1ea
7 changed files with 400 additions and 388 deletions

View File

@@ -257,6 +257,8 @@ VAR_GLOBAL PERSISTENT
// Inverter ip address for string 2
sInverterIpString2 : STRING := '192.168.42.20';
timInverterStartupTimeout : TIME := T#2m;
// Absolute shutdown discharge power (Watt)
// 12.000 W -> 1.000 W per unit
rAbsShutdownDischargePower : REAL := 6_500;

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8">
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<POU Name="FB_Module" Id="{87be924f-018d-4c09-997b-f0c0054414cc}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Module
VAR_INPUT

View File

@@ -54,6 +54,8 @@ VAR_INPUT
// String inverter ip
sInverterIP : STRING;
timInverterStartupTimeout : TIME;
xECWcState AT %I* : BOOL;
xIsolationOKL1 AT %I* : BOOL;
@@ -191,7 +193,7 @@ VAR
_xEnableInverter : BOOL;
// Fault timer for inverter startup
_tonInverterStartupTimeout : TON := (PT := T#3M);
_tonInverterStartupTimeout : TON;
// Fault timer for inverter shutdown
_tonInverterShutdownError : TON := (PT := T#10S);
@@ -600,7 +602,7 @@ CASE _iState OF
END_IF
22: // Wait for inverter to be ready
_tonInverterStartupTimeout(IN := TRUE);
_tonInverterStartupTimeout(IN := TRUE, PT := timInverterStartupTimeout);
IF _fbInverter.xActive AND (NOT _fbInverter.xError) THEN
CASE eOperationMode OF
E_STRING_OPERATING_MODE.SAFETY_CHECK:

View File

@@ -433,6 +433,7 @@ _afbStrings[0](
xErrorShutdown := _xErrorShutdown,
xStartBalancing := _xStartBalancing,
sInverterIP := GVL_CONFIG.sInverterIpString1,
timInverterStartupTimeout := GVL_CONFIG.timInverterStartupTimeout,
rPowerInverter := _arPowerString[0],
xInSafetyCheckMode := _xInSafetyCheckMode,
stHMIInterface:= GVL_SCADA.stHMIInterface[0],
@@ -495,6 +496,7 @@ _afbStrings[1](
xErrorShutdown := _xErrorShutdown,
xStartBalancing := _xStartBalancing,
sInverterIP := GVL_CONFIG.sInverterIpString2,
timInverterStartupTimeout := GVL_CONFIG.timInverterStartupTimeout,
rPowerInverter := _arPowerString[1],
xInSafetyCheckMode := _xInSafetyCheckMode,
stHMIInterface:= GVL_SCADA.stHMIInterface[1],

View File

@@ -379,9 +379,11 @@ CASE _iState OF
_iState := 1001;
1001: // Error state, wait for reset
IF xReset AND (NOT xEnable) AND (NOT _xErrorInverter) AND (NOT _xErrorCyclicData) AND xHeartbeatOk THEN
//IF xReset AND (NOT xEnable) AND (NOT _xErrorInverter) AND (NOT _xErrorCyclicData) AND xHeartbeatOk THEN
IF xReset AND (NOT xEnable) AND (NOT _xErrorCyclicData) AND xHeartbeatOk THEN
_eRequestedState := E_KACO_PCU_REQUESTED_STATE.OFF;
xError := FALSE;
_xErrorInverter := FALSE;
_xFaultInverter := FALSE;
_xErrorCyclicDataLedge := FALSE;
_xHeartBeatNOK := FALSE;
@@ -773,8 +775,12 @@ ELSE
_xErrorInverter := FALSE;
END_IF
IF _eCurrentState = E_KACO_CURRENT_STATE.FAULT AND xReleasePower THEN
_xErrorInverter := TRUE;
IF _eCurrentState = E_KACO_CURRENT_STATE.FAULT THEN// AND xReleasePower THEN
IF (NOT xReleasePower) AND _stPCUState.ePCUError = E_KACO_PCU_ERROR.UNDER_VOLT THEN
_xErrorInverter := FALSE;
ELSE
_xErrorInverter := TRUE;
END_IF
END_IF
// evaluate modbus errors