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;
|
_wFillingValveSafetyIntlkUsed : T_INTERLOCK;
|
||||||
_wFillingValveSafetyIntlk : T_INTERLOCK;
|
_wFillingValveSafetyIntlk : T_INTERLOCK;
|
||||||
|
|
||||||
|
_xStartEmptyTank : BOOL;
|
||||||
|
_xStartFillTankWater : BOOL;
|
||||||
|
|
||||||
_iState : INT;
|
_iState : INT;
|
||||||
|
|
||||||
_xFirstCycle : BOOL := TRUE;
|
_xFirstCycle : BOOL := TRUE;
|
||||||
@@ -43,6 +46,8 @@ END_VAR
|
|||||||
_wFillingValveSafetyIntlkUsed.0 := 1;
|
_wFillingValveSafetyIntlkUsed.0 := 1;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
|
M_HandleHMIInput();
|
||||||
|
|
||||||
// Overfull is NC so true if ok
|
// Overfull is NC so true if ok
|
||||||
_wFillingValveSafetyIntlk.0 := i_xOverfull;
|
_wFillingValveSafetyIntlk.0 := i_xOverfull;
|
||||||
_fbFillingValve(
|
_fbFillingValve(
|
||||||
@@ -78,15 +83,13 @@ _fbPumpValve(
|
|||||||
CASE _iState OF
|
CASE _iState OF
|
||||||
// Idle
|
// Idle
|
||||||
0:
|
0:
|
||||||
// Start emptying tank
|
IF _xStartEmptyTank THEN
|
||||||
IF stHMIInterface.stEmptyButton.xRequest THEN
|
_xStartEmptyTank := FALSE;
|
||||||
stHMIInterface.stEmptyButton.xRequest := FALSE;
|
|
||||||
_iState := 10;
|
_iState := 10;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
// Start filling tank with water
|
IF _xStartFillTankWater THEN
|
||||||
IF stHMIInterface.stFillButton.xRequest THEN
|
_xStartFillTankWater := FALSE;
|
||||||
stHMIInterface.stFillButton.xRequest := FALSE;
|
|
||||||
_iState := 20;
|
_iState := 20;
|
||||||
END_IF
|
END_IF
|
||||||
|
|
||||||
@@ -102,11 +105,22 @@ CASE _iState OF
|
|||||||
|
|
||||||
// Fill tank with water
|
// Fill tank with water
|
||||||
20:
|
20:
|
||||||
|
_fbWaterValve.xAutomaticOpen := TRUE;
|
||||||
|
|
||||||
IF xFull THEN
|
IF xFull THEN
|
||||||
;
|
_fbWaterValve.xAutomaticOpen := FALSE;
|
||||||
|
|
||||||
|
_iState := 0;
|
||||||
END_IF
|
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>
|
</Implementation>
|
||||||
<Method Name="FB_Init" Id="{9c6d1842-9c2e-4437-b40f-941f77668ffe}">
|
<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.
|
<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>
|
_stValveConfig.xHasClosedFeedback := FALSE;]]></ST>
|
||||||
</Implementation>
|
</Implementation>
|
||||||
</Method>
|
</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}">
|
<Method Name="M_HandleHMIOutput" Id="{8939e00b-3459-4b5e-a4b3-7b489eec260a}">
|
||||||
<Declaration><![CDATA[METHOD PRIVATE M_HandleHMIOutput : BOOL
|
<Declaration><![CDATA[METHOD PRIVATE M_HandleHMIOutput : BOOL
|
||||||
VAR_INPUT
|
VAR_INPUT
|
||||||
@@ -133,7 +170,22 @@ END_VAR
|
|||||||
<ST><![CDATA[// Overfull sensor is NC
|
<ST><![CDATA[// Overfull sensor is NC
|
||||||
stHMIInterface.xOverfull := (NOT i_xOverfull);
|
stHMIInterface.xOverfull := (NOT i_xOverfull);
|
||||||
stHMIInterface.xFull := i_xFull;
|
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>
|
</Implementation>
|
||||||
</Method>
|
</Method>
|
||||||
</POU>
|
</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>
|
</Instance>
|
||||||
<Mappings>
|
<Mappings>
|
||||||
<OwnerA>
|
<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)">
|
<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._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._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._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._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._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._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._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._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._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>
|
||||||
<OwnerB Name="TIID^Device 1 (EtherCAT)^Box 26 (TM-X5K_CB-NEC20E)">
|
<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"/>
|
<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>
|
</Properties>
|
||||||
</DataType>
|
</DataType>
|
||||||
</DataTypes>
|
</DataTypes>
|
||||||
<Instance TmcHash="{C3D1172C-C3FF-CE61-14D7-FC4C273B8DEA}">
|
<Instance TmcHash="{6F9D093A-93DD-18C8-E5C5-A2C7DAE3FFFF}">
|
||||||
<Vars VarGrpType="1">
|
<Vars VarGrpType="1">
|
||||||
<Name>PlcTask Inputs</Name>
|
<Name>PlcTask Inputs</Name>
|
||||||
<Var>
|
<Var>
|
||||||
|
|||||||
Reference in New Issue
Block a user