Rotation sequence

When transformations are complete, the sequence of rotations executed about the 3 rotary axes can be defined to meet the requirements (see P-CHAN-00112). If this is required, the TcCOM transformation must also take this into consideration. Therefore, the current setting is transferred to the transformation in the p->actual_orientation_mode parameter. The rotation sequences supported in the transformation can be sent to the CNC in the data item p->supported_orientation_modes When the transformation is selected, the CNC checks the setting in P-CHAN-00112 for plausibility and generates the error message P-ERR-292045 if the transformation does not support the selected rotation sequence.

CNC --> TcCOM transformation:

p->actual_orientation_mode

Meaning

EcCncTrafoOri_None

No rotation

EcCncTrafoOri_YPR

Yaw-Pitch-Roll rotation sequence: 1st rotation about Z, 2nd negative rotation about Y, 3rd rotation about X

EcCncTrafoOri_CBC1

Euler rotation sequence: 1st rotation about Z, 2nd rotation about Y, 3rd rotation about Z‘

EcCncTrafoOri_CBA

1st rotation about Z, 2nd rotation about Y, 3rd rotation about X

EcCncTrafoOri_CAB

1st rotation about Z, 2nd rotation about X, 3rd rotation about Y

EcCncTrafoOri_AB

1st rotation about X, 2nd rotation about Y

EcCncTrafoOri_BA

1st rotation about Y, 2nd rotation about X

TcCOM transformation --> CNC:

p->supported_orientation_modes

Meaning

.f_YPR

= TRUE, transformation supports rotation sequence YPR

.f_CBC1

= TRUE, transformation supports rotation sequence CBC‘

.f_CBA

= TRUE, transformation supports rotation sequence CBA

.f_CAB

= TRUE, transformation supports rotation sequence CAB

.f_AB

= TRUE, transformation supports rotation sequence AB

.f_BA

= TRUE, transformation supports rotation sequence BA

By default, the CNC uses the setting EcCncTrafoOri_YPR (Yaw->Pitch->Roll). Accordingly, the data item p->supported_orientation_mode.f_YPR is set to the value TRUE by default.

Example

example

HRESULT <UserTrafo>::TrafoSupported(PTcCncTrafoParameter p, bool fwd)

{

  ...

  /* Transformation supports YPR and Euler rotation sequence. */

  p->supported_orientation_modes.f_YPR  = TRUE;

  p->supported_orientation_modes.f_CBC1 = TRUE;

  ...

  return S_OK;

}

HRESULT <UserTrafo>::Backward(PTcCncTrafoParameter p)

{

  …

  if (EcCncTrafoOri_CBC1 == p->actual_orientation_mode)

  {

/* Rotation sequence acc. to Euler active */  

  }

  else

  {

  ...

  }

  return S_OK;

}