150 lines
4.3 KiB
XML
150 lines
4.3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<TcPlcObject Version="1.1.0.1">
|
|
<POU Name="FB_MediaCabinet" Id="{9de34b64-23ba-4fef-b086-9297bbd06f24}" SpecialFunc="None">
|
|
<Declaration><![CDATA[FUNCTION_BLOCK FB_MediaCabinet EXTENDS FB_PackMLGeneric
|
|
VAR_INPUT
|
|
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;
|
|
|
|
// (2) Sulfuric acid
|
|
_fbTankSulfuricAcid : FB_Tank;
|
|
|
|
// (3) Nitric acid 65% mixing
|
|
_fbTankNitricAcid : FB_Tank;
|
|
|
|
// (4) Acetic acid 10%
|
|
_fbTankAceticAcidLow : FB_Tank;
|
|
|
|
// (5) Hydrofluoric acid 40%
|
|
_fbTankHydrofluoricAcid : FB_Tank;
|
|
|
|
// (6) Sulfuric acid mixing
|
|
_fbTankSulfuricAcidMixing : FB_Tank;
|
|
|
|
// (7) Hydrofluoric acid 40% for mixing
|
|
_fbTankHydrofluoricAcidMixing : FB_Tank;
|
|
|
|
// (8) SEF
|
|
_fbTankSEF : FB_Tank;
|
|
|
|
// (9) Filmetch
|
|
_fbTankFilmetch : FB_Tank;
|
|
|
|
// Flowsensors
|
|
//_fbFlowSensors16 : FB_Levi_LFC6IO
|
|
|
|
// Filmetch valve, NC -> Recirculating back into tank
|
|
_fbValveFilmetchOut : FB_Valve('');
|
|
|
|
// General valve config for valves with no feedback
|
|
_stValveConfig : ST_ValveConfig;
|
|
|
|
// Modbus master for Pumps
|
|
_fbMBMaster : FB_ModbusMaster;
|
|
_fbLeviPump9 : FB_LeviPump;
|
|
_xEnablePump : BOOL;
|
|
|
|
_xTest : BOOL;
|
|
END_VAR
|
|
]]></Declaration>
|
|
<Implementation>
|
|
<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);
|
|
|
|
// Valves
|
|
_fbValveFilmetchOut(
|
|
xReleaseErrors:= xReleaseErrors,
|
|
stValveConfig:= _stValveConfig,
|
|
xReleaseManualMode:= _xReleaseManualMode,
|
|
xConfirmAlarms:= xConfirmAlarms,
|
|
stHMIInterface:= stHMIInterface.stValveFilmetch);
|
|
|
|
_fbMBMaster();
|
|
|
|
_fbLeviPump9(
|
|
byAddr:= 9,
|
|
xEnable:= _xEnablePump,
|
|
rSpeedSP:= 2000,
|
|
fbModbusMaster:= _fbMBMaster);
|
|
|
|
// Call isa88 base state machine
|
|
SUPER^(stPackMLHMIInterface := stHMIInterface.stStationCmds);]]></ST>
|
|
</Implementation>
|
|
<Method Name="FB_Init" Id="{860f10c9-69ca-4ad7-9edc-00af754d0af0}">
|
|
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
|
//The return value is not evaluated. For a specific influence, you can also declare the
|
|
//methods explicitly and provide additional code there with the standard initialization
|
|
//code. You can evaluate the return value.
|
|
METHOD FB_Init: BOOL
|
|
VAR_INPUT
|
|
bInitRetains: BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold)
|
|
bInCopyCode: BOOL; // TRUE: the instance will be copied to the copy code afterward (online change)
|
|
END_VAR
|
|
]]></Declaration>
|
|
<Implementation>
|
|
<ST><![CDATA[_stValveConfig.xHasOpenFeedback := FALSE;
|
|
_stValveConfig.xHasClosedFeedback := FALSE;]]></ST>
|
|
</Implementation>
|
|
</Method>
|
|
</POU>
|
|
</TcPlcObject> |