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.
Hinweis
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
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
;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