Added automatic filling with water in media cabinet
- Tanks in media cabinet can now automatically be filled with water via HMI
This commit is contained in:
@@ -31,6 +31,9 @@ VAR
|
||||
_wFillingValveSafetyIntlkUsed : T_INTERLOCK;
|
||||
_wFillingValveSafetyIntlk : T_INTERLOCK;
|
||||
|
||||
_xStartEmptyTank : BOOL;
|
||||
_xStartFillTankWater : BOOL;
|
||||
|
||||
_iState : INT;
|
||||
|
||||
_xFirstCycle : BOOL := TRUE;
|
||||
@@ -43,6 +46,8 @@ END_VAR
|
||||
_wFillingValveSafetyIntlkUsed.0 := 1;
|
||||
END_IF
|
||||
|
||||
M_HandleHMIInput();
|
||||
|
||||
// Overfull is NC so true if ok
|
||||
_wFillingValveSafetyIntlk.0 := i_xOverfull;
|
||||
_fbFillingValve(
|
||||
@@ -78,15 +83,13 @@ _fbPumpValve(
|
||||
CASE _iState OF
|
||||
// Idle
|
||||
0:
|
||||
// Start emptying tank
|
||||
IF stHMIInterface.stEmptyButton.xRequest THEN
|
||||
stHMIInterface.stEmptyButton.xRequest := FALSE;
|
||||
IF _xStartEmptyTank THEN
|
||||
_xStartEmptyTank := FALSE;
|
||||
_iState := 10;
|
||||
END_IF
|
||||
|
||||
// Start filling tank with water
|
||||
IF stHMIInterface.stFillButton.xRequest THEN
|
||||
stHMIInterface.stFillButton.xRequest := FALSE;
|
||||
IF _xStartFillTankWater THEN
|
||||
_xStartFillTankWater := FALSE;
|
||||
_iState := 20;
|
||||
END_IF
|
||||
|
||||
@@ -102,11 +105,22 @@ CASE _iState OF
|
||||
|
||||
// Fill tank with water
|
||||
20:
|
||||
_fbWaterValve.xAutomaticOpen := TRUE;
|
||||
|
||||
IF xFull THEN
|
||||
;
|
||||
_fbWaterValve.xAutomaticOpen := FALSE;
|
||||
|
||||
_iState := 0;
|
||||
END_IF
|
||||
END_CASE]]></ST>
|
||||
END_CASE
|
||||
|
||||
M_HandleHMIOutput();
|
||||
|
||||
// Copy to output buffer
|
||||
xOverfull := (NOT i_xOverfull);
|
||||
xFull := i_xFull;
|
||||
xEmpty := (NOT i_xEmpty);
|
||||
]]></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.
|
||||
@@ -124,6 +138,29 @@ END_VAR
|
||||
_stValveConfig.xHasClosedFeedback := FALSE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="M_HandleHMIInput" Id="{ff85cf86-15cf-4e14-ac8d-98aa206cdc7d}">
|
||||
<Declaration><![CDATA[METHOD PRIVATE M_HandleHMIInput : BOOL
|
||||
VAR_INPUT
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Start emptying tank
|
||||
IF stHMIInterface.stEmptyButton.xRequest THEN
|
||||
stHMIInterface.stEmptyButton.xRequest := FALSE;
|
||||
IF stHMIInterface.stEmptyButton.xRelease THEN
|
||||
_xStartEmptyTank := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
// Start filling tank with water
|
||||
IF stHMIInterface.stFillButton.xRequest THEN
|
||||
stHMIInterface.stFillButton.xRequest := FALSE;
|
||||
IF stHMIInterface.stFillButton.xRelease THEN
|
||||
_xStartFillTankWater := TRUE;
|
||||
END_IF
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="M_HandleHMIOutput" Id="{8939e00b-3459-4b5e-a4b3-7b489eec260a}">
|
||||
<Declaration><![CDATA[METHOD PRIVATE M_HandleHMIOutput : BOOL
|
||||
VAR_INPUT
|
||||
@@ -133,7 +170,22 @@ END_VAR
|
||||
<ST><![CDATA[// Overfull sensor is NC
|
||||
stHMIInterface.xOverfull := (NOT i_xOverfull);
|
||||
stHMIInterface.xFull := i_xFull;
|
||||
stHMIInterface.xEmpty := i_xEmpty;]]></ST>
|
||||
stHMIInterface.xEmpty := (NOT i_xEmpty);
|
||||
|
||||
stHMIInterface.stFillButton.xRelease := i_xOverfull AND (NOT i_xFull);
|
||||
stHMIInterface.stEmptyButton.xRelease := i_xEmpty;
|
||||
|
||||
IF _fbWaterValve.IsOpen THEN
|
||||
stHMIInterface.stFillButton.eFeedback := 1;
|
||||
ELSE
|
||||
stHMIInterface.stFillButton.eFeedback := 0;
|
||||
END_IF
|
||||
|
||||
IF _fbDrainValve.IsOpen THEN
|
||||
stHMIInterface.stEmptyButton.eFeedback := 1;
|
||||
ELSE
|
||||
stHMIInterface.stEmptyButton.eFeedback := 0;
|
||||
END_IF]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
</POU>
|
||||
|
||||
Reference in New Issue
Block a user