Zyklen als globale Unterprogramme (Aufruf L CYCLE)
Zyklen stehen im NC-Kern in der Form globaler Unterprogramme zur Verfügung und ermöglichen spezielle Bearbeitungsvorgänge wie zum Beispiel das Tieflochbohren oder das Taschenfräsen. Die im Zyklus definierte Bearbeitungsaufgabe ist in allgemeiner Form geschrieben. Die Datenversorgung erfolgt beim Zyklusaufruf mit der Belegung der Versorgungsparameter.
Ein Zyklus ist unabhängig von der aktuell gültigen Ebene (G17, G18, G19) und unabhängig von den im NC-Kanal konfigurierten Achsnamen programmiert. Lediglich die Richtung, aus der die Bearbeitung in der aktuellen Ebene durchgeführt werden soll, muß beim Zyklusaufruf angegeben werden. Im Zyklus kann auf eine eigene gekapselte Gruppe von Parametern zugegriffen werden. Diese werden beim Zyklusaufruf mit Werten belegt.
Hierzu steht eine spezielle Syntax zur Verfügung, die durch das „@“-Zeichen charakterisiert ist. Dieses Zeichen wird in der Zyklenprogrammierung verwendet in Verbindung mit:
@Pxx Versorgungsparameter im Zyklusaufruf und Zyklus
@X, @Y, @Z Hauptachsen im Zyklus
@I, @J, @K Mittelpunktskoordinaten im Zyklus
@S Hauptspindel im Zyklus
Der Zyklusaufruf muss in einem eigenen NC-Satz ohne weitere NC-Befehle programmiert werden. Die Syntax besteht aus einem globalen Unterprogrammaufruf mit zusätzlicher Angabe der zyklusabhängigen Versorgungsparameter.
L CYCLE [ NAME=<cycle_name> [MODAL] @P1=<expr> @P30=<expr> ]
NAME=<cycle_name> Name des Zyklus (Dateiname)
MODAL Modaler Zyklusaufruf. Nach jedem weiteren NC-Satz im Hauptprogramm, der Bewegungsbefehle enthält, wird der Zyklus erneut implizit ausgeführt.
Die Abwahl der modalen Wirkung erfolgt durch den NC-Befehl #DISABLE MODAL CYCLE.
@P1<expr>... Auflistung der Versorgungsparameter.
... @P30<expr> Es können maximal 30 @Pxx-Parameter vom Typ REAL übergeben werden. Schreib- und Lesezugriffe sind nur innerhalb eines Zyklus erlaubt. Den @Pxx-Parametern können direkt Werte, beliebige Variablen, P-Parameter und mathematische Ausdrücke übergeben werden.
Innerhalb der Klammerung ist keine Reihenfolge bei der Angabe der Schlüsselworte und Versorgungsparameter erforderlich. Bei der Programmierung muss der Anwender lediglich wissen, welche @Pxx-Parameter für den Zyklus belegt werden müssen.
Nicht benötigte Parameter können weggelassen werden. Nicht programmierte @Pxx-Parameter sind beim Aufruf mit 0 (Null) initialisiert. Ob ein Parameter programmiert (gültig) ist, kann im Zyklus über die Variable V.G.@P[i].VALID ermittelt werden. Die Versorgungsparameter bleiben bis zum programmierten Aufruf eines anderen Zyklus erhalten.
Im Zyklusaufruf programmierte, aber im Zyklus selbst nicht verwendete Versorgungsparameter werden ignoriert.
Hinweis | |
Ein Zyklus ist eine abgeschlossene NC-Programmeinheit mit einer definierten Bearbeitungsaufgabe. Es wird empfohlen, die Schachtelung von Zyklen zu vermeiden, da dabei die Gefahr der Mehrfachbelegung von Versorgungsparametern besteht. |
![]() | Versionsspezifisch sind in der Defaulteinstellung im laufenden NC-Programm oder im Einzelsatzbetrieb während der Ausführung eines Zyklus in der Anzeige die Bearbeitungszeilen des Zyklus ausgeblendet oder sichtbar. Bei aktiver Ausblendung wird in dieser Zeit nur der Zyklusaufruf angezeigt. |
Erforderliche Definitionen vor Zyklusaufruf:
- Die vor dem Zyklusaufruf aktiven modalen G-Funktionen, sowie Kreisgeometriedaten und der aktuell aktive Vorschub (F-Wort) bleiben über den Zyklus hinaus erhalten. Dieses Verhalten kann über den Kanalparameter [1]-51 geschaltet werden.
- Modale G-Funktionen, die in Verbindung mit Achsnamen programmiert sind (z.B. G92, G98, G99, G100, G112, G130 ...) werden nicht wieder hergestellt, wenn diese im Zyklus selbst programmiert wurden.
- Die Bearbeitungsebene (G17, G18, G19) sollte vor dem Zyklusaufruf im übergeordneten NC-Programm definiert werden. Die senkrecht auf dieser Ebene stehende Achse ist dann bei Bohrzyklen die Achse, in der die Bohrung ausgeführt wird und bei Fräszyklen die Zustellachse für die Tiefe.
- Auch eventuelle Werkzeuggeometriekorrekturen (z.B. Längenkorrektur) müssen vor Aufruf des Zykluses angewählt werden.
- Die erforderlichen Werte für Vorschub, Spindeldrehzahl und Spindeldrehrichtung sind im übergeordneten NC-Programm festzulegen, es sei denn, entsprechende Versorgungsparameter sind im Zyklus vorhanden.
- Die in den Zyklen programmierten Spindelbefehle beziehen sich stets auf die aktive Hauptspindel des NC-Kanals. Es ist sicherzustellen, dass diese Hauptspindel vor dem Zyklusaufruf definiert wurde.
- Die Startposition für eine entsprechende Bohr- oder Fräsbearbeitung sowie die Orientierung des Werkzeuges sind stets vor dem Zyklusaufruf im übergeordneten NC-Programm anzufahren.
Abwahl eines modalen Zyklus:
Mit nachfolgendem NC-Befehl wird ein modal wirkender Zyklus (Schlüsselwort MODAL im Zyklusaufruf) abgewählt. Der Befehl muss allein im NC-Satz programmiert werden.
#DISABLE MODAL CYCLE
![]() | Verfügbare Zyklen |
Für die Bearbeitungsaufgaben
- Bohren
- Gewindebohren
- Helikalfräsbohren
- Taschenfräsung
stehen parametrierbare Zyklen zur Verfügung. Nähere Informationen zur Programmierung und Verwendung siehe Funktionsbeschreibung "Zyklen" (CNC Zyklen)
Programmierbeispiel
Am Beispiel eines Zyklusaufrufes zum Bohren (drill.cyc) werden im Folgenden die verschiedenen Möglichkeiten der Parameterbelegung dargestellt.
Der Bohrzyklus drill.cyc benötigt folgende Versorgungsparameter:
@P1 -> Position der Rückzugsebene (absolut)
@P2 -> Position der Bearbeitungsebene (absolut)
@P3 -> Sicherheitsabstand (ohne Vorzeichen)
@P4 -> Endbohrtiefe (absolut) oder
@P5 -> Endbohrtiefe relativ zur Bearbeitungsebene (ohne Vorzeichen)
Zyklusaufruf mit konstanten Werten:
..
Nxx L CYCLE [NAME=drill.cyc @P1=110 @P2=100 @P3=4 @P4=40]
..
oder mit Angabe einer relativen Bohrtiefe @P5:
..
Nxx L CYCLE [NAME=drill.cyc @P1=110 @P2=100 @P3=4 @P5=60]
..
Zyklusaufruf mit Variablen:
Die Variablen müssen vor dem Zyklusaufruf definiert und mit Werten belegt werden.
..
#VAR
V.L.RPL = 110
V.L.WPL = 100
V.L.SDST = 4
V.L.DEP = 50
#ENDVAR
Nxx L CYCLE [NAME=drill.cyc @P1= V.L.RPL @P2=V.L.WPL @P3=V.L.SDST @P4=V.P.DEP]
Zyklusaufruf mit P-Parametern:
Die Parameter müssen vor dem Zyklusaufruf definiert und mit Werten belegt werden.
..
Nxx P10 = 110
Nxx P11 = 100
Nxx P15 = 4
Nxx P17 = 50
Nxx L CYCLE [NAME=drill.cyc @P1= P10 @P2=P11 @P3=P15 @P4=P17]
..
Zyklusaufruf mit mathematischen Ausdrücken:
..
Nxx P20 = 100
Nxx L CYCLE [NAME=drill.cyc @P1= 10+P20 @P2=2*50 @P3=5-1 @P4=P20/2]
..
Zyklusaufruf mit konstanten Werten, Reihenfolge der Parameter in der Klammerung beliebig:
..
Nxx L CYCLE [@P4=40 NAME=drill.cyc @P2=100 @P3=4 @P1=110]
..
Zyklusaufruf mit konstanten Werten, Zyklus soll modal wirken:
..
Nxx L CYCLE [NAME=drill.cyc @P1=110 @P2=100 @P3=4 @P4=40 MODAL]
..
Beispiel:
%drill_main
N05 T1 D1
N10 M06
N15 X0 Y0 Z0 G0 G90 F200 S300 M3 G53 G17
N20 Z110
N30 X40 Y40 (Bohrposition 1)
N40 L CYCLE [NAME=drill.cyc MODAL @P1=110 @P2=100 @P3=2 @P4=55]
N50 X60 Y60 (Bohrposition 2 und impliziter Zyklusaufruf, da modal)
N60 X100 Y60 (Bohrposition 3 und impliziter Zyklusaufruf, da modal)
N70 X100 Y20 (Bohrposition 4 und impliziter Zyklusaufruf, da modal)
#DISABLE MODAL CYCLE
N80 X0 Y0 M5
N100 M30
![]() | Hinweise für das Erstellen von Zyklen |
Zyklen müssen so weit wie möglich allgemeingültig und unabhängig von den aktuell im NC-Kanal verwendeten Achsnamen und der Ebenenfestlegung programmiert, sein. Zu diesem Zweck besteht im Zyklus die Möglichkeit, für die ersten drei Hauptachsen die ebenenunabhängigen „neutralen Achsnamen“ @X, @Y und @Z zu verwenden. Hierbei bedeutet
@X -> immer die erste Hauptachse
@Y-> immer die zweite Hauptachse
@Z -> immer die dritte Hauptachse
Beispiel: Achsen im Zyklus
Nxx G91 @X=@P1 @Y=@P2 @Z=@P3 F1000 G01
Analog dazu stehen auch bei der Kreisprogrammierung s.g. „neutrale Mittelpunktskoordinaten“ zur Verfügung. Hierbei bedeutet
@I -> immer die Mittelpunktskoordinate in der ersten Hauptachse
@J-> immer die Mittelpunktskoordinate in der zweiten Hauptachse
@K -> immer die Mittelpunktskoordinate in der dritten Hauptachse
Beispiel: Kreis im Zyklus
Nxx G91 G02 @X=@P1 @Y=@P2 @I=@P4 @J=@P5 F1000
Um auch bei der Spindelprogrammierung vom konfigurierten Spindelnamen unabhängig zu sein, kann im Zyklus die Hauptspindel immer mit dem neutralen Spindelnamen @S angesprochen werden.
@S -> immer die Hauptspindel
Beispiel: Spindel im Zyklus
Nxx @S=1000 M3 (Hauptspindel cw mit 1000 U/min)