Hi,
wie ich das sehe, sollte das Programm schon funktionieren wie gewünscht...
Um welche Steuerung handelt es sich ? Ich vermute mal IRC5, von wegen Touchpanel (?)
Laufen noch andere Tasks parallel ?
Wo befindet sich der Programmzeiger, wenn nach dem ersten Restart wieder Stop gedrückt wird ?
Immer noch auf dem TPReadFK ?
Ändert sich das Verhalten wenn die Ausgabe des letzten TPWrite in das TPReadFK übernommen wird ?
also z.B. so:
TPReadFK nFK2," Ist ein Teil im FT-Greifer?"," Erneut pruefen ","Abfrage ignorieren",""," Ja "," Nein ";
Könnte möglicherweise ja auch ein Fehler im ABB-System sein, wer weiß...
Wenn alles nichts hilft, dann könnte man auch (als Workaround) das Programm auf Benutzeranforderung an dieser Stelle unterbrechen, wenn der Anwender in die Rob-Zelle muß, also z.B. so:
TPReadFK nFK2," Ist ein Teil im FT-Greifer?"," Erneut pruefen ","Abfrage ignorieren"," Prog. anhalten "," Ja "," Nein ";
...
IF nFK2=3 Stop;
Damit wird zumindest nicht das TPReadFK unterbrochen...
Was noch zu sagen wäre....

Man könnte diesen Programmteil insgesamt noch etwas schlanker/eleganter gestalten, also z.B. so:
WHILE (nFK2<>2) AND (nFK2<>4) AND (nFK2<>5) DO
bSensFtGrAuf := TestDI(diFtGrGeoeff); !oder so: bSensFtGrAuf := (diFtGrGeoeff=1);
bSensFtGrZu := TestDI(diFtGrGesch);
bSensTeilFtGr := TestDI(diFtGrTeil);
TPErase;
TPWrite "";
TPWrite " Sensor FT-Greifer geschlossen "\bool:=bSensFtGrZu;
TPWrite " Sensor FT-Greifer geoeffnet "\bool:=bSensFtGrAuf;
TPWrite " Sensor Teil in FT-Greifer: "\bool:=bSensTeilFtGr;
TPWrite " Merker Teil in FT-Greifer: "\bool:=bTeilFtGr;
TPWrite "";
TPReadFK nFK2," Ist ein Teil im FT-Greifer?"," Erneut pruefen ","Abfrage ignorieren"," Prog. anhalten "," Ja "," Nein ";
TPErase;
TEST nFK2
CASE 2: GOTO EndPruefGr; !Hüpf Häschen hüpf; das ist nicht schön und kann/sollte man auch anders lösen
CASE 3: Stop;
CASE 4: bTeilFtGr:=TRUE;
CASE 5: bTeilFtGr:=FALSE;
ENDTEST
bChFtNIO:=FALSE;
ENDWHILE
Sorry, ist zwar leider keine direkte Problemlösung, aber vielleicht bringts dir ja trotzdem was....

Gruß
rmac