A channel of a multi-channel machine can switch a kinematic transformation on and off from the part program, Siemens style (SINUMERIK function manual "Transformations"). This is an addition to the switchable kinematics of LinuxCNC ([cha:switchable-kinematics], G12.1): the transformation sits between a channel’s pose and its joints, so every channel has its own, and the data come from the INI file of the channel. A single-channel machine keeps using switchkins.

The transformations

TRAORI, TRAORI(n)

Orientation transformation for a milling head on a swivel axis: the program gives the position of the tool centre point and the swivel angle (or an orientation vector), the control compensates the linear axes so that the tip stays where it is programmed while the head swivels. The tool length offset (G43) of the tool table is part of the tool vector and swivels with the head.

TRANSMIT, TRANSMIT(n)

Face transformation of a turning centre: the program writes Cartesian X/Y on the face of the part, the control moves the radial linear axis and the workpiece rotary axis (C). The pole side is configurable (POLE_SIDE 0 through the pole, 1 in front, 2 behind); near the pole the feed is reduced so that the rotary axis stays within its velocity limit.

TRACYL(d), TRACYL(d, n)

Cylinder surface transformation: Y is the unrolled coordinate on the cylinder of diameter d over the rotary axis. The groove side offset (k) is not supported.

TRAFOOF

Transformation off. Selecting another transformation switches.

The statements are read-ahead stops: the position is read back in the new coordinates once motion switched. Reset and program end keep the transformation (Siemens TRAFO_RESET_VALUE behaviour "stay"). Cutter radius compensation must be off when selecting.

Data sets in the INI file

Up to 6 data sets per channel under [CHANNEL_n] ([CHANNEL_0] for channel 0), k = 1.. is the number given in the statement; the axes are named with their machine axis names.

[CHANNEL_2]
; TRAORI: the B axis (about machine Y, mathematically positive) swivels the head
; in the X3/Z3 plane; at B = 0 the tool points down (-X3), its tip 230 mm below
; the pivot, so TCS -Z is machine -X3
TRAORI_1_BASE_TOOL = -230 0 0   ; pivot -> gauge point at B = 0 (channel axes X Y Z)
TRAORI_1_ROT_AXIS = B           ; the swivel axis (machine axis name)
TRAORI_1_ROT_DIR = 0 1 0        ; direction of the rotation axis
TRAORI_1_ROT_SIGN = 1           ; -1 when the axis turns clockwise
TRAORI_1_ROT_OFFSET = 0         ; swivel position of the base orientation
; TRANSMIT / TRACYL on the main spindle (GET(C1) first)
TRANSMIT_1_LINEAR = X3          ; radial axis
TRANSMIT_1_ROT = C1             ; the rotary axis (must be in the channel)
TRANSMIT_1_LONG = Z3            ; axis parallel to the rotary axis (unchanged)
TRANSMIT_1_VIRTUAL = Y          ; the virtual axis (default Y)
TRANSMIT_1_POLE_SIDE = 1
TRACYL_1_ROT = C1
TRACYL_1_LINEAR = X3            ; radial infeed (unchanged)
TRACYL_1_LONG = Z3

The data sets are handed to motion at start-up so that the TCS jog knows the tool axis before any program selected a transformation.

Maths (for integrators)

With t = BASE_TOOL minus the tool length offset in force, a = ROT_DIR, θ = ROT_SIGN · (B - ROT_OFFSET) and the rotation R(θ) about a: TRAORI gives TCP = J - t + R·t for the joints J (inverse: J = P + t - R·t); TRANSMIT computes r = √(X²+Y²), φ = atan2(Y, X) with a continuous rotary axis; TRACYL maps Y to the rotary axis by Y·360/(π·d). The real joint behind a virtual axis holds its position; the status pose shows the machine value of the rotary axis that a transformation drives.

Orientation vectors A3, B3, C3

With TRAORI in force a block may give the tool orientation as a vector instead of the swivel angle: A3= B3= C3= are the components of the direction from the tool tip into the tool (machine axes, Siemens ORIMKS). The interpreter turns the vector into the swivel axis word of the block; an orientation that the single rotary axis cannot reach (a component along the rotation axis that differs from the base orientation), the zero vector and orientation words without TRAORI are errors. With a swivel axis about Y and a tool pointing -Z at B = 0, G0 A3=1 C3=0 sets B90, G0 C3=1 sets B0. Euler angles (A2/B2/C2) are not supported.

TCS: jogging in the tool coordinate system

The TCS key of the machine control panel (command.set_tcs(on), status tcs, HAL motion.N.tcs) switches the jog of a channel >= 1 into the tool coordinate system: the Z key moves along the tool axis of the (possibly swivelled) head, X along the swivel axis, Y perpendicular to both. The frame comes from the channel’s TRAORI data set (no TRAORI needs to be selected); when the swivel axis moves while jogging the frame is set up again. Without a TRAORI data set TCS is the machine system. The position table of mchmi reads "TCS" while it is on.

Status

Channel status and stat.trafo_type (0 off, 1 TRAORI, 2 TRANSMIT, 3 TRACYL), trafo_num, trafo_d, tcs; HAL motion.N.trafo-type, motion.N.tcs. mchmi shows the transformation at the position table ("MKS TRAORI") and with its data set in the G functions window.

Example (G200 milling head)

TRAORI                      (channel 2, data set 1)
G0 X3=0 Y-60 Z3=5 B0
G1 B45 F500                 (the head swivels, the tip stays)
G1 A3=0.707 B3=0 C3=0.707   (the same orientation given as a vector)
G1 Z3=-20                   (machining with the swivelled head: tip coordinates)
TRAFOOF