3 THEN DMC := TRUE; Step := 0; bOutBusy := FALSE; //Step := 110; ELSE Step := 10; END_IF 1: Step := 30; END_CASE 30: Data := ''; MEMMOVE(ADR(Data), ADR(CameraInputData[30]), CameraInputData[29]); DMC := TRUE; Step := 0; bOutBusy := FALSE; 40: Data := ManualData; DMC := TRUE; bOutBusy := FALSE; Step := 0; END_CASE]]> 0 THEN IF RunProgram(cProgram+_Size) THEN Step := 30; END_IF END_IF 30: FOR i := 1 TO MaxNumberOfSubstratesPerTray DO Out[i] := 0; END_FOR NumberOfSubstrateDetected := BYTE_TO_SINT(CameraInputData[28]); MaxNumberOfWafer := ROBOT_MAIN.Config.SubstrateInformation[_Size].MaxNumber; IF NumberOfSubstrateDetected = MaxNumberOfWafer THEN FOR i := 1 TO NumberOfSubstrateDetected DO Out[i] := 1; END_FOR Step := 100; ELSIF NumberOfSubstrateDetected > 0 THEN Step := 40; ELSE Step := 100; END_IF 40: MappingArrayPosition := GetCurrentCameraPosition(); MaxNumberOfWafer := ROBOT_MAIN.Config.SubstrateInformation[_Size].MaxNumber; i := 1; Step := 50; 50: IF i > MaxNumberOfWafer THEN Step := 100; ELSE Step := 60; END_IF 60: FOR j := 1 TO NumberOfSubstrateDetected DO X := UINT_TO_DINT(CASSETTE_MAIN[FirstCassette].Config.TeachPosition[_Size].Position[i].Camera[0]) - UINT_TO_DINT(MappingArrayPosition[j][0]); Y := UINT_TO_DINT(CASSETTE_MAIN[FirstCassette].Config.TeachPosition[_Size].Position[i].Camera[1]) - UINT_TO_DINT(MappingArrayPosition[j][1]); IF ABS(X) < 50 AND ABS(Y) < 50 THEN Out[i] := 1; EXIT; END_IF END_FOR i := i +1; Step := 50; 100: Mapping := TRUE; Step := 0; bOutBusy := FALSE; END_CASE]]>