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>
|
||||
|
||||
12
PLC/PLC.tmc
12
PLC/PLC.tmc
File diff suppressed because one or more lines are too long
@@ -101,16 +101,27 @@
|
||||
</Instance>
|
||||
<Mappings>
|
||||
<OwnerA>
|
||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 103 (EX260-SEC1)">
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidLow._fbWaterValve.xOpenValve" VarB="Byte 2^Output[6]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid._fbWaterValve.xOpenValve" VarB="Byte 2^Output[7]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankNitricAcid._fbWaterValve.xOpenValve" VarB="Byte 2^Output[5]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcid._fbWaterValve.xOpenValve" VarB="Byte 2^Output[4]" Size="1"/>
|
||||
</OwnerB>
|
||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 104 (EX260-SEC1)">
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh._fbDrainValve.xOpenValve" VarB="Byte 1^Output[5]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidHigh._fbWaterValve.xOpenValve" VarB="Byte 0^Output[4]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankAceticAcidLow._fbDrainValve.xOpenValve" VarB="Byte 1^Output[2]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankFilmetch._fbDrainValve.xOpenValve" VarB="Byte 0^Output[5]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankFilmetch._fbWaterValve.xOpenValve" VarB="Byte 0^Output[3]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcid._fbDrainValve.xOpenValve" VarB="Byte 1^Output[1]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing._fbDrainValve.xOpenValve" VarB="Byte 0^Output[7]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankHydrofluoricAcidMixing._fbWaterValve.xOpenValve" VarB="Byte 0^Output[1]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankNitricAcid._fbDrainValve.xOpenValve" VarB="Byte 1^Output[3]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSEF._fbDrainValve.xOpenValve" VarB="Byte 0^Output[6]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSEF._fbWaterValve.xOpenValve" VarB="Byte 0^Output[2]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcid._fbDrainValve.xOpenValve" VarB="Byte 1^Output[4]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing._fbDrainValve.xOpenValve" VarB="Byte 1^Output[0]" Size="1"/>
|
||||
<Link VarA="PlcTask Outputs^PRG_Main._fbMediaCabinet._fbTankSulfuricAcidMixing._fbWaterValve.xOpenValve" VarB="Byte 0^Output[0]" Size="1"/>
|
||||
</OwnerB>
|
||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
||||
<Link VarA="PlcTask Inputs^PRG_Main._fbAligner.diXOffset" VarB="Module 1 (Result Data 128Byte)^Result Data 128Byte^Result Data7"/>
|
||||
|
||||
@@ -2677,7 +2677,7 @@ External Setpoint Generation:
|
||||
</Properties>
|
||||
</DataType>
|
||||
</DataTypes>
|
||||
<Instance TmcHash="{C3D1172C-C3FF-CE61-14D7-FC4C273B8DEA}">
|
||||
<Instance TmcHash="{6F9D093A-93DD-18C8-E5C5-A2C7DAE3FFFF}">
|
||||
<Vars VarGrpType="1">
|
||||
<Name>PlcTask Inputs</Name>
|
||||
<Var>
|
||||
|
||||
Reference in New Issue
Block a user