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.

Zyklen als globale Unterprogramme (Aufruf L CYCLE) 1:

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.
Bei TwinCat-Systemen sind per Default in der Anzeige alle Zykluszeilen sichtbar.
Dieses Verhalten kann über den Kanalparameter [1]-52 geschaltet werden.

Erforderliche Definitionen vor Zyklusaufruf:

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 
Zyklen als globale Unterprogramme (Aufruf L CYCLE) 2:

Verfügbare Zyklen

Für die Bearbeitungsaufgaben

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
Zyklen als globale Unterprogramme (Aufruf L CYCLE) 3:

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)