This commit is contained in:
2026-01-08 11:08:17 +01:00
commit fe882dc444
311 changed files with 511562 additions and 0 deletions

View File

@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.13">
<POU Name="JOB" Id="{799f177c-bbc6-4aa2-ab23-128c570a7c41}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM JOB
VAR
Step : INT;
// NextIndexDone : ARRAY[FirstCassette..FirstCassette +1] OF BOOL;
i : INT;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF StationsStatus[FirstCassette].Soll.Stop THEN
Step := 0;
TrayJob.Start := FALSE;
TrayBatch(0,0);
RETURN;
END_IF
CASE Step OF
0:
IF TrayJob.Start THEN
Step := 10;
END_IF
10:
CASE TrayJob.JobType OF
eJobType.OneTray:
IF TrayBatch(TrayJob.TryIndex,TrayJob.TryIndex) THEN
Step := 0;
END_IF
eJobType.AllTrays:
IF TrayBatch(1,20) THEN
Step := 0;
END_IF
eJobType.TrayLot:
IF TrayBatch(TrayJob.StartTrayIndex,TrayJob.EndTrayIndex) THEN
Step := 0;
END_IF
END_CASE
END_CASE]]></ST>
</Implementation>
<Method Name="TrayBatch" Id="{7fdb400e-fd56-4c2a-8bbf-660c477fc1af}">
<Declaration><![CDATA[METHOD TrayBatch : BOOL
VAR_INPUT
FirstTray : USINT;
LastTray : USINT;
END_VAR
VAR_INST
Step : INT;
TrayIndex : USINT;
i : INT;
ForLoopFrom : INT;
ForLoopTo : INT;
// NextIndexDone : ARRAY[FirstCassette..FirstCassette +1] OF BOOL;
END_VAR
VAR
bError : BOOL;
END_VAR]]></Declaration>
<Implementation>
<ST><![CDATA[IF StationsStatus[FirstCassette].Soll.Stop THEN
Step := 0;
RETURN;
END_IF
CASE Step OF
0:
IF StationsStatus[FirstCassette].Ist.InitDone AND
NOT StationsStatus[FirstCassette].Ist.Busy AND
StationsStatus[FirstCassette+1].Ist.InitDone AND
NOT StationsStatus[FirstCassette+1].Ist.Busy THEN
//NextIndexDone[FirstCassette] := FALSE;
//NextIndexDone[FirstCassette+1] := FALSE;
TrayIndex := FirstTray;
Step := 10;
END_IF
10:
IF CASSETTE_MAIN[FirstCassette].TrayFeeder.GetTray(SlotNr := TrayIndex, bOutError => bError) THEN
IF bError THEN
Step := Step +1;
ELSE
Step := 20;
END_IF
END_IF
20:
StationsStatus[FirstCassette].SellectedRecipeAutomatic := TrayJob.FlowName;
IF NOT StationsStatus[FirstCassette].Ist.Busy THEN
CMD[FirstCassette] := CloseInCMD;
StationsStatus[FirstCassette].Soll.AutoStart := TRUE;
Step := Step +1;
END_IF
21:
IF CASSETTE_MAIN[FirstCassette].TrayFeeder.TrayNumber > 0 THEN
ForLoopFrom := 1+ (CASSETTE_MAIN[FirstCassette].TrayFeeder.TrayNumber)*100;
ForLoopTo := 100+ (CASSETTE_MAIN[FirstCassette].TrayFeeder.TrayNumber)*100;
FOR i := 1 TO ForLoopTo DO
IF CASSETTE_MAIN[FirstCassette].Signal.Wafer[i].WaferStatus = WaferForProccess THEN
IF NOT StationsStatus[FirstCassette].Ist.Busy THEN
CMD[FirstCassette] := CloseInCMD;
StationsStatus[FirstCassette].Soll.AutoStart := TRUE;
END_IF
RETURN;
END_IF
END_FOR
Step := 30;
END_IF
30:
IF bEmpty THEN
Step := 35;
RETURN;
END_IF
IF TrayIndex < LastTray THEN
TrayIndex := TrayIndex + 1;
Step := Step +1;
ELSE
Step := 35;
END_IF
31:
IF CASSETTE_MAIN[FirstCassette].TrayFeeder.GetTray(
SlotNr := TrayIndex,
bOutError => bError) THEN
Step := 21;
END_IF
35:
IF CASSETTE_MAIN[FirstCassette].TrayFeeder.EndOfLot() THEN
Step := Step +1;
END_IF
36:
IF NOT StationsStatus[FirstCassette].Ist.Busy THEN
Step := 40;
END_IF
40:
IF CASSETTE_MAIN[FirstCassette+1].TrayFeeder.EndOfLot() THEN
Step := 50;
END_IF
50:
TrayJob.Start := FALSE;
TrayBatch := TRUE;
Step := 0;
END_CASE]]></ST>
</Implementation>
</Method>
</POU>
</TcPlcObject>