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.

Syntax:

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

NAME=<cycle>

Name des Zyklus (Dateiname)

MODAL_MOVE

(MODAL, alte Syntax)

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

MODAL_BLOCK

Modaler Zyklusaufruf. Nach jedem weiteren NC-Satz im aktivem NC-Programm 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.

@Pxx=..

Auflistung der Versorgungsparameter.

Es können maximal 200 @Pxx-Parameter vom Typ REAL oder STRING (ab V3.3079.25) ü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

Versorgungsparameter - @P-Parameter

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 Standardeinstellung 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.

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.

Syntax:

#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)

Beispiel 4: Prüfung @P-Parameter

Die übergebenen @P-Parameter können mit den Funktionen IS_STRING und IS_NUMBER überprüft werden.

%L cycle

( Check variables)

$IF IS_STRING[@P1] == TRUE

#MSG["Text: %s",@P1]

$ELSE

#MSG["Error no String"]

$ENDIF

$IF IS_NUMBER[@P2] == TRUE

#MSG["Zahl: %f",@P2]

$ELSE

#MSG["Error not a number"]

$ENDIF

M17

% Main

LL CYCLE [NAME=cycle @P1 ="String1" @P2=12.34]

M30