# Transformationsstack (#TRAFO STACK)

Der Befehl #TRAFO STACK ermöglicht die Verwendung eines festgelegten Transformationsstacks, der in den Kanalparametern vorkonfiguriert wurde. [CHAN// Parameter der Transformationsstacks]. Dadurch können unabhängig vom NC-Programm maschinenspezifische Gruppierungen von kartesischen und kinematischen Transformationen angelegt werden. Der Befehl #TRAFO STACK kombiniert also #TRAFO und mehrere #(A|B)CS Befehle in einem kompakten Befehl.

Alternativ kann das Gruppieren von Koordinatensystemen (#CS/ #ACS/ #BCS) und kinematischer Transformation auch im NC-Programm erfolgen.

Die Vergabe eines Gruppennamens ist ebenso möglich wie das gleichzeitige Aktivieren und Deaktivieren aller Gruppenelemente.

## Hinweis

Transformationen sind eine lizenzpflichtige Zusatzoption.

Syntax Anwahl eines gespeicherten bzw. konfigurierten Stacks:
#TRAFO STACK ON [NAME=<StackName>]

Syntax Speichern / Überschreiben eines Stacks:
#TRAFO STACK DEF [NAME=<StackName> [KINSTEP1=<KinId>] [KINSTEP2=<KinId>] {ID=<Ident> GRP=<GrpId> [IDX=..] } ]

NAME=<StackName> | Konfigurierter oder neuer Name des Stacks
KINSTEP1=<KinId> | Konfigurierte oder neue Kinematik-ID der ersten Stufe
KINSTEP2=<KinId> | Konfigurierte oder neue Kinematik-ID der zweiten Stufe
Triplets zur Definition kartesischer Transformationsgruppen, bestehend aus:
ID=<Ident> | Name des Koordinatensystems. Die ID muss in P-CHAN-00490 definiert sein.
GRP=<GrpId> | Gruppeneinordnung des Koordinatensystems. Zulässige Angaben: CS: #CS-Bearbeitungskoordinatensystem ACS: #ACS-Koordinatensystem BCS: #BCS-Basiskoordinatensystem
IDX=.. | Optional, Index bzw. Platz innerhalb der angegebenen Gruppe. Ohne Indexangabe wird der nächste freie Index innerhalb der Gruppe belegt. Es können 10 Triplets programmiert werden. Jedoch nur maximal 5 je Gruppe.

Syntax Abwählen aller aktiven kartesischen und kinematischen Transformationen:
#TRAFO STACK OFF

Der Befehl #TRAFO STACK ON [..] deaktiviert alle aktuell aktiven kartesischen und kinematischen Transformationen und aktiviert alle, diesem Stacknamen zugeteilten, kartesischen und kinematischen Transformationen.

Enthält ein Transformationsstack keine kinematische Transformation, so werden vorher aktive kinematische Transformationen abgeschaltet.

Bei Programmstart werden alle Stacks, gemäß der Parametrierung im Kanal ( P-CHAN-00752 bis P-CHAN-00756 ) , zurückgesetzt.

Nach aktivieren eines Transformationsstack können die aktivierten Transformationen mit #TRAFO und #(A|B)CS weiterhin verändert werden.

Mit P-CHAN-00757 kann ein Transformationsstack bereits bei Programmstart automatisch aktiviert werden.

## Programmierbeispiel

Definieren und verwenden eines Stacks im NC-Programm 1

Die CS-IDs müssen alle bereits in der Kanalparameterliste definiert sein.

%100

;Kanal test1 [0,0,0]

#TRAFO STACK DEF [NAME=STACK1 \

GRP=CS ID=test1 \

GRP=ACS ID=test1 \

GRP=BCS ID=test1 ]

#TRAFO STACK ON [NAME=STACK1]

;Transformationsstack (von unten nach oben):

;[0,0,0] = CS-test1

;[0,0,0] = ACS-test1

;[0,0,0] = BCS-test1

:

Definieren und verwenden eines Stacks im NC-Programm 2

Sofern CS-IDs noch nicht im Programm verwendet wurden, ist es möglich, diese neu zu definieren.

%101

;Kanalparameter: test1 [0,0,0]

#TRAFO STACK DEF [NAME=STACK1 KINSTEP1=KIN1 \

GRP=CS ID=test1 \

GRP=ACS ID=test1 \

GRP=BCS ID=test1 ]

#CS DEF [test1][1,10,3] ;Neudefinition test1 gilt nur für #CS

#TRAFO STACK ON [NAME=STACK1]

;Transformationsstack (von unten nach oben):

;[1,10,3] = CS-test1

;[0, 0,0] = ACS-test1

;[0, 0,0] = BCS-test1

;KIN1

:

Definieren und verwenden eines Stacks im NC-Programm 3

Bis zu 5 CS können einer Gruppe zugewiesen werden, zu jeder ID muss die Gruppe aber explizit angegeben werden.

%102

;Kanalparameter: test1 [0,0,0]

;Kanalparameter: test2 [10,10,10]

#TRAFO STACK DEF [NAME=STACK1 \

GRP=CS ID=test1 \

GRP=CS ID=test2 ]

#TRAFO STACK ON [NAME=STACK1]

;Transformationsstack (von unten nach oben):

;[10,10,10] = CS-test2

;[ 0, 0, 0] = CS-test1

:

Verwenden mehrerer Stacks im NC-Programm

Bis zu 5 Stacks können im Kanal definiert sein.

%103

;Kanalparameter CS:

;basis [100,10,90]

;boffs [ 0, 0, 0]

;aufsp [ 10,10,10]

;aoffs [ 0, 0, 0]

;werks [ 0, 0, 0]

;trafo_stack[0].name acs

;trafo_stack[2].name worko

;trafo_stack[2].kin[0] KIN1

;trafo_stack[2].bcs.id[0] basis

;trafo_stack[2].bcs.id[1] boffs

;trafo_stack[2].acs.id[0] aufsp

;trafo_stack[2].acs.id[1] aoffs

;trafo_stack[2].cs.id[0] werks

;trafo_stack[3].name work

;trafo_stack[3].kin[0] KIN1

;trafo_stack[3].bcs.id[0] basis

;trafo_stack[3].acs.id[0] aufsp

#TRAFO STACK ON [NAME=work]

;Transformationsstack (von unten nach oben):

;aufsp [ 10,10,10]

;basis [100,10,90]

;KIN1

:

#TRAFO STACK OFF

#BCS DEF [boffs] [0.01, -0.05, 0.1]

#ACS DEF [aoffs] [-0.03, -0.02, 0.0]

#TRAFO STACK ON [NAME=worko]

;Transformationsstack (von unten nach oben):

;aoffs [-0.03, -0.02, 0.0]

;aufsp [ 10,10,10]

;boffs [0.01, -0.05, 0.1]

;basis [100,10,90]

;KIN1

:

#TRAFO STACK OFF

#TRAFO STACK ON [NAME=acs]

: