Linked all tank sensors in media cabinet
- Additional fixes for the hmi
This commit is contained in:
@@ -3,9 +3,15 @@
|
||||
<POU Name="FB_MediaCabinet" Id="{9de34b64-23ba-4fef-b086-9297bbd06f24}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_MediaCabinet
|
||||
VAR_INPUT
|
||||
xReleaseManualMode : BOOL;
|
||||
xReleaseErrors : BOOL;
|
||||
xConfirmAlarms : BOOL;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
END_VAR
|
||||
VAR_IN_OUT
|
||||
stHMIInterface : ST_HMI_MediaCabinet;
|
||||
END_VAR
|
||||
VAR
|
||||
// (1) Acetic acid 99%
|
||||
_fbTankAceticAcidHigh : FB_Tank;
|
||||
@@ -35,12 +41,64 @@ VAR
|
||||
_fbTankFilmetch : FB_Tank;
|
||||
|
||||
// Flowsensors
|
||||
|
||||
//_fbFlowSensors16 : FB_Levi_LFC6IO
|
||||
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[]]></ST>
|
||||
<ST><![CDATA[_fbTankAceticAcidHigh(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankAceticAcidHigh);
|
||||
|
||||
_fbTankSulfuricAcid(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankSulfuricAcid);
|
||||
|
||||
_fbTankNitricAcid(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankNitricAcid);
|
||||
|
||||
_fbTankAceticAcidLow(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankAceticAcidLow);
|
||||
|
||||
_fbTankHydrofluoricAcid(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankHydrofluoricAcid);
|
||||
|
||||
_fbTankSulfuricAcidMixing(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankSulfuricAcidMixing);
|
||||
|
||||
_fbTankHydrofluoricAcidMixing(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankHydrofluoricAcidMixing);
|
||||
|
||||
_fbTankSEF(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankSEF);
|
||||
|
||||
_fbTankFilmetch(
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseManualMode:= xReleaseManualMode,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface:= stHMIInterface.stTankFilmetch);]]></ST>
|
||||
</Implementation>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
@@ -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}">
|
||||
|
||||
Reference in New Issue
Block a user