NC-Kanal leeren (#FLUSH, #FLUSH CONTINUE, #FLUSH WAIT)
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
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
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.
Syntax: |
#FLUSH |
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
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 einschließlich 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
Syntax: |
#FLUSH CONTINUE |
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
#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 einschließlich 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
Syntax: |
#FLUSH WAIT |
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
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
#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