Hallo Harry,
ich hab das auf folgende Art gelöst. Der Roboter fährt bei mir mit vier Punkten in eine Maschine hinein. Bei jedem Punkt, den er erreicht, bzw. angefahren hat, wird im Hauptprogramm eine FLAG gesetzt.
Jetzt muß es nur noch ermöglicht werden, das der Roboter erkennt, das er von Hand verfahren wurde. Ich denke mal das ist kein Problem, weil ja sicher das Automatiksignal von eurer Anlage abgefragt wird.
Diese Abfrage dann halt mit einem Interrupt überwachen. Wird dieser Interrupt dann ausgelöst, dann kann man den Roboter in ein Unterprogramm springen lassen, z.B. mit dem Namen "Rueckwärts".
In diesem Programm fragst du dann die FLAGS ab, die beim Einfahren in die Maschine gesetzt wurden, bei erreichen der einzelnen Wegpunkte. Ab der letzten Flag, die gesetzt wurde, kannst du den Roboter nun den Weg wieder rückwärts herausfahren lassen, weil er ja weiß, daß er bis zu diesem Punkt gekommen ist. Am Schluß des "Rückwärts" Unterprogramms dann alle FLAGS wieder zurücksetzen und das Ganze kann von vorne losgehen, wenn erforderlich.
Hab was vergessen Sorry. In dem "Rueckwaerts" Unterprogramm muß dann zu jedem Punkt natürlich eine Marke gesetzt werden, wo der Roboter im Programm dann hinspringt, nachdem er die Flags abgefragt hat.
z.B.:
IF $FLAG[5] THEN
728 GOTO MARKER0
729 ENDIF
730 IF $FLAG[4] THEN
731 GOTO MARKER1
732 ENDIF
733 IF $FLAG[3] THEN
734 GOTO MARKER2
735 ENDIF
736 IF $FLAG[2] THEN
737 GOTO MARKER3
738 ENDIF
746 MARKER0:
747 LIN XP35
750 MARKER1:
751 LIN XP30
752 MARKER2:
753 LIN XP20
754 MARKER3:
755 PTP XP10
Ich bin leider net so der "Erklärer", aber ich hoffe trotzdem, daß du was damit anfangen kannst.