Drehreihenfolge

Bei vollständigen Transformationen kann die Reihenfolge der ausgeführten Rotationen um die 3 Drehachsen beliebig festgelegt werden (s. P-CHAN-00112). Falls dies gewünscht ist, muss dies auch die TcCOM-Transformation berücksichtigen. Die aktuelle Einstellung wird der Transformation daher im Parameter p->actual_orientation_mode übergeben. Die in der Transformation unterstützten Drehsequenzen können der CNC im Datum p->supported_orientation_modes bei Aufruf der Funktion TrafoSupported() mitgeteilt werden. Bei angewählter Transformation prüft die CNC die Einstellung in P-CHAN-00112 auf Plausibilität und generiert die Fehlermeldung P-ERR-292045 falls die gewählte Rotationsreihenfolge von der Transformation nicht unterstützt wird.

CNC --> TcCOM-Transformation:

p->actual_orientation_mode

Bedeutung

EcCncTrafoOri_None

Keine Rotation

EcCncTrafoOri_YPR

Yaw-Pitch-Roll Rotationsreihenfolge: 1. Drehung um Z, 2. Drehung negativ um Y, 3. Drehung um X

EcCncTrafoOri_CBC1

Euler Rotationsreihenfolge: 1. Drehung um Z, 2. Drehung um Y, 3. Drehung um Z‘

EcCncTrafoOri_CBA

1. Drehung im Z, 2. Drehung um Y, 3. Drehung um X

EcCncTrafoOri_CAB

1. Drehung um Z, 2. Drehung um X, 3. Drehung um Y

EcCncTrafoOri_AB

1. Drehung um X, 2. Drehung um Y

EcCncTrafoOri_BA

1. Drehung um Y, 2. Drehung um X

TcCOM-Transformation --> CNC:

p->supported_orientation_modes

Bedeutung

.f_YPR

= TRUE, Trafo unterstützt Drehreihenfolge YPR

.f_CBC1

= TRUE, Trafo unterstützt Drehreihenfolge CBC‘

.f_CBA

= TRUE, Trafo unterstützt Drehreihenfolge CBA

.f_CAB

= TRUE, Trafo unterstützt Drehreihenfolge CAB

.f_AB

= TRUE, Trafo unterstützt Drehreihenfolge AB

.f_BA

= TRUE, Trafo unterstützt Drehreihenfolge BA

Standardmäßig verwendet die CNC die Einstellung EcCncTrafoOri_YPR (Yaw->Pitch->Roll), entsprechend ist das Datum p->supported_orientation_mode.f_YPR standardmäßig auf den Wert TRUE gesetzt.

Beispiel

example

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

{

  ...

  /* Transformation unterstuetzt YPR und Euler Drehreihenfolge. */

  p->supported_orientation_modes.f_YPR  = TRUE;

  p->supported_orientaiton_modes.f_CBC1 = TRUE;

  ...

  return S_OK;

}

HRESULT <UserTrafo>::Backward(PTcCncTrafoParameter p)

{

  …

  if (EcCncTrafoOri_CBC1 == p->actual_orientation_mode)

  {

/* Drehreihenfolge nach Euler aktiv */  

  }

  else

  {

  ...

  }

  return S_OK;

}