Files
infineon_legacy_plc/PLC/8 Media/POUs/LeviPump/Levi2PumpMixSystem_FB.TcPOU
2026-01-08 11:08:17 +01:00

58 lines
1.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.11">
<POU Name="Levi2PumpMixSystem_FB" Id="{ece2ff75-6acd-40f3-8c3a-ce486569e98e}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK Levi2PumpMixSystem_FB
VAR_INPUT
iStation : INT;
TargetVolume : REFERENCE TO LREAL;
TargetFlow : REFERENCE TO LREAL;
TargetRatio : REFERENCE TO LREAL;
System : REFERENCE TO LeviPumpIn_FB;
Pump1 : REFERENCE TO LeviPumpIn_FB;
Pump2 : REFERENCE TO LeviPumpIn_FB;
END_VAR
VAR_OUTPUT
END_VAR
VAR
Step : INT;
END_VAR
VAR PERSISTENT
MixSystemOk : BOOL;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF StationsStatus[iStation].Soll.Stop THEN
IF Step > 10 THEN
MixSystemOk := FALSE;
Step := 0;
END_IF
END_IF
CASE Step OF
0:
IF System.bOutStartMix THEN
IF System.bInTankFull THEN
System.bOutStartMix := 0;
ELSE
Step := 10;
END_IF
END_IF
10:
IF System.bOutInitDone AND Pump1.bOutInitDone AND Pump2.bOutInitDone THEN
Step := 20;
END_IF
20:
IF Pump1.StartVolume(TargetVolume*(1-TargetRatio/100), TargetFlow*(1-TargetRatio/100)) AND
Pump2.StartVolume(TargetVolume*(TargetRatio/100), TargetFlow*(TargetRatio/100)) THEN
Pump1.bOutVolumeDone := FALSE;
Pump2.bOutVolumeDone := FALSE;
Step := 30;
END_IF
30:
// System.bOutRefill := FALSE;
System.bOutStartMix := FALSE;
Step := 0;
END_CASE]]></ST>
</Implementation>
</POU>
</TcPlcObject>