Wenn Dein Kumpel (der Programmierer) Dir helfen will, dann lass ihn lieber was machen, was alle "*"-Punkte in Variablen umwandelt. Er sollte sich mit Regular Expressions gut auskennen. Im Prinzip geht es darum, diesen
(\[\[.*\],\[.*\],\[.*\],\[.*\]\])
regulären Ausdruck zu finden, am Auftreten mit einem fortlaufend erzeugten Namen zu ersetzen und dann noch eine Liste zu erzeugen, in der jener fortlaufend erzeugte Name in der Form:
TASK PERS robtarget (name) := \1;
rausgeschrieben wird. (Wobei \1 der Platzhalter für die oben gefundene Klammer sei).
Notfalls lass ihn ein Notepad++-Script schreiben dafür, das wird Dir eher helfen als die einmalige Verschiebung in einer Richtung.
Hallo Michael
Lass mich Dir zunächst für deine ausführlichen Ratschläge und Gedankenansätze danken.
Ich habe mittlerweile nach deinem Vorbild aus dem letzten Post eine Event-Routine mit dem -shelf "STEP" verknüpft und mir ein virtuelles Signal "voShift" auf Taste 3 am FP gelegt.
MODULE TestMod(SYSMODULE)
VAR pose pz70:=[[0,0,-70],[1,0,0,0]];
PERS bool bDone:=FALSE;
PROC rEignisRoutine()
IF voShift=high AND bDONE=FALSE THEN
pDispSet pz70;
bDone:=TRUE;
TPERASE;
UIMsgBox "Verschiebung aktiv";
ELSEIF voShift=high AND bDONE=TRUE THEN
pDispOff;
bDone:=FALSE;
TPERASE;
UIMsgBox "Stop, letzte Pos korrigieren und dann erst bestätigen mit OK";
ENDIF
ENDPROC
ENDMODULE
Alles anzeigen
Die Idee dahinter war, jeden Punkt einmal im Einzelschritt verschoben anzufahren, dann einen weiteren Step zu machen und wenn die Meldung "Stop, ...." kommt den Zustimmtaster loszulassen, den noch markierten vorangegangenen Punkt im nicht mehr verschobenen Koordinatensystem zu überspeichern und den nächsten Punkt wieder im verschobenen Koordinatensystem anzufahren usw. usw.
...und was soll ich sagen... ...das funktioniert super.... ...für genau einen Punkt, und sobald ich auf "Position korrigieren" drücke verliere ich ohne vorherige Warnung den PZ und muss mich wieder von vorne durch das Programm wurschteln.
Ich hätte noch ne Idee wie ich das Problem mit dem Zusammenspiel von Event-Routine und SemiTask lösen könnte, aber leider hat mein Chef bei diesem Robi die Option Hintergrundtask "vergessen" mitzubestellen (obwohl wir Programmierer bei uns intern in dem Punkt einig sind und darauf bestanden haben dass diese Option generell mitbestellt werden muss). Naja, er hat entschieden das es jetzt auch einmal so gehen muss.
Zu Deinem aktuellen Post:
Ich habe schon die gleiche Überlegung gehabt (also ob ich nicht besser mal noch alle Teach-Punkte als Variablen anlege). Ob ich das bei dieser Anlage noch umsetze weiß ich noch nicht, aber für die Zukunft stelle ich fest:
Grundsätzlich habe ich beim ABB immer die Freiheit genossen Teachpunkte nicht deklarieren zu müssen. Ich habe mich dagegen gewehrt RobTargets pauschal anzulegen und fortlaufend zu benennen, habe dies eigentlich nur dann getan wenn ich einen sinnvollen Nutzen darin gesehen habe, z.B. wenn ich mit Offset-Verschiebungen arbeiten wollte. Ich bin nach dieser Geschichte ehrlich gesagt geläutert. Wenn ich dran denke wie einfach und schnell und auf vielfältige Weise ich mir hätte helfen können wenn ich mit deklarierten RobTargets gearbeitet hätte könnt ich gut und gerne mal ein bisschen
Viele Grüße