Moins,
muß nochmal klugscheißen

Ich denke, man sollte so wenig wie möglich/nötig mit globalen (und auch persistenten) Daten arbeiten,
weil globale Daten einfach schlechter zu warten sind. Wenn man irgendwo dran dreht, fängt man sich u.U.
Probleme an einer anderen Stelle ein und merkt das dann aber erst später...
Ist nur meine Meinung und vielleicht auch ein wenig Geschmacksache. (Will hier auch keine Diskussion darüber lostreten)
Also um das wirklich wiederverwendbar zu machen, sollte man das in eine (allgemeingültigere)
Routine verpacken, die man dann in einer eigenen Bibliothek (=Sysmodule) pflegt.
z.B. so (für
RWare5.x):
! nJoint: Nummer der zu drehenden (Rob-)Achse
! nDeltaAngle: rel. Drehung der Achse in Grad
PROC RotJoint(\switch Conc, \IDENTNO ID, \switch NoEOffs, NUM nJoint, NUM nDeltaAngle, SPEEDDATA Speed, \NUM V | NUM T, ZONEDATA Zone, \NUM Z, \STOPPOINTDATA Inpos, PERS TOOLDATA Tool, \PERS WOBJDATA WObj)
VAR JOINTTARGET jtCurrent;
jtCurrent := CJointT();
TEST nJoint
CASE 1 : jtCurrent.robax.rax_1 := jtCurrent.robax.rax_1 + nDeltaAngle;
CASE 2 : jtCurrent.robax.rax_2 := jtCurrent.robax.rax_2 + nDeltaAngle;
CASE 3 : jtCurrent.robax.rax_3 := jtCurrent.robax.rax_3 + nDeltaAngle;
CASE 4 : jtCurrent.robax.rax_4 := jtCurrent.robax.rax_4 + nDeltaAngle;
CASE 5 : jtCurrent.robax.rax_5 := jtCurrent.robax.rax_5 + nDeltaAngle;
CASE 6 : jtCurrent.robax.rax_6 := jtCurrent.robax.rax_6 + nDeltaAngle;
DEFAULT: RETURN;
ENDTEST
MoveAbsJ \Conc?Conc, jtCurrent, \ID?ID, \NoEOffs?NoEOffs, vSpeed, \V?V \T?T, Zone, \Z?Z, \Inpos?Inpos, Tool, \WObj?WObj;
ENDPROC
bzw. für
RWare4.x (ohne ID):
! nJoint: Nummer der zu drehenden (Rob-)Achse
! nDeltaAngle: rel. Drehung der Achse in Grad
PROC RotJoint(\switch Conc, \switch NoEOffs, NUM nJoint, NUM nDeltaAngle, SPEEDDATA Speed, \NUM V | NUM T, ZONEDATA Zone, \NUM Z, \STOPPOINTDATA Inpos, PERS TOOLDATA Tool, \PERS WOBJDATA WObj)
VAR JOINTTARGET jtCurrent;
jtCurrent := CJointT();
TEST nJoint
CASE 1 : jtCurrent.robax.rax_1 := jtCurrent.robax.rax_1 + nDeltaAngle;
CASE 2 : jtCurrent.robax.rax_2 := jtCurrent.robax.rax_2 + nDeltaAngle;
CASE 3 : jtCurrent.robax.rax_3 := jtCurrent.robax.rax_3 + nDeltaAngle;
CASE 4 : jtCurrent.robax.rax_4 := jtCurrent.robax.rax_4 + nDeltaAngle;
CASE 5 : jtCurrent.robax.rax_5 := jtCurrent.robax.rax_5 + nDeltaAngle;
CASE 6 : jtCurrent.robax.rax_6 := jtCurrent.robax.rax_6 + nDeltaAngle;
DEFAULT: RETURN;
ENDTEST
MoveAbsJ \Conc?Conc, jtCurrent, \NoEOffs?NoEOffs, Speed, \V?V \T?T, Zone, \Z?Z, \Inpos?Inpos, Tool, \WObj?WObj;
ENDPROC
Aufrufen dann z.B.: so
RotJoint 6, 180, v100, z0, tgreifer1, \WObj:=woMuster;
Hab's jetzt nicht explizit getestet, sollte aber so gehen...
Schönen Tach noch