Unabhängige Achsen

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

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

Hinweis

notice

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<expr>] |

                      TIME<expr> | FEED_MAX_WEIGHT<expr> POS<expr> [SLOPE_TYPE<ident>]

                      {M<expr>} {H<expr>} [DRY_RUN] { \ } ]

<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<expr>

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

TIME<expr>

Achsspezifische Verfahrzeit in [s]

FEED_MAX_WEIGHT<expr>

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<expr>

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<expr>

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 [CMD_POS] wieder aufgehoben (siehe Programmierbeispiel 3).

M<expr>

Achsspezifische M-Funktionen (*)

H<expr>

Achsspezifische H-Funktionen (*)

\

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:

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

<Achsname>

Name der unabhängigen Achse

INDP_SYN/INDP_ASYN

Kennung für eine unabhängige Achse

M<expr>

Achsspezifische M-Funktion

H<expr>

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 den Befehl:

#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 den Befehl:

#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 X10 Y11 Z[INDP_SYN POS50 G01 FEED100 G90] (N10 ist beendet, wenn X,Y u.)
                                              (die unabhng. synchr. Z-Achse)
                                              (ihre Bewegung beendet haben)

N20 X20 Y22           (N20 wird ausgeführt, nachdem alle Bewegungen in)
                      (N10 beendet sind)

N30 X5 Y10 Z[INDP_ASYN POS500 G01 FEED200 G90] (N30 ist beendet, wenn X u. Y)
                                               (ihre Bewegung beendet haben;)
                                               (die unabhängige asynchrone)
                                               (Z-Achse fährt weiter)

N40 X20 Y30           (N40 wird interpoliert; die asynchrone unabhängige)
                      (Z-Achse fährt weiter)

N50 #WAIT INDP[Z]     (Erzwungene Synchronisierung der Z-Achse: warten)
                      (bis Zielposition Z500 aus N30 erreicht ist)

N60 X30 Y40 Z60       (Interpolation in N60 mit X, Y, Z im Bahnverbund)
                      (wird gestartet, nachdem Synchronisation in N50)
                      (erfolgte)

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

N80 …

;Beispiel 2:

N10 X10 Y11 Z[INDP_ASYN POS500 G01 FEED200 G90] (N10 wird interpoliert, die)
                                                (unabhängige asynchrone)
                                                (Z-Achse fährt weiter)

N20 X20 Y22      (N20 wird interpoliert, die unabhängige asynchrone Z-)
                 (Achse fährt weiter))

N30 Z550         (Implizite Synchronisation der Z-Bewegung von N10 bevor)
                 (Bewegung Z550 begonnen wird)

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