# Modulobehandlung der Achspositionen

Normalerweise werden die Positionen im MCS Koordinatensystem von der CNC linear behandelt d.h. es findet keine Modulokorrektur statt. Falls die Transformation die MCS Positionen im Modulointervall [-180° - +180°[ erwartet (z.B. für Shortest-Way Programmierung), kann dies in der Funktion TrafoSupported() über das Datum mcs_modulo eine Modulokorrektur für eine Achse im MCS-Koordinatensystem aktiviert werden.

p->mcs_modulo[i] | Bedeutung
EcCnc_McsModulo_None | Lineare MCS-Positionen, keine Modulorechnung für diese Achse
EcCnc_McsModulo_180_180 | Modulorechnung der MCS-Positionen für diese Achse im Intervall [-180°, +180°[.

Die berechneten ACS-Koordinaten müssen mit den Eigenschaften der Achsen übereinstimmen. Falls die Achse Modulopositionen verwendet müssen auch die ACS-Koordinaten in der Transformation eine Modulokorrektur durchgeführt werden. Im achsspezifischen Datum acs_modulo kann daher die in der Transformation verwendete Moduloeinstellung der CNC mitgeteilt werden. Die CNC prüft dann ob die Transformation zu den Achseigenschaften passt und generiert gegebenenfalls die Fehlermeldung P-ERR-50534.

p->acs_modulo[i] | Bedeutung
EcCnc_AcsModulo_None | Lineare ACS-Positionen, für diese Achse ist keine Modulbehandlung notwendig.
EcCnc_AcsModulo_180_180 | Für diese Achse ist eine Modulorechnung der ACS-Positionen im Intervall [-180°, +180°[ notwendig.
EcCnc_AcsModulo_0_360 | Für diese Achse ist eine Modulorechnung der ACS-Positionen im Intervall [0°, 360°[ notwendig.

## Programmierbeispiel

Modulobehandlung der Achspositionen

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

{

...

/* 3 Achsen lineare MCS-Positionen,
Modulobehandlung fuer die 4. Achse */

p->mcs_modulo[0] = EcCnc_McsModulo_None

p->mcs_modulo[1] = EcCnc_McsModulo_None

p->mcs_modulo[2] = EcCnc_McsModulo_None

p->mcs_modulo[3] = EcCnc_McsModulo_180_180

/* 2 Achsen lineare ACS Positionen,
Modulobehandlung fuer 2 Achsen */

p->acs_modulo[0] = EcCnc_AcsModulo_None

p->acs_modulo[1] = EcCnc_AcsModulo_180_180

p->acs_modulo[2] = EcCnc_AcsModulo_0_360

p->acs_modulo[3] = EcCnc_AcsModulo_None

}