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
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;
}