RecipeCurrentStep THEN Step := 10; RETURN; END_IF IF iStationStatus.Soll.RecipeExit THEN Step := 0; iStationStatus.Ist.Recipe := FALSE; iStationStatus.Soll.RecipeExit := FALSE; END_IF END_CASE ]]> TestNotOk) THEN TestOk := NOT TestNotOk; _Step := 60; END_IF 60: IF TestOk THEN _Step := 80; ELSE CASE iStationStatus.OperationMode OF AutomaticMode: _Step := 70; ELSE _Step := 80; END_CASE END_IF 70: CassetteNumber := iStationStatus.WaferInfo[0].CassetteNumber; SlotNumber := iStationStatus.WaferInfo[0].Number; CurrentProcessStep := iStationStatus.WaferInfo[0].FlowStepNumber; RetryFlowName := CASSETTE_PROCESS[CassetteNumber][SlotNumber][CurrentProcessStep].RetryFlowName; IF CASSETTE_PROCESS[CassetteNumber][SlotNumber][CurrentProcessStep].Retry THEN _Step := 75; ELSE iStationStatus.WaferInfo[0].Defect := TRUE; _Step := 90; END_IF 75: IF StationsStatus[RobotStation].Ist.Busy AND ROBOT_MAIN.TargetStation <> iStation THEN RETURN; END_IF FOR i := FirstLelaxStation TO LastRelaxStation DO IF StationsStatus[i].WaferInfo[0].Number = 0 THEN TargetRelaxStation := i; RETRY_MAIN[TargetRelaxStation].RetryFlowName := RetryFlowName; CASSETTE_PROCESS[CassetteNumber][SlotNumber][iStationStatus.WaferInfo[0].FlowStepNumber+1].TargetStation := TargetRelaxStation; _Step := 90; RETURN; END_IF END_FOR 80: IF Recipe.STEP_COUNT > CurrentStep THEN _Step := 30; ELSE _Step := 90; END_IF 90: IO.bOutOverpressureN2 := FALSE; IO.bOutExhaust := TRUE; ProblemTimer( iStation, _Step, 0, HV_ErrorNr.eTimeoutN2PressureRelease, sAvailableResponse.RetryCancel, TimeOut ); _Step := _Step +1; 91: IF IO.bInChamberNoPressure THEN iStationStatus.ProblemTimer := T#0S; _Step := _Step+1; END_IF 92: IO.bOutValve := TRUE; ProblemTimer( iStation, _Step, 0, HV_ErrorNr.eTimeoutCylinderPressure, sAvailableResponse.RetryCancel, TimeOut ); _Step := _Step +1; 93: IF IO.bInPressureCylinderOk THEN iStationStatus.ProblemTimer := T#0S; _Step := 95; END_IF 95: IF IO.Chamber.Up() THEN _Step := 100; END_IF 100: Start := TRUE; _Step := 0; END_CASE ]]>