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 ]]>