Linked all tank sensors in media cabinet

- Additional fixes for the hmi
This commit is contained in:
2026-03-10 18:03:28 +01:00
parent 218d815380
commit f4562af86f
24 changed files with 1859 additions and 288 deletions

View File

@@ -21,20 +21,31 @@ VAR
i_xFull AT %I* : BOOL;
i_xEmpty AT %I* : BOOL;
fbFillingValve : FB_Valve;
fbDrainValve : FB_Valve;
fbPumpValve : FB_Valve;
_fbWaterValve : FB_Valve('Water valve');
_fbFillingValve : FB_Valve('Filling valve');
_fbDrainValve : FB_Valve('Drain Valve');
_fbPumpValve : FB_Valve('Pump Valve');
_stValveConfig : ST_ValveConfig;
_wFillingValveSafetyIntlkUsed : T_INTERLOCK;
_wFillingValveSafetyIntlk : T_INTERLOCK;
_iState : INT;
_xFirstCycle : BOOL := TRUE;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Overfull is NC so true if ok
<ST><![CDATA[IF _xFirstCycle THEN
_xFirstCycle := FALSE;
stHMIInterface.stFillingValve.stInterlock.asSafetyINTLKName[0] := 'Tank overfull';
_wFillingValveSafetyIntlkUsed.0 := 1;
END_IF
// Overfull is NC so true if ok
_wFillingValveSafetyIntlk.0 := i_xOverfull;
fbFillingValve(
_fbFillingValve(
xReleaseErrors:= xReleaseErrors,
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
@@ -42,20 +53,60 @@ fbFillingValve(
wSafetyINTLKUsed:= _wFillingValveSafetyIntlkUsed,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stFillingValve);
_fbWaterValve(
xReleaseErrors:= xReleaseErrors,
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stDrainValve);
fbDrainValve(
_fbDrainValve(
xReleaseErrors:= xReleaseErrors,
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stDrainValve);
fbPumpValve(
_fbPumpValve(
xReleaseErrors:= xReleaseErrors,
stValveConfig:= _stValveConfig,
xReleaseManualMode:= xReleaseManualMode,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface:= stHMIInterface.stPumpValve);]]></ST>
stHMIInterface:= stHMIInterface.stPumpValve);
CASE _iState OF
// Idle
0:
// Start emptying tank
IF stHMIInterface.stEmptyButton.xRequest THEN
stHMIInterface.stEmptyButton.xRequest := FALSE;
_iState := 10;
END_IF
// Start filling tank with water
IF stHMIInterface.stFillButton.xRequest THEN
stHMIInterface.stFillButton.xRequest := FALSE;
_iState := 20;
END_IF
// Empty tank
10:
_fbDrainValve.xAutomaticOpen := TRUE;
IF (NOT i_xEmpty) THEN
_fbDrainValve.xAutomaticOpen := FALSE;
_iState := 0;
END_IF
// Fill tank with water
20:
IF xFull THEN
;
END_IF
END_CASE]]></ST>
</Implementation>
<Method Name="FB_Init" Id="{9c6d1842-9c2e-4437-b40f-941f77668ffe}">
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
@@ -70,10 +121,7 @@ END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[_stValveConfig.xHasOpenFeedback := FALSE;
_stValveConfig.xHasClosedFeedback := FALSE;
stHMIInterface.stFillingValve.stInterlock.asSafetyINTLKName[0] := 'Tank overfull';
_wFillingValveSafetyIntlkUsed.0 := 1;]]></ST>
_stValveConfig.xHasClosedFeedback := FALSE;]]></ST>
</Implementation>
</Method>
<Method Name="M_HandleHMIOutput" Id="{8939e00b-3459-4b5e-a4b3-7b489eec260a}">