Initial
This commit is contained in:
145
PLC/1 Cassette/JOB TRAY/JOB.TcPOU
Normal file
145
PLC/1 Cassette/JOB TRAY/JOB.TcPOU
Normal 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>
|
||||
Reference in New Issue
Block a user