NC-Kanal leeren

Die einzelnen NC-Sätze eines NC-Programmes werden durch das Interpretermodul fortlaufend eingelesen, in eine interne Darstellung umgesetzt und zur weiteren Verarbeitung an den NC-Kanal ausgegeben (Programmdecodierung). Im NC-Kanal werden die Daten dann von weiteren Modulen (Werkzeugradiuskorrektur, Bahnvorbereitung, etc.) bearbeitet und bis zum Interpolator durchgeschleust.

Durch diese Verarbeitung entsteht eine Pufferwirkung des NC-Kanals, die dazu führt, dass die Programmdecodierung der tatsächlichen bzw. aktuellen Ausführung der Befehle im Interpolator im Allgemeinen vorauseilt.

Diese Pufferwirkung des NC-Kanals kann nun zu einer verzögerten Versorgung des Interpolators mit Verfahrsätzen und somit zu einem Stop von Achsbewegungen führen.

Mit Hilfe der Befehle #FLUSH und #FLUSH CONTINUE wird diese Pufferwirkung des NC-Kanals aufgehoben. Alle gepufferten NC-Sätze werden sofort verarbeitet und entsprechend ihrer programmierten Reihenfolge ausgeführt.

Die Befehle sind insbesondere immer dann hilfreich, wenn es darum geht, große nicht bewegungsrelevante NC-Programmbereiche zwischen zwei Verfahrsätzen zeitlich zu überbrücken, um überflüssiges Stoppen von Achsbewegungen zu vermeiden.

Achtung

attention

Die Befehle zum Leeren des Kanals (#FLUSH, #FLUSH CONTINUE, #FLUSH WAIT) können nicht bei aktiver WRK, Polynomüberschleifen sowie aktivem HSC-Modus verwendet werden.

Versionshinweis

release_note

Ab der Version V2.10.1503.08 ist es zulässig, bei aktivem Polynomüberschleifen die Befehle zum Leeren des Kanals zu verwenden. In diesem Fall wird dann im Satz vor und nach einem Befehl zum Leeren des Kanals das Überschleifen unterdrückt.

#FLUSH                                                                                                                             (nicht modal)

Die Anweisung #FLUSH bewirkt, dass alle bis zu diesem Befehl an den NC-Kanal ausgegebenen NC-Sätze (Steuerkommandos, Verfahrbewegungen) an den Interpolator sofort weitergereicht werden. Die Programmdecodierung läuft hierbei ohne Unterbrechung weiter.

Am Ende der letzten Verfahrbewegung vor dem #FLUSH wird im Interpolator generell kurz angehalten, auch wenn eventuell der nächste Verfahrsatz durch die weiterlaufende Programmdecodierung bereits vorliegt.

Programmierbeispiel

prg_example

NC-Kanal leeren

Zwischen den Verfahrsätzen N10 und N210 ist eine WHILE-Schleife mit vielen nicht bewegungsrelevanten NC-Sätzen programmiert (Parameterrechnungen, Variablenzugriffe etc.). Dadurch wird der Verfahrsatz N10 im Kanal zurückgehalten und die Bereitstellung des Verfahrsatzes N210 verzögert. Mit #FLUSH wird der NC-Kanal gezwungen, alle Verfahrsätze vor der WHILE-Schleife an den Interpolator weiterzureichen. Dieser kann dann schon mit der Verfahrbewegung bis einschliesslich N10 starten.

N05  G01 F1000 G90 X150

N10  X200

N20  #FLUSH

N30  $WHILE    

N40    P1 = [P2 * P3] + V.E...

N50    V.L....

...

N200 $ENDWHILE

N210 X250

...

M30

Wirkungsweise #FLUSH zwischen 2 Verfahrsätzen
Abb.: Wirkungsweise #FLUSH zwischen 2 Verfahrsätzen

#FLUSH CONTINUE                                                                                                        (nicht modal)

Durch den Zusatz CONTINUE kann das generelle Anhalten am Ende des letzten Verfahrsatzes vermieden werden. Wenn dem Interpolator bereits der nächste Verfahrsatz vorliegt, dann wird ohne Stop die Bewegung fortgesetzt. Nur wenn noch kein weiterer Verfahrsatz vorliegt, dann wird im Interpolator gewartet.

Programmierbeispiel

prg_example

#Flush Continue

Zwischen den Verfahrsätzen N10 und N210 ist eine WHILE-Schleife mit vielen nicht bewegungsrelevanten NC-Sätzen programmiert (Parameterrechnungen, Variablenzugriffe etc.). Dadurch wird der Verfahrsatz N10 im Kanal zurückgehalten und die Bereitstellung des Verfahrsatzes N210 verzögert. Mit #FLUSH CONTINUE wird der NC-Kanal gezwungen, alle Verfahrsätze vor der WHILE-Schleife an den Interpolator weiterzureichen. Dieser kann dann schon mit der Verfahrbewegung bis einschliesslich N10 starten. Liegt im Interpolator vor Ende von N10 der nächste Bewegungssatz N210 bereits vor, so wird ohne anzuhalten die Bewegung fortgesetzt.

N05  G01 F1000 G90 X150

N10  X200

N20  #FLUSH CONTINUE

N30  $WHILE ...

N40    P1 = [P2 * P3] + V.E...

N50    V.L....

...

N200 $ENDWHILE

N210 X250

...

M30

Wirkungsweise #FLUSH CONTINUE zwischen 2 Verfahrsätzen
Abb.: Wirkungsweise #FLUSH CONTINUE zwischen 2 Verfahrsätzen

#FLUSH WAIT                                                                                                                  (nicht modal)

Im Gegensatz zu #FLUSH bzw. #FLUSH CONTINUE wird durch den Befehl #FLUSH WAIT auch die Programmdecodierung unterbrochen. Alle bis zu diesem Befehl an den NC-Kanal ausgegebenen NC-Sätze werden im Interpolator abgearbeitet. Danach ist der NC-Kanal "leergelaufen", die Achsen stehen und Interpolator und wartende Programmdecodierung haben den gleichen Stand, d.h. sind synchronisiert. Erst wenn dieser Zustand erreicht ist, wird die weitere Programmdecodierung automatisch wieder fortgesetzt.

Achtung

attention

Wurden zuvor synchronisierte oder unsynchronisierte (MOS) M/H-Funktionen bzw. #MSG-Befehle an die SPS ausgegeben, so wartet die Steuerung bis zu deren Annahme bzw. Synchronisation durch die SPS. Die Programmdecodierung ist also solange unterbrochen!

Programmierbeispiel

prg_example

#Flush Wait

Mit #FLUSH WAIT wird die Programmdecodierung angehalten und der NC-Kanal gezwungen, alle Verfahrsätze vor der WHILE-Schleife an den Interpolator weiterzureichen. Wenn der Interpolator den Satz N10 ausgeführt und die Position X200 erreicht hat, wird die Programmdecodierung fortgesetzt.

N05  G01 F1000 G90 X150

N10  X200

N20  #FLUSH WAIT

N30  $WHILE ...

N40    P1 = [P2 * P3] + V.E...

N50    V.L....

...

N200 $ENDWHILE

N210 X250

...

M30

Wirkungsweise #FLUSH WAIT zwischen 2 Verfahrsätzen
Abb.: Wirkungsweise #FLUSH WAIT zwischen 2 Verfahrsätzen