Begrenzungen, Sonderfälle
Beschränkung des Look-Ahead-Bereichs
Aufgrund der Ressourcenlimitierung und der Anforderung, dass das NC-Programm möglichst zeitnah nach Start anläuft, ist der betrachtete Look-Ahead-Bereich eingeschränkt.
Im Standard ist die maximale Anzahl von betrachteten Sätzen auf 10 Sätze beschränkt, dies ist über P-CHAN-00603 (alternativ über P-STUP-00061) einstellbar. Je nach Satzlänge ergibt sich hierdurch eine maximale Stegbreite.
Soll eine M/H-Funktion über den Look-Ahead-Bereich hinaus vorgezogen werden, so wird die M/H-Funktion automatisch nur so weit wie es der Look-Ahead-Bereich ermöglicht vorausgegeben.
Programmierbeispiel
Beschränkung des Look-Ahead Bereichs
%microjoint4
N01 G00 G90 X0 Y0
N02 G01 F10000
N03 V.G.M_FCT[100].PRE_OUTP_PATH = 28.6 ;in mm
N20 G91 Y1
N21 Y1 ; -> geplanter MicroJoint bei Y1.4 mm
N22 Y1
N23 Y1
N24 Y1
N25 Y1
…
N37 Y1
N38 Y1
N39 Y1 ; -> realer MicroJoint aufgrund Satzanzahlbeschränkung
N40 Y1
N41 Y1
N42 Y1
N43 Y1
N44 Y1
N45 Y1
N46 Y1
N47 Y1
N48 Y1
N49 Y1
N50 M100 M26
N99 M30
Explizites Aufheben des Look-Ahead-Bereichs, #FLUSH, Lesen synchroner V.E.-Variable
Durch ein Leeren des Kanals (#FLUSH bzw. #FLUSH WAIT) wird der Look-Ahead-Bereich der M-Funktionen zurückgesetzt. D.h. die Vorausgabe der M-Funktionen kann nicht über die #FLUSH-Stelle hinaus zurück erfolgen.
Auch beim Lesen einer synchronen V.E-Variablen (s. [EXTV]) wird ein impliziter #FLUSH WAIT ausgeführt d.h. der Kanal geleert. Eine Vorausgabe über den Lesezugriff einer synchronen V.E.-Variable ist daher ebenfalls nicht möglich.
Soll eine M/H-Funktion über einen #FLUSH hinaus vorgezogen werden, so wird die M/H-Funktion automatisch nur bis zum #FLUSH vorausgegeben.
Programmierbeispiel
Explizites Aufheben des Look-Ahead Bereichs, #FLUSH, Lesen synchroner V.E.-Variable
%microjoint6
N01 G00 G90 X0 Y0
N02 G01 F10000
N10 V.G.M_FCT[100].PRE_OUTP_PATH = 28.6 ;in mm
N20 G91 Y1
N21 Y1 ; -> geplanter MicroJoint bei Y1.4 mm
N22 Y1
N23 Y1
…
N38 Y1
N39 Y1
N40 Y1
N41 Y1
N42 Y1
N43 Y1
N44 Y1
N400 #FLUSH ; -> eingefügter MicroJoint bei Y24
N45 Y1
N46 Y1
N47 Y1
N48 Y1
N49 Y1
N50 M100 M26
N99 M30
„Überlappende“ wegbezogene Vorausgabe
Nach Erkennen einer wegbezogenen Vorausgabe der M-Funktion werden alle seitherigen gespeicherten Bewegungssätze ausgegeben. Dies entspricht einem expliziten Leeren des Kanals (siehe #FLUSH), wodurch eine verzögerte Abarbeitung der Bewegungssätze vermieden wird.
Somit ist es nicht möglich, den Wegbereich von mehreren M-Funktionen überlappend zu legen.
Überlappen sich die Vorausgaben von M/H-Funktionen, werden die einzelnen M/H-Funktionen automatisch jeweils nur bis zur ursprünglich programmierten Position vorgezogen.
Programmierbeispiel
„Überlappende“ wegbezogene Vorausgabe
%microjoint5
(* M100 – Laser aus, M26 – Laser ein *)
N01 G00 G90 X0 Y0
N02 G01 F10000
N03 V.G.M_FCT[101].PRE_OUTP_PATH = 5 ;in mm
N04 V.G.M_FCT[102].PRE_OUTP_PATH = 23
N05 V.G.M_FCT[103].PRE_OUTP_PATH = 31
N20 X10
N30 M101 M26
N40 X30
N50 M102 M26
N60 X40
N70 M103 M26
N80 M30
Kombination von MNS_SNS mit und ohne Vorausgabeweg
Programmierbeispiel
Kombination von MNS_SNS mit und ohne Vorausgabeweg
%microjoint9
N01 G01 G90 X0 Y0 F10000
N02 V.G.M_FCT[100].PRE_OUTP_PATH = 35.6 ;in mm
N04 V.G.M_FCT[100].SYNCH = 8 ;MNS_SNS
N04 V.G.M_FCT[200].SYNCH = 8 ;MNS_SNS
N20 X10
N40 X30 M100 M200
N60 X40
N99 M30
Vorausgabe zwischen Ausgabe- und Synchronisationsstelle einer MVS_SNS
Es ist nicht möglich, eine M/H-Funktion vom Synchronisationstyp MVS_SNS mit Bewegung zwischen die Ausgabe- und Synchronisationsstelle zu schieben. Die Vorausgabe der M/H-Funktion wird dann nur bis maximal zur Synchronisationsstelle der MVS_SNS vorgezogen.
Programmierbeispiel
Vorausgabe mit einer weiteren M/H-Funktion vom Typ MVS_SNS
Im nachfolgenden Beispiel wird versucht die M100 zwischen die Ausgabe- und Synchronisationsstelle der M200 (eine MVS_SNS mit Bewegung) zu schieben. Die M100 wird in diesem Fall nicht wie gewünscht bei X9, sondern am Ende von N10, also bei X10 ausgegeben.
N01 G01 G90 X0 Y0 F1000
(Definitionen zu M-Funktionen)
N02 V.G.M_FCT[100].PRE_OUTP_PATH = 21.0
N03 V.G.M_FCT[100].SYNCH = 2 ; MVS_SVS
N04 V.G.M_FCT[200].SYNCH = 4 ; MVS_SNS
N10 X10 M200
N20 X30
N30 X40 M100
N40 X0 Y0
N50 M30