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,162 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.11">
<POU Name="CLEANOUT" Id="{ce0061ae-e812-4a19-b385-951266a3cfdc}" SpecialFunc="None">
<Declaration><![CDATA[PROGRAM CLEANOUT
VAR_INPUT
Scan : BOOL;
CleanOut : BOOL;
TargetStation : INT;
TargetCassette : INT;
TargetSlot : INT;
END_VAR
VAR_OUTPUT
TargetStations : ARRAY[0..12] OF STRING;
TargetStationsN : ARRAY[0..12] OF INT;
TargetCassettes : ARRAY[0..3] OF STRING;
{IF defined (SO1635)}
TargetCassettesMaxIndex : INT := 3;
{END_IF}
{IF defined (SO1636)}
TargetCassettesMaxIndex : INT := 1;
{END_IF}
TargetCassettesMaxIndex : INT := 1;
TargetSlots : ARRAY[0..MaxNumberOfWafer-1] OF STRING;
NumberOfTargetStation : INT;
ScanInvisible : BOOL;
SlotInvisible : BOOL;
CleanoutInvisible : BOOL;
CassetteInvisible : BOOL;
END_VAR
VAR
i : INT;
Step : INT;
iTargetStation : INT;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[NumberOfTargetStation := 0;
CleanOutNeeded := FALSE;
ScanInvisible := FALSE;
SlotInvisible := FALSE;
CleanoutInvisible := FALSE;
CassetteInvisible := FALSE;
FOR i:= FirstStation TO LastStation DO
CASE StationsStatus[i].StationType OF
noStationType, TypeGeneral, TypeMedia:
;
TypeCassette:
TargetCassettes[i-FirstCassette] := StationsStatus[i].StationName;
IF StationsStatus[i].Ist.Busy THEN
ScanInvisible := TRUE;
SlotInvisible := TRUE;
END_IF
ELSE
IF StationsStatus[i].OnlyMoveToStation THEN
CONTINUE;
END_IF
IF StationsStatus[i].WaferInfo[0].Number = 100 THEN
TargetStations[NumberOfTargetStation] := StationsStatus[i].StationName;
TargetStationsN[NumberOfTargetStation] := i;
CleanOutNeeded := TRUE;
NumberOfTargetStation := NumberOfTargetStation +1;
END_IF
IF StationsStatus[i].StationType = TypeRobot THEN
IF StationsStatus[i].WaferInfo[0].Number = 100 THEN
TargetStations[NumberOfTargetStation] := StationsStatus[i].StationName;
TargetStationsN[NumberOfTargetStation] := i;
CleanOutNeeded := TRUE;
NumberOfTargetStation := NumberOfTargetStation +1;
END_IF
IF StationsStatus[i].Ist.Busy THEN
ScanInvisible := TRUE;
SlotInvisible := TRUE;
END_IF
END_IF
END_CASE
END_FOR
IF NOT CASSETTE_MAIN[TargetCassette + FirstCassette].IO.CarrierAvailable THEN
ScanInvisible := TRUE;
END_IF
IF StationsStatus[RobotStation].WaferInfo[0].Number <> 0 THEN
ScanInvisible := TRUE;
END_IF
IF TargetStationsN[TargetStation] = RobotStation THEN
CassetteInvisible := TRUE;
END_IF
IF StationsStatus[FirstCassette + TargetCassette].Ist.CloseIn THEN
FOR i := 0 TO MaxNumberOfWafer - 1 DO
IF CASSETTE_MAIN[FirstCassette + TargetCassette].Signal.Wafer[i+1].WaferStatus = noWafer THEN
TargetSlots[i] := INT_TO_STRING(i+1);
ELSE
TargetSlots[i] := CONCAT(INT_TO_STRING(i+1), ' (Not Available)');
END_IF
END_FOR
ELSE
SlotInvisible := TRUE;
END_IF
IF FIND(TargetSlots[TargetSlot], '(Not Available)') > 0 THEN
CleanoutInvisible := TRUE;
END_IF
IF SlotInvisible THEN
CleanoutInvisible := TRUE;
END_IF
CASE Step OF
0:
IF CleanOut THEN
Step := 10;
END_IF
10:
iTargetStation := TargetStationsN[TargetStation];
IF NOT StationsStatus[iTargetStation].Ist.Busy AND NOT StationsStatus[RobotStation].Ist.Busy THEN
ROBOT_MAIN.TargetStation := iTargetStation;
CMD[RobotStation] := GetCMD;
Step := Step +1;
END_IF
11:
IF NOT StationsStatus[RobotStation].Ist.Busy THEN
Step := 30;
END_IF
20:
IF NOT StationsStatus[RobotStation].Ist.Busy THEN
ROBOT_MAIN.TargetStation := TypeAligner;
CMD[RobotStation] := PutCMD;
Step := Step +1;
END_IF
21:
IF NOT StationsStatus[RobotStation].Ist.Busy THEN
Step := 30;
END_IF
30:
IF NOT StationsStatus[RobotStation].Ist.Busy THEN
ROBOT_MAIN.TargetStation := TypeCassette + TargetCassette;
ROBOT_MAIN.TargetSlot := TargetSlot +1;
CASSETTE_MAIN[ROBOT_MAIN.TargetStation].Signal.Wafer[ROBOT_MAIN.TargetSlot].Defect := TRUE;
CMD[RobotStation] := PutCMD;
Step := Step +1;
END_IF
31:
IF NOT StationsStatus[RobotStation].Ist.Busy THEN
CleanOut := FALSE;
Step := 0;
END_IF
END_CASE
]]></ST>
</Implementation>
</POU>
</TcPlcObject>