Transformation stack (#TRAFO STACK)

The #TRAFO STACK command permits the use of a specific transformation stack that is preconfigured in the channel parameters. [CHAN// Transformation stack parameters]. This allows you to create machine-specific combinations of Cartesian and kinematic transformations independently from the NC program. The #TRAFO STACK command therefore combines #TRAFO and several #(A|B)CS commands into a compact command.

Alternatively, coordinate systems (#CS/ #ACS/ #BCS) and a kinematic transformation can be grouped in the NC program.

It is possible to assign a group name and to activate and deactivate all group elements at the same time.

Transformations are additional options and subject to the purchase of a license.

Syntax for Select a stored or configured stack:

#TRAFO STACK ON [NAME=<StackName>]

Syntax for Store/save a stack:

#TRAFO STACK DEF [NAME=<StackName> [KINSTEP1=<KinId>] [KINSTEP2=<KinId>]

                                         {ID=<Ident> GRP=<GrpId> [IDX=..] } ]

NAME=<StackName>

Configured or new name of the stack

KINSTEP1=<KinId>

Configured or new kinematic ID of the first step

KINSTEP2=<KinId>

Configured or new kinematic ID of the second step

 

Triplets to define Cartesian transformation groups, comprising:

ID=<Ident>

Name of the coordinate system. The ID must be defined in P-CHAN-00490.

GRP=<GrpId>

Group assignment of the coordinate system. Permitted parameters:

CS: #CS machining coordinate system

ACS: #ACS coordinate system

BCS: #BCS basic coordinate system

IDX=..

Optional, index or position within the specified group. Without a specified index, the next free index within the group is assigned.

10 triplets can be programmed. However, only a maximum of 5 per group.

Syntax for Deselect all Cartesian and kinematic transformations:

#TRAFO STACK OFF

The #TRAFO STACK ON [..] command deactivates all currently active Cartesian and kinematic transformations and activates all Cartesian and kinematic transformations assigned to this stack name.

If a transformation stack contains no kinematic transformation, previously active kinematic transformation are disabled.

At program start, all stacks are reset as defined by the parameters in the channels(P-CHAN-00752 to P-CHAN-00756).

After a transformation stack is activated, the activated transformation can still be changed by #TRAFO and #(A|B)CS.

The P-CHAN-00757 parameter automatically activates a transformation stack at program start.

Programming Example

Defining and using a stack in NC program 1

All the CS IDs must already be defined in the channel parameter list.

%100
;channel 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]
;transformation stack (from bottom to top):
;[0,0,0] = CS test1
;[0,0,0] = ACS test1
;[0,0,0] = BCS test1
:

Defining and using a stack in NC program 2

If CS IDs are not yet used in the program, they can be redefined.

%101
;channel parameter: 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] ;redefinition of test1 applies only to #CS
#TRAFO STACK ON [NAME=STACK1]
;transformation stack (from bottom to top):
;[1,10,3] = CS test1
;[0, 0,0] = ACS test1
;[0, 0,0] = BCS test1
;KIN1
:

Defining and using a stack in NC program 3

Up to 5 CS can be assigned to a group but the group must be explicitly specified for each ID.

%102
;channel parameter: test1 [0,0,0]
;channel parameter: test2 [10,10,10]
#TRAFO STACK DEF [NAME=STACK1 \
                  GRP=CS ID=test1 \
                  GRP=CS ID=test2 ]
#TRAFO STACK ON [NAME=STACK1]
;transformation stack (from bottom to top):
;[10,10,10] = CS test2
;[ 0, 0, 0] = CS test1
:

Using several stacks in the NC program

Up to 5 stacks can be defined in the channel.

%103
;channel parameter 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]
;transformation stack (from bottom to top):
;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]
;transformation stack (from bottom to top):
;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]
: