Sooo ... an meiner Station wird gerade eine Ausrichteinheit versetzt, deswegen hatte ich ein bissl Zeit. Derweil hab ich mir das Teachen von robtargets in Arrays und Records angeschaut.
Gruß
Jörn
<snip>
RECORD recTestRobtargets
robtarget numberOne;
robtarget numberTwo;
ENDRECORD
PERS recTestRobtargets robtargetRecordTest{2} :=
[
[
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]
], [
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]
]
];
PERS robtarget robtargetArrayTest{2} :=
[
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[0,0,0],[1,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]
];
PERS robtarget rBuffer := [[0,0,0],[1,0,0,0],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
<snap>
<snip>
! So kann das robtarget geteached werden, indem man das komplette MoveL oder
! auch nur das robtargetArrayTest{1} markiert und "Position korrigieren"
! antippt.
MoveL robtargetArrayTest{1}, v10, fine, tGripper;
! Mit dieser Schreibweise kann das robtarget dann geteached werden, wenn man
! nur das robtargetArrayTest{nTypeToTeach} markiert und "Position korrigieren"
! antippt. Das Panel fragt dann nach dem Index des Array-Elementes, das
! geändert werden soll.
nTypeToTeach := 2;
MoveL robtargetArrayTest{nTypeToTeach}, v10, fine, tGripper;
! So kann das robtarget nicht geändert werden. Wenn man nur das
! robtargetArrayTest{nTypeToTeach}.numberOne markiert und "Position
! korrigieren" antippt fragt das Panel zwar nach dem Index, es wird aber
! nur die Schaltfläche "Schließen" angezeigt. Einen Index kann man nicht
! auswählen.
MoveL robtargetRecordTest{1}.numberOne , v10, fine, tGripper;
! Genau wie zuvor. Ein robtarget in einem RECORD kann man weder direkt noch
! indirekt teachen ...
nTypeToTeach := 2;
MoveL robtargetRecordTest{nTypeToTeach}.numberOne , v10, fine, tGripper;
! ... man muss den Umweg über einen Puffer gehen. Hier funktioniert es dann aber
! wieder wie im ersten Fall. Das komplette MoveL oder nur rBuffer markieren, usw..
! Man darf nur nicht vergessen die nächste Zeile mit der Zuweisung auszuführen,
! sonst steht die geänderte Position anschließend nicht in robtargetRecordTest{nTypeToTeach}.numberTwo
! Zudem muss der Puffer als PERS deklariert und mit Wertzuweisung vorhanden sein.
! Siehe dazu auch voriges Posting.
nTypeToTeach := 2;
rBuffer := robtargetRecordTest{nTypeToTeach}.numberTwo;
MoveL rBuffer, v10, fine, tGripper;
robtargetRecordTest{nTypeToTeach}.numberTwo := rBuffer;
<snap>