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

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

- Sollwertseitige Synchronisierung von Bahnachsen und unabhängigen Achsen jeweils am Satzende.
- Sollwertseitige Synchronisierung von Bahnachsen und unabhängigen Achsen über mehrere Satzgrenzen hinweg.

Abb.: Prinzipielles Bewegungsschema Bahnachsverbund/unabhängige Achsen

## Hinweis

Bei unabhängigen Achsen werden keine Verschiebungen berücksichtigt.

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=..] { \ } ]

<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/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/G231/G333/G334))
\ | 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

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

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

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