Iso and leackage error messages added

This commit is contained in:
Matthias Heisig
2024-09-10 16:54:17 +02:00
parent d9f39953a0
commit 39a02352f6
6 changed files with 461 additions and 259 deletions

View File

@@ -305,6 +305,9 @@ VAR_GLOBAL PERSISTENT
// All modules in string not ready timeout
timStringReadyTimeout : TIME := T#3M;
// Timeout for isolation error
timIsoErrorTimeout : TIME := T#20s;
// Dummy to deactivate functions
xDummy : BOOL := FALSE;

File diff suppressed because one or more lines are too long

View File

@@ -105,6 +105,15 @@ VAR
// Units out of balance alarm
_fbUnitsOutOfBalanceAlarm : FB_TcAlarm;
// Leackage tank alarm
_fbLeackageTankAlarm : FB_TcAlarm;
// Leackage Segment 1/2 alarm
_fbLeackageSegment12Alarm : FB_TcAlarm;
// Leackage Segemnt 3/4 alarm
_fbLeackageSegment34Alarm : FB_TcAlarm;
// Connection lost alarm
_fbConnLostAlarm : FB_TcAlarm;
@@ -156,6 +165,54 @@ IF _fbConnLostAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfirm
END_IF
// ===============================
// Leackage tank error (1 - OK; 0 - Leackage)
// ===============================
IF (NOT xLeakageTank) AND (NOT _fbLeackageTankAlarm.bRaised) AND xReleaseErrors THEN
_fbLeackageTankAlarm.Raise(0);
END_IF
IF xLeakageTank AND _fbLeackageTankAlarm.bRaised THEN
_fbLeackageTankAlarm.Clear(0, FALSE);
END_IF
IF _fbLeackageTankAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND xConfirmAlarms THEN
_fbLeackageTankAlarm.Confirm(0);
END_IF
// ===============================
// Leackage Unit 1/2 error (1 - OK; 0 - Leackage)
// ===============================
IF (NOT xLeakageSegments12) AND (NOT _fbLeackageSegment12Alarm.bRaised) AND xReleaseErrors THEN
_fbLeackageSegment12Alarm.Raise(0);
END_IF
IF xLeakageSegments12 AND _fbLeackageSegment12Alarm.bRaised THEN
_fbLeackageSegment12Alarm.Clear(0, FALSE);
END_IF
IF _fbLeackageSegment12Alarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND xConfirmAlarms THEN
_fbLeackageSegment12Alarm.Confirm(0);
END_IF
// ===============================
// Leackage Unit 3/4 error (1 - OK; 0 - Leackage)
// ===============================
IF (NOT xLeakageSegments34) AND (NOT _fbLeackageSegment34Alarm.bRaised) AND xReleaseErrors THEN
_fbLeackageSegment34Alarm.Raise(0);
END_IF
IF xLeakageSegments34 AND _fbLeackageSegment34Alarm.bRaised THEN
_fbLeackageSegment34Alarm.Clear(0, FALSE);
END_IF
IF _fbLeackageSegment34Alarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND xConfirmAlarms THEN
_fbLeackageSegment34Alarm.Confirm(0);
END_IF
// ===============================
// Unit 1
// ===============================
@@ -481,7 +538,14 @@ _fbConnLostAlarm.ipArguments.Clear().AddString(_sName);
// Create leakage alarm messages
]]></ST>
_fbLeackageTankAlarm.CreateEx(stEventEntry := TC_EVENTS.General.LeakageTank, bWithConfirmation := TRUE, 0);
_fbLeackageTankAlarm.ipArguments.Clear().AddString(_sName);
_fbLeackageSegment12Alarm.CreateEx(stEventEntry := TC_EVENTS.General.LeakageDS12, bWithConfirmation := TRUE, 0);
_fbLeackageSegment12Alarm.ipArguments.Clear().AddString(_sName);
_fbLeackageSegment34Alarm.CreateEx(stEventEntry := TC_EVENTS.General.LeakageDS34, bWithConfirmation := TRUE, 0);
_fbLeackageSegment34Alarm.ipArguments.Clear().AddString(_sName);]]></ST>
</Implementation>
</Method>
<Property Name="Name" Id="{bc8bc990-5071-47c9-a928-a129c60c6f41}">
@@ -511,7 +575,12 @@ _fbUnit4.Name := CONCAT(_sName, ' - Unit 4');
_fbUnitsOutOfBalanceAlarm.ipArguments.Clear().AddString(_sName);
// Create connection lost alarm
_fbConnLostAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbConnLostAlarm.ipArguments.Clear().AddString(_sName);
// Create leackage alarm messages
_fbLeackageTankAlarm.ipArguments.Clear().AddString(_sName);
_fbLeackageSegment12Alarm.ipArguments.Clear().AddString(_sName);
_fbLeackageSegment34Alarm.ipArguments.Clear().AddString(_sName);]]></ST>
</Implementation>
</Set>
</Property>
@@ -528,6 +597,21 @@ _fbConnLostAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="349" Count="0" />
<LineId Id="348" Count="0" />
<LineId Id="350" Count="1" />
<LineId Id="354" Count="3" />
<LineId Id="353" Count="0" />
<LineId Id="359" Count="0" />
<LineId Id="361" Count="1" />
<LineId Id="360" Count="0" />
<LineId Id="358" Count="0" />
<LineId Id="363" Count="1" />
<LineId Id="366" Count="0" />
<LineId Id="365" Count="0" />
<LineId Id="367" Count="1" />
<LineId Id="384" Count="0" />
<LineId Id="370" Count="13" />
<LineId Id="369" Count="0" />
<LineId Id="386" Count="14" />
<LineId Id="385" Count="0" />
<LineId Id="12" Count="275" />
<LineId Id="317" Count="2" />
<LineId Id="326" Count="0" />
@@ -551,6 +635,11 @@ _fbConnLostAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="19" Count="1" />
<LineId Id="17" Count="0" />
<LineId Id="2" Count="0" />
<LineId Id="23" Count="0" />
<LineId Id="25" Count="1" />
<LineId Id="24" Count="0" />
<LineId Id="28" Count="1" />
<LineId Id="27" Count="0" />
</LineIds>
<LineIds Name="FB_Module.Name.Get">
<LineId Id="2" Count="0" />
@@ -561,6 +650,9 @@ _fbConnLostAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="14" Count="0" />
<LineId Id="13" Count="0" />
<LineId Id="12" Count="0" />
<LineId Id="16" Count="0" />
<LineId Id="15" Count="0" />
<LineId Id="17" Count="2" />
</LineIds>
</POU>
</TcPlcObject>

View File

@@ -55,6 +55,9 @@ VAR_INPUT
sInverterIP : STRING;
xECStateSCS AT %I* : UINT;
xIsoErrorL1 AT %I* : BOOL;
xIsoErrorL2 AT %I* : BOOL;
END_VAR
VAR_OUTPUT
// Current string voltage
@@ -134,6 +137,9 @@ VAR
// Connection to SCS lost
_fbSCSConnLost : FB_TcAlarm;
// Isolatio alarm
_fbIsolationAlarm : FB_TcAlarm;
// Shutdown discharge stopped messages
_fbSDDCLevel : FB_TcMessage;
_fbSDUnitThreshold : FB_TcMessage;
@@ -190,6 +196,11 @@ VAR
// Start balancing internal signal
_xStartBalancing : BOOL;
_xIsoError : BOOL;
// Iso error timeout
_fbTONIsoError : TON;
// Internal SOC
_rSOC : REAL;
@@ -237,6 +248,31 @@ IF xRepairSwitchOk AND _fbDCMainSwitchNotClosed.bRaised THEN
END_IF
// ===============================
// ISO Error handling
// ===============================
// Mute iso error when inverter is enabled
_xIsoError := ((NOT xIsoErrorL1) OR (NOT xIsoErrorL2)) AND (NOT _fbInverter.xActive);
_fbTONIsoError(IN := _xIsoError, PT := GVL_CONFIG.timIsoErrorTimeout);
// _fbInverter
IF _fbTONIsoError.Q AND (NOT _fbIsolationAlarm.bRaised) AND xReleaseErrors THEN
_fbIsolationAlarm.Raise(0);
END_IF
IF (NOT _fbTONIsoError.Q) AND _fbIsolationAlarm.bRaised THEN
_fbIsolationAlarm.Clear(0, FALSE);
END_IF
IF _fbIsolationAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND xConfirmAlarms THEN
_fbIsolationAlarm.Confirm(0);
END_IF
IF _fbTONIsoError.Q THEN
xError := TRUE;
END_IF
// ===============================
// DC current measurement
// ===============================
@@ -813,7 +849,11 @@ _fbSDDCLevel.CreateEx(TC_EVENTS.BMSEvents.SDDCVoltage, 0);
_fbSDDCLevel.ipArguments.Clear().AddString(_sName);
_fbSDUnitThreshold.CreateEx(TC_EVENTS.BMSEvents.SDUnitThreshhold, 0);
_fbSDUnitThreshold.ipArguments.Clear().AddString(_sName);]]></ST>
_fbSDUnitThreshold.ipArguments.Clear().AddString(_sName);
// isolation alarm creation
_fbIsolationAlarm.CreateEx(stEventEntry := TC_EVENTS.General.IsoError, bWithConfirmation := TRUE, 0);
_fbIsolationAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
</Implementation>
</Method>
<Property Name="Name" Id="{19fcb6d4-fd4b-49f9-9791-1e4c931b9e69}">
@@ -858,7 +898,27 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="611" Count="0" />
<LineId Id="610" Count="0" />
<LineId Id="612" Count="1" />
<LineId Id="11" Count="248" />
<LineId Id="11" Count="10" />
<LineId Id="638" Count="3" />
<LineId Id="22" Count="0" />
<LineId Id="664" Count="0" />
<LineId Id="662" Count="0" />
<LineId Id="665" Count="0" />
<LineId Id="663" Count="0" />
<LineId Id="661" Count="0" />
<LineId Id="643" Count="0" />
<LineId Id="646" Count="1" />
<LineId Id="649" Count="0" />
<LineId Id="648" Count="0" />
<LineId Id="650" Count="1" />
<LineId Id="653" Count="0" />
<LineId Id="652" Count="0" />
<LineId Id="654" Count="1" />
<LineId Id="658" Count="0" />
<LineId Id="657" Count="0" />
<LineId Id="659" Count="1" />
<LineId Id="642" Count="0" />
<LineId Id="23" Count="236" />
<LineId Id="623" Count="0" />
<LineId Id="260" Count="6" />
<LineId Id="624" Count="0" />
@@ -906,6 +966,9 @@ _fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
<LineId Id="34" Count="0" />
<LineId Id="25" Count="5" />
<LineId Id="2" Count="0" />
<LineId Id="37" Count="0" />
<LineId Id="36" Count="0" />
<LineId Id="38" Count="1" />
</LineIds>
<LineIds Name="FB_String.Name.Get">
<LineId Id="1" Count="0" />