20. März 2019, 19:08:53
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[gelöst] Zonendaten aus Werkobjekt


normal_post Autor Thema: [gelöst] Zonendaten aus Werkobjekt  (Gelesen 811 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

03. September 2018, 11:02:47
Gelesen 811 mal
Offline

yuminist


Guten Morgen Kollegen,
ich versuche über ein bestehendes Werkobjekt eine Zone zu legen.
Hintergrund ist dass ein Ausgang gesetzt bzw. zurückgesetzt werden soll sobald ein Arm (es wird ein IRB14000 genutzt) diese Zone betritt bzw. verlässt.
Die Idee dazu war nun, die Koordinaten bezogen auf die Basis (sofern ich das richtig im Kopf habe also wWobj.uframe.trans) als Koordinate für den ersten Punkt der Box zu nehmen und den zweiten dann mittels festgelegter Maße (bspw. 300x200x200) errechnen zu lassen.
Soweit die Theorie. Mein Code sieht nun folgendermaßen aus:
CONST num Box_X:=300;
CONST num Box_Y:=200;
CONST num Box_Z:=200;

VAR wzstationary wzWorldZone:=[0];
VAR shapedata shWorldZone;
VAR pos pFirstPoint:=wWorkingObject.uframe.trans;

!VAR pos pSecondPoint:=[wWorkingObject.uframe.trans.x+Box_X,wWorkingObject.uframe.trans.y+Box_Y,wWorkingObject.uframe.trans.z+Box_Z]
Ob die Berechnung in dem Auskommentierten so funktioniert, weiß ich noch nicht (aber das ist ja vorerst Nebensache)
Jetzt meckert RS dass es einen Deklarationsfehler gibt. "Ausdruck wWorkingobject ist kein konstanter Ausdruck."

Entweder stehe ich vollends auf dem Schlauch, oder ich mache etwas grundlegend falsch.
Das Arbeiten mit Weltzonen ist für mich noch recht neu und aus der Doku werde ich nicht so richtig schlau.
Fixe Werte möchte ich aber auch nicht zuweisen, da ich relativ flexibel bleiben muss.

Vielleicht hat jemand ein gutes Auge oder kann mir das Brett vor dem Kopf entfernen.

« Letzte Änderung: 04. September 2018, 07:46:47 von yuminist »
  • gefällt mir    Danke

Heute um 19:08:53
Antwort #1

Werbung

Gast

03. September 2018, 16:34:05
Antwort #1
Offline

Hermann


Da liegt ein prinzipieller Fehler vor.
Der Abschnitt direkt nach der Deklaration einer Routine enthält die VariablenDEKLARATIONEN (soll kein Schreien sein, dient nur der Verdeutlichung).
Danach kommt der Ausführungsteil, d.h. der Teil, der bei der Programmausführung dann jedesmal durchlaufen wird.
Du versuchst im Deklarationsteil eine Anweisung auszuführen. Das ist dann auch der Fall, wenn Du die letzte Zeile entkommentierst.
Sollte eher so aussehen:
CONST num Box_X:=300;
CONST num Box_Y:=200;
CONST num Box_Z:=200;

VAR wzstationary wzWorldZone:=[0];
VAR shapedata shWorldZone;
VAR pos pFirstPoint;
VAR pos pSecondPoint;
! Ende des Deklarationsteils (implizit, der endet mit der ersten Anweisung, damit beginnt dann der Anweisungsteil)
pSecondPoint:=[wWorkingObject.uframe.trans.x+Box_X,wWorkingObject.uframe.trans.y+Box_Y,wWorkingObject.uframe.trans.z+Box_Z]

pFirstPoint:=wWorkingObject.ufram.trans;
Edit: Innerhalb des Deklarationsteils dürfen nur konstante Ausdrücke stehen. Eine Zuweisung eines Werkobjekts ist nicht konstant, da dieses sich jederzeit ändern kann. Daher auch die Fehlermeldung.
« Letzte Änderung: 03. September 2018, 16:37:17 von Hermann »

04. September 2018, 07:46:03
Antwort #2
Offline

yuminist


Ah verdammt. Natürlich liegst du damit goldrichtig.
Manchmal übersieht man die eindeutigsten Dinge.

Vielen Dank das löste das Problem sofort.
  • gefällt mir    Danke


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