d_count__preg_callback($matches) { return str_repeat('[td][/td]', $matches[2] - 1) . '[td]'; } ?> robtargets in RECORD nicht teachbar?! in ABB Roboter - Seite 1 of 1

ABB Roboterschulung von praxiserfahrenen Trainern
in unserem Schulungszentrum in Mainburg oder vor Ort bei Ihnen
Bediener und Expertenschulungen anfragen

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

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Joern_E

  • robtec GmbH
  • ROBTEC Mitarbeiter
  • Forum Mitglied LV 1
  • *
  • Beiträge: 26
  • Bewertet: +5
[gelöst] robtargets in RECORD nicht teachbar?!
« am: 04. Dezember 2018, 14:14:55 »
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: Heute um 13:34:00 von Joern_E »
  • finde ich gut    Danke, das hat mir geholfen    da stimmt was nicht
In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.


ABB Robotertraining
günstig und verständlich mit Zertifikat
ABB Roboterschulung

Offline Joern_E

  • robtec GmbH
  • ROBTEC Mitarbeiter
  • Forum Mitglied LV 1
  • *
  • Beiträge: 26
  • Bewertet: +5
Re: robtargets in RECORD nicht teachbar?!
« am: 04. Dezember 2018, 15:12:41 »
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 »
  • finde ich gut    Danke, das hat mir geholfen    da stimmt was nicht
In der Theorie sind Theorie und Praxis identisch. In der Praxis nicht.

 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Seite erstellt in 0.07 Sekunden mit 31 Abfragen.

Sitemap