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
}