17. Februar 2019, 15:03:31
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[gelöst] robtargets in RECORD nicht teachbar?!


normal_post Autor Thema: [gelöst] robtargets in RECORD nicht teachbar?!  (Gelesen 681 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

04. Dezember 2018, 14:14:55
Gelesen 681 mal
Offline

Joern_E

ROBTEC Mitarbeiter
Moin,

ich hab da ein kleines Problem mit einem RECORD. In dem RECORD stehen strings, robtargets und nums:

RECORD rTypes
  string    sName;
  robtarget rPosition;
  num       nWinkel;
  ...
ENDRECORD


Jetzt mach ich ein array davon, weil ich 32 rTypes habe:

CONST rTypes housingTypes{3} :=
[
  [
    "Gehaeusetyp 1",
    [[0,0,0],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]],
    0.0
  ], [
    "Gehaeusetyp 2",
    [[0,0,0],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]],
    0.0
  ], [
    ...
  ]
];


Im Programm sollen nun rPosition und nWinkel geändert werden.

  VAR num nTypeToTeach;
 
  PROC TeachPos()
   
    TPReadNum nTypToTeach, "Welcher Typ?";
   
    moveJ housingTypes{nTypeToTeach}.rPosition, v100, fine, tGripper, \WObj:=wBST;
    housingTypes{nTypeToTeach}.nWinkel := giWinkel;
   
  ENDPROC


Dann meckert RobotStudio aber (berechtigterweise), daß housingTypes{...}.nWinkel schreibgeschützt ist. Also hab ich die Instanz von CONST auf PERS geändert, d.h.

PERS rTypes housingTypes{3} :=
[
  ...
];

Wenn ich in der PROC TeachPos nun die Position housingTypes{nTypeToTeach}.rPosition markiere und korrigieren will, bekomme ich ein Auswahlfenster:

Datenfeldname: housingTypes{3}

Auf das Element tippen, das bearbeitet werden soll.

------------------------------------------------------------
Element     Wert
{1}         ["Gehaeusetyp 1", [...], 0.0]
{2}         ["Gehaeusetyp 2", [...], 0.0]
{3}         ...
------------------------------------------------------------
                                                 Schließen

Ich tippe auf das Element, aber Bearbeiten lässt sich da nichts. Es gibt nur "Schließen" als Auswahl. Zuletzt hab ich es 'unschön' probiert:

  VAR  num       nTypeToTeach;
  PERS robtarget rTargetToTeach;
 
  PROC TeachPos()
   
    TPReadNum nTypToTeach, "Welcher Typ?";
   
    rTargetToTeach := housingTypes{nTypeToTeach}.rPosition;
    moveJ rTargetToTeach, v100, fine, tGripper, \WObj:=wBST;
    housingTypes{nTypeToTeach}.rPosition := rTargetToTeach;
    housingTypes{nTypeToTeach}.nWinkel := giWinkel;
 
  ENDPROC

Die Position wird (korrekt) aus dem RECORD geladen. Wenn ich sie dann das robtarget in der moveJ-Zeile per "Position korrigieren" ändern möchte (unabhängig davon, ob im Programmfenster oder über die Programmdaten) poppt ein Fenster auf:

Fehler beim Ändern der Position
Position kann nicht geändert werden.

Ähhh ... Hilfe?! :D

Gruß
Jörn
« Letzte Änderung: 17. Dezember 2018, 13:34:00 von Joern_E »
  • gefällt mir    Danke
In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.

Heute um 15:03:31
Antwort #1

Werbung

Gast

04. Dezember 2018, 15:12:41
Antwort #1
Offline

Joern_E

ROBTEC Mitarbeiter
So funktioniert es, aber auch nur so! Man braucht ein PERS robtarget als Zwischenspeicher und muss es initialisieren (wohl, damit der persistente Zahlenwert irgendwo gespeichert werden kann).

 VAR  num       nTypeToTeach;
  PERS robtarget rTargetToTeach := [[0,0,0],[1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
  
  PROC TeachPos()
    
    TPReadNum nTypeToTeach, "Welcher Typ?";
    
    rTargetToTeach := housingTypes{nTypeToTeach}.rPosition;
    moveJ rTargetToTeach, v100, fine, tGripper, \WObj:=wBST;
    housingTypes{nTypeToTeach}.rPosition := rTargetToTeach;
    housingTypes{nTypeToTeach}.nWinkel := giWinkel;
    
  ENDPROC


Das ist insgesamt "eher umständlich" und sieht außerdem "nicht so schön" aus. Falls es jemand eleganter kann, d.h. ohne Umweg über einen Zwischenspeicher, dann immer her damit. :)

Gruß
Jörn
« Letzte Änderung: 04. Dezember 2018, 15:16:41 von Joern_E »
  • gefällt mir    Danke
In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH