Schwenkzyklus selbst gebaut – Rotationsmatrizen im NC-Makro
Eigener Schwenkzyklus ohne G68.2 oder PLANE SPATIAL: Nullpunkte per Makrovariablen auslesen und die Verschiebung mit Rotationsmatrizen berechnen.
Auf Maschinen, auf denen nachträglich ein Schwenktisch montiert wurde, ist steuerungsseitig oft kein Schwenkzyklus wie G68.2 oder PLANE SPATIAL verfügbar. Das macht es erforderlich, für jede Schwenkung manuell einen Nullpunkt anzutasten und in die Offsettabelle einzutragen. Dieses Vorgehen ist umständlich und fehleranfällig: Einrichtzeit und Ausschussquote steigen, da z. B. bei einem schrägen Winkel eine Korrektur erst nach der Bearbeitung vorgenommen werden kann.
Ein eigener Schwenkzyklus lässt sich jedoch mit Bordmitteln der Steuerung aufbauen – mit Makrovariablen und etwas linearer Algebra.
Ablauf
Für die Berechnung des Nullpunktes nach der Schwenkung werden einige Informationen benötigt, damit anschliessend mithilfe der linearen Algebra die neue Position berechnet werden kann.
Der Ablauf sieht wie folgt aus:
- Aktiven Werkstück-Nullpunkt (Nullpunktverschiebung in Maschinenkoordinaten) auslesen
- Rotationszentrum der Schwenkeinrichtung bestimmen
- Berechnen der Position des Teilenullpunktes in Bezug auf das Drehzentrum der Rotationsachsen
- Berechnen der Position nach der Schwenkung in Bezug auf das Drehzentrum der Rotationsachsen
- Berechnen der neuen Position in Bezug auf den Maschinennullpunkt
- Schreiben der neuen Position als Teilenullpunkt
- Aktivieren des neuen Teilenullpunktes
Teilenullpunkt relativ zum Drehzentrum
Zuerst wird der Teilenullpunkt auf das Drehzentrum der Rotationsachsen bezogen:
{PUNKT_X} = {TEILENULLPUNKT_X} - {ROTATIONSPUNKT_X}
{PUNKT_Y} = {TEILENULLPUNKT_Y} - {ROTATIONSPUNKT_Y}
{PUNKT_Z} = {TEILENULLPUNKT_Z} - {ROTATIONSPUNKT_Z}
Im Beispiel wird für die Position des Rotationszentrums ein beliebiger Wert verwendet. Sie müssen aber zwingend das genaue Rotationszentrum ermitteln, um die maximal mögliche Genauigkeit zu erreichen.
Adaptiert in Fanuc-Makrosprache:
#21 = #5221 - [-200.5] (X)
#22 = #5222 - 333.56 (Y)
#23 = #5223 - 123.54 (Z)Die Variablen #5221, #5222 und #5223 enthalten die entsprechenden Werte aus der Offsettabelle für den Nullpunkt G54.
Das Auslesen lässt sich auch parametrisieren: Übergibt man die Nummer der Nullpunktverschiebung (54–59) in #11, kann die Adresse der jeweiligen Offsetvariablen berechnet werden:
#21 = #[5221 + [[#11 - 54] * 20]] (X-WERT)
#22 = #[5222 + [[#11 - 54] * 20]] (Y-WERT)
#23 = #[5223 + [[#11 - 54] * 20]] (Z-WERT)Rotation um die C-Achse
Die Rotation um die Z-Achse (Achse C) kann durch die folgende Matrix ausgedrückt werden:
Adaptiert in Fanuc-Makrosprache – #3 enthält den Drehwinkel, #4 bis #6 die Koordinaten des Punktes vor der Drehung:
#14 = [#4 * COS[#3]] - [#5 * SIN[#3]] (X)
#15 = [#5 * COS[#3]] + [#4 * SIN[#3]] (Y)
#16 = #6 (Z)Rotation um die B-Achse
Die Rotation um die Y-Achse (Achse B) wird analog durch diese Matrix beschrieben:
Dabei sind θ und φ die Rotationswinkel um die Y- bzw. Z-Achse.
Kombinierte Rotationsmatrix
Die kombinierte Rotation um beide Achsen ergibt sich aus der Matrixmultiplikation der beiden Einzelrotationen:
Diese kombinierte Rotationsmatrix wird auf den Punkt P′ angewendet – also auf den zuvor berechneten Teilenullpunkt relativ zum Drehzentrum:
Hierbei ist P″ der Punkt nach der Rotation.
Das Vorzeichen der Winkel hängt davon ab, ob die Drehachse den Tisch oder das Werkzeug trägt (vgl. ISO 841). Vor dem produktiven Einsatz mit einer einzelnen, bekannten Drehung testen – ein falsches Vorzeichen verschiebt den Nullpunkt in die falsche Richtung.
Damit sind die mathematischen Grundlagen komplett. Das Zurückschreiben der berechneten Verschiebung in die Nullpunkttabelle sowie ein vollständiges Makro-Listing folgen in einem Update dieses Artikels.