Unabhängige Achsen (INDP_SYN, INDP_ASYN) (#WAIT INDP, #WAIT INDP ALL)

Bei der Programmierung s.g. unabhängiger Achsen werden zwei Betriebsmodi unterschieden:

Prinzipielles Bewegungsschema Bahnachsverbund/unabhängige Achsen
Abb.: Prinzipielles Bewegungsschema Bahnachsverbund/unabhängige Achsen

Hinweis

notice

Bei unabhängigen Achsen werden in der Grundeinstellung keine Verschiebungen berücksichtigt. Ab der Version V3.1.3081.05 kann im NC-Befehl durch Angabe von INCL_OFFSETS die Einrechnung von Verschiebungen in die programmierte Achsposition aktiviert werden.

Der additive Handsatzbetrieb (G201/G202) mit einer unabhängigen Achse ist möglich.

Syntax zur Programmierung unabhängiger Achsen:

<Achsname> [ INDP_SYN | INDP_ASYN G90 | G91 G00 | [G01 | G100 FEED=.. |

                        TIME=.. | FEED_MAX_WEIGHT=..] POS=.. [SLOPE_TYPE=<ident>]

                        {M..} {H..} [DRY_RUN] [ACC_WEIGHT=..] [RAPID_ACC_WEIGHT=..]

                         [INCL_OFFSETS] { \ } ]

<Achsname>

Name der unabhängigen Achse

INDP_SYN

Kennung für die synchrone (satzweise) unabhängige Achsbewegung. Übergang zum nächsten Satz erfolgt erst dann, wenn alle Achsen ihre Endpositionen erreicht haben. Muss immer als erstes Schlüsselwort programmiert sein.

INDP_ASYN

Kennung für die asynchrone (satzübergreifende) unabhängige Achs-bewegung. Keine Synchronisierung auf Endpositionen. Die sollwertseitige Synchronisierung erfolgt durch einen speziellen Befehl (#WAIT INDP) oder durch Programmierung der unabhängigen Achse als bewegte Bahnachse. Muss immer als erstes Schlüsselwort programmiert sein.

G90 / G91

Absolut- / Relativmaß

G00 / G01

Eilgang- / Linearinterpolation

FEED=..

Achsspezifischer Vorschub in [mm/min, m/min, inch/min]

TIME=..

Achsspezifische Verfahrzeit in [s]

FEED_MAX_WEIGHT=..

Gewichtungsfaktor in [%] bezogen auf den achsspezifischen maximalen Vorschub P-AXIS-00212. Es sind nur Gewichtungswerte kleiner 100% erlaubt. (gemäß G194, Kapitel Bearbeitungszeit/Vorschubgeschwindigkeit (G93/G94/G95/G194))

POS=..

Achsposition in [mm, inch]

SLOPE_TYPE=<ident>

Slope-Profiltypen gemäß #SLOPE [TYPE=...], Kapitel Unabhängige Achsen) Wenn kein Slopetyp programmiert ist, wird per Default der Slopetyp aus dem Kanalparametersatz P-CHAN-00071 gesetzt.

Alte Syntax:

SLOPE_PROFIL=..

Slope-Profiltypen (0, 1, 2, 3) Wenn kein Slopetyp programmiert ist, wird per Default der Slopetyp aus dem Kanalparameter P-CHAN-00071 gesetzt.

G100

[ab V2.11.2801.05]

Bei Verwenden der Messtypen 1, 2 oder 7 (Kapitel Messfunktionen) kann auch eine Messfahrt mit unabhängigen Achsen durchgeführt werden. Das Latchen der Messposition erfolgt dabei für jede beteiligte Achse individuell. Eine unabhängige Messfahrt ist auch parallel zu einer Bahnbewegung oder G100 Messfahrt möglich. Weitere Informationen siehe [FCT-C4//Messen].

DRY_RUN

Trockenlauf der Achsbewegung. Die Bewegung wird nur im NC-Kanal ausgeführt ohne dass die Achse real verfahren wird. Hierdurch kann die Achskoordinate innerhalb des Kanals gegenüber der physikalischen Achse verschoben werden. Diese Verschiebung wird automatisch bei jedem Programmstart oder durch ein explizit programmiertes #CHANNEL INIT [CMDPOS] wieder aufgehoben (siehe Programmierbeispiel 3).

M..

Achsspezifische M-Funktionen (*)

H..

Achsspezifische H-Funktionen (*)

ACC_WEIGHT=..

[ab V3.1.3079.06]

Achsspezifischer Gewichtungsfaktor in [%] bezogen auf die Beschleunigung bei G01, G02, G03 (gemäß Kapitel Beschleunigungsgewichtung (G130/G131/G230/G231/G333/G334))

RAPID_ACC_WEIGHT=..

[ab V3.1.3079.06]

Achsspezifischer Gewichtungsfaktor in [%] bezogen auf die Beschleunigung bei G00 (gemäß Kapitel Beschleunigungsgewichtung (G130/G131/G230/G231/G333/G334))

INCL_OFFSETS

[ab V3.1.3081.05]

Einrechnen der aktuell aktiven achsspezifischen Verschiebungen (z.B. G55, G92 etc.) in die programmierte Achsposition POS

\

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

(*) nur möglich mit den Synchronisationsarten MOS, MVS_SVS, MVS_SNS, MNS_SNS.

Achsspezifische M/H-Funktionen können auch ohne die Programmierung einer Bewegung an eine unabhängige Achse ausgegeben werden. Dazu ist zusätzlich nur die Kennung INDP_SYN bzw. INDP_ASYN erforderlich:

Syntax:

<Achsname> [ INDP_SYN | INDP_ASYN M.. {M..} H.. {H..} { \ } ]

<Achsname>

Name der unabhängigen Achse

INDP_SYN/INDP_ASYN

Kennung für eine unabhängige Achse

M..

Achsspezifische M-Funktion

H..

Achsspezifische H-Funktion

\

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

Die sollwertseitige Synchronisation bestimmter asynchroner Achsbewegungen (INDP_ASYN) wird erzwungen durch:

Syntax:

#WAIT INDP [ <Achsname> { ,<Achsname> } ]

<Achsname>

Name der asynchronen Achse

Hinweis

notice

Wird eine asynchrone Achse vor oder ohne dem entsprechenden #WAIT INDP [  ] erneut mit einer Bewegung programmiert, so wird die sollwertseitige Synchronisation implizit im Interpolator durchgeführt.

Die sollwertseitige Synchronisation von allen momentan aktiven asynchronen Achsbewegungen (INDP_ASYN) wird erzwungen durch:

Syntax:

#WAIT INDP ALL

Hinweis

notice

Wird die Achse einer vorbelegten achsspezifischen M/H-Funktion (P-CHAN-00039, P-CHAN-00025) im gleichen NC-Satz als unabhängige Achse programmiert, so wird eine Fehlermeldung ausgegeben.

Beispiel: M10 ist X-achsspezifisch vorbelegt (m_default_outp_ax_name[10] x):

N10   M10    X [INDP_SYN G01 G90 POS10 FEED1000 M7]

          |_____| <- Fehler!

Programmierbeispiel

prg_example

Unabhängige Achsen

;Beispiel 1:

;N10 ist beendet, wenn X,Y und die unabh. synchr. Z-Achse ihre

;Bewegung beendet haben

N10 X10 Y11 Z[INDP_SYN POS50 G01 FEED100 G90]

;N20 wird ausgeführt, nachdem alle Bewegungen in N10 beendet sind

N20 X20

;N30 ist beendet, wenn X u. Y ihre Bewegung beendet haben; die

;unabhängige asynchrone Achse fährt weiter

N30 X5 Y10 Z[INDP_ASYN POS500 G01 FEED200 G90]

;N40 wird interpoliert, die asynchrone unabhängige Z-Achse fährt weiter

N40 X20 Y30

;Erzwungene Synchronisierung der Z-Achse: warten, bis Zielposition

;Z500 aus N30 erreicht ist

N50 #WAIT INDP[Z]

;Interpolation in N60 mit X, Y, Z im Bahnverbund wird gestartet,

;nachdem Synchronisation in N50 erfolgte

N60 X30 Y40 Z60

N70 Z[INDP_SYN M50]   ;Ausgabe von M50 über unabhängige Z-Achse

N80 …

;Beispiel 2:

;N10 wird interpoliert, die unabhängige asynchrone Z-Achse fährt

;weiter

N10 X10 Y11 Z[INDP_ASYN POS500 G01 FEED200 G90]

;N20 wird interpoliert, die unabhängige asynchrone Z-Achse fährt

;weiter

N20 X20 Y22

;Implizite Synchronisation der Z-Bewegung von N10 bevor Bewegung

;Z550 begonnen wird

N30 Z550

N40 X20 Y30 Z60  ;N40 wird interpoliert

N50 …

;Beispiel 3:

%dry_run

N100 X1 Y2 Z3                             ;IPO=3, LR=3, offset=0

N200 G01 X10 F100 Z[INDP_SYN POS=4 G01 G90 \

                    FEED=120 DRY_RUN]     ;IPO=4, LR=3, offset=1

N300 Y20 F1000

N350 Z[INDP_SYN POS=7 G00 G90]            ;IPO=7, LR=6, offset=1

N360 Z[INDP_SYN POS=4 G01 G91 \

       FEED=100 DRY_RUN]                  ;IPO=11, LR=6, offset=5

;Abloeschen des DRY_RUN-offsets

N001 #TIME 2

N111 #CHANNEL INIT[CMDPOS]                ;IPO=6, LR=6, offset=0

N222 #TIME 2

N400 Y10 Z5

M30

;Beispiel 4:

;Die unabhängige synchrone X-Achse fährt ihre Position unter

;Einrechnung des aktiven G92-Versatzes an

N10 G0 X0

N20 G92 X200

N10 X[INDP_SYN POS50 G01 FEED100 G90 INCL_OFFSETS] ;X fährt auf 250