Zyklen als globale oder lokale Unterprogramme (Aufruf L / LL CYCLE)

Zyklen stehen im NC-Kern in der Form globaler oder lokaler 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, muss 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 oder lokalen Unterprogrammaufruf mit zusätzlicher Angabe der zyklusabhängigen Versorgungsparameter.

L | LL CYCLE [ NAME=<cycle> [MODAL_MOVE / _BLOCK] @P1=.. @P200=.. { \ } ]

NAME=<cycle>

Name des Zyklus (Dateiname)

MODAL_MOVE

(MODAL, alte Syntax)

Modaler Zyklusaufruf. Nach jedem weiteren NC-Satz im Hauptprogramm, der Bewegungsbefehle enthält, wird der Zyklus erneut implizit ausgeführt.

MODAL_BLOCK

Modaler Zyklusaufruf. Nach jedem weiteren NC-Satz im Hauptprogramm wird der Zyklus erneut implizit ausgeführt.

 

Bei folgenden NC-Befehlen wird der implizite blockmodale Zyklusaufruf unterdrückt:

 

  • Leerzeilen, Kommentarzeilen
  • Unterprogrammaufrufen (L, LL, M6, G8xx).
  • $-Befehlen ($GOTO, $IF, $FOR etc...)
  • Programmende M-Funktionen (M2, M30, M17; M29)

 

 

 

 

Die Abwahl der modalen Wirkung von MODAL_MOVE / _BLOCK erfolgt durch den NC-Befehl #DISABLE MODAL CYCLE.

@P1=<expr>...

Auflistung der Versorgungsparameter.

... @P200=<expr>

Es können maximal 200 @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.

\

Trennzeichen ('Backslash') für Programmierung des Befehls über mehrere Zeilen

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.

Ob das aktuelle Unterprogramm bzw. die aktuelle Programmebene ein Zyklus ist, kann über die Variable V.G.CYCLE_ACTIVE ermittelt werden.

Achtung

attention

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.

Hinweis

notice

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.

Dieses Verhalten kann über den Kanalparameter P-CHAN-00211 geschaltet werden.

Hinweis

notice

In TwinCAT-Systemen sind standardmäßig in der Anzeige alle Zykluszeilen sichtbar.

Erforderliche Definitionen vor Zyklusaufruf:

Abwahl eines modalen Zyklus:

Mit nachfolgendem NC-Befehl wird ein modal wirkender Zyklus (Schlüsselwort MODAL_MOVE oder MODAL_BLOCK im Zyklusaufruf) abgewählt. Der Befehl muss allein im NC-Satz programmiert werden.

#DISABLE MODAL CYCLE

Verfügbare Zyklen:

Folgende Zyklen stehen zur Verfügung:

Programmierbeispiel

prg_example

Verfügbare Zyklen

Am Beispiel eines Zyklusaufrufes zum Bohren (drilling.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=drilling.cyc @P1=110 @P2=100 @P3=4 @P4=40]

..

oder mit Angabe einer relativen Bohrtiefe @P5:

..

Nxx L CYCLE [NAME=drilling.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=drilling.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=drilling.cyc @P1= P10 @P2=P11 @P3=P15 @P4=P17]

..

Zyklusaufruf mit mathematischen Ausdrücken:

..

Nxx P20 = 100

Nxx L CYCLE [NAME=drilling.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=drilling.cyc @P2=100 @P3=4 @P1=110]

..

Zyklusaufruf mit konstanten Werten; Zyklus soll modal wirken:

..

Nxx L CYCLE [NAME=drilling.cyc @P1=110 @P2=100 @P3=4 @P4=40 MODAL_MOVE]

..

[Beispiel:]

%drill_main

N05 T1 D1

N10 M06

N15 G53 G17 G90 M3 S300 F200 S300

N16 G0 X0 Y0 Z0

N20 Z110

N30 X40 Y40 (Bohrposition 1)

N40 L CYCLE [NAME=drilling.cyc @P1=110 @P2=100 @P3=2 @P4=55 MODAL_MOVE]

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

Hinweis

notice

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 1: 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 2: 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 3: Spindel im Zyklus

Nxx @S=1000  M3  (Hauptspindel cw mit 1000 U/min)