hmm ja aber ich denk mal, dass er da gemeint hat, wie der mit ENUM erstellte Datentyp heisst.
Ich habe keine Ahnung was für ein Datentyp das sein könnte. Ich könnte mir allerdings auch vorstellen, dass die ganze Zeile
als ein Befehl interpretiert wird und nicht als Funktion/Unterprogramm mit Parameter. In dem Fall würde der Befehl geparsed werden und es müsste gar nicht unbedingt einen entsprechenden Datentyp haben. Oder weiss jemand den Datentyp von C_DIS etc.?
Da der Parameter #TOOL und #BASE nur festlegt, in welchem Koordinatensystem bewegt werden soll, kann das auch anders gelöst werden. Wenn du das Bezugskoordinatensystem automatisch wechseln willst, kannst du das auch so ähnlich machen:
IF #TOOL THEN
WAIT SEC 0.0
LIN $POS_ACT:{X 50.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0}
ENDIF
IF #BASE THEN
WAIT SEC 0.0
LIN {X 50.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0}:$POS_ACT
ENDIF
Dieser Code ist aber nur das Selbe wie LIN_REL {} #BASE oder LIN_REL {} #TOOL solange nicht um A, B oder C gedreht wird. Denn LIN_REL {} #BASE dreht zwar nach der Baserichtung jedoch um den TCP statt das Base. Mit dem obigen Code wird, um das aktive Base (X, Y oder Z-Achse) gedreht.
Wenn auch die Winkel gedreht werden sollen, dann ist es ein wenig komplizierter:
;LIN_REL {x 50.0, C 22.5} #TOOL
WAIT SEC 0.0
LIN $POS_ACT:{X 50.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 22.5}
;LIN_REL {x 50.0, C 22.5} #BASE
WAIT SEC 0.0
bkpBase = $BASE
bkpPos = $POS_ACT
bkpPos = {X 50.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0}:bkpPos
$BASE.X = bkpPos.X
$BASE.Y = bkpPos.Y
$BASE.Z = bkpPos.Z
bkpPos.X = 0.0
bkpPos.Y = 0.0
bkpPos.Z = 0.0
LIN {X 0.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 22.5}:bkpPos
$BASE = bkpBase
Alles anzeigen