Independent axes (INDP_SYN, INDP_ASYN) (#WAIT INDP, #WAIT INDP ALL)
Two different operation modes are provided to program independent axes:
- Command value based synchronisation of path axes and independent axes at block end.
- Command value based synchronisation of path axes and independent axes over several blocks.
Notice
No offsets are considered for independent axes.
Additive manual mode (G201/G202) with an independent axis is possible.
Programming syntax for independent axes: |
<axis_name> [ 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=..] { \ } ] |
<axis_name> | Name of independent axis |
INDP_SYN | Identifier for synchronous (blockwise) independent axis motion. The transition to the next block is only executed if all axes have reached their target point. Must always be programmed as the first keyword. |
INDP_ASYN | Identifier for asynchronous (cross-block) independent axis motion. There is no synchronisation at target points. Command value based synchronisation is executed by a special NC command (#WAIT INDP) or by programming the independent axis as a conventional path axis. Must always be programmed as the first keyword. |
G90 / G91 | Absolute/relative dimension |
G00 / G01 | Rapid traverse/linear interpolation |
FEED=.. | Axis-specific feedrate in [mm/min, m/min, inch/min] |
TIME=.. | Axis-specific motion time in [s] |
FEED_MAX_WEIGHT=.. | Weighting factor in [%] referred to axis-specific maximum feed P-AXIS-00212. Only weighting factors less than 100% are permitted. (according to G194, Section Machining time/feedrate (G93/G94/G95/G194)) |
POS=.. | Axis position in [mm, inch] |
SLOPE_TYPE=<ident> | Slope profile types according to #SLOPE [TYPE=...], Section Independent axes). If no slope type is programmed, the slope type taken from the channel parameter list P-CHAN-00071 is set by default. |
Old syntax: SLOPE_PROFIL=.. | Slope profile types (0, 1, 2, 3). If no slope type is programmed, the slope type taken from the channel parameter list P-CHAN-00071 is sued by default. |
G100 [as of Build V2.11.2801.05] | If measurement types 1, 2 or 7 (Section Measuring functions) are used, a measurement run can be executed with independent axes. The measuring point is latched for each axis involved. An independent measurement run is also possible in parallel to a path motion of a G100 measurement run. For more information see [FCT-C4//Measurement]. |
DRY_RUN | Dry run of axis motion. The motion is only executed in the NC channel but the axis is not really moved. This offsets the axis coordinate within the channel relative to the physical axis. This offset is automatically cancelled at every program start or by an explicitly programmed #CHANNEL INIT [CMDPOS] (see Programming example 3). |
M.. | Axis-specific M functions (*) |
H.. | Axis-specific M/H-functions (*) |
ACC_WEIGHT=.. [as of V3.1.3079.06] | Axis-specific weighting factor in [%] referred to acceleration with G01, G02, G03 (see section Acceleration weighting (G130/G131/G231/G333/G334)) |
RAPID_ACC_WEIGHT=.. [as of V3.1.3079.06] | Axis-specific weighting factor in [%] referred to acceleration with G00 (see section Acceleration weighting (G130/G131/G231/G333/G334)) |
\ | Separator ("backslash") for clear programming of the command over multiple lines. |
(*) only possible with synchronisation modes MOS, MVS_SVS, MVS_SNS, MNS_SNS.
Axis-specific M/H functions can also be output to an independent axis without programming a motion. This only requires the identifier INDP_SYN or INDP_ASYN.
Syntax: |
<axis_name> [ INDP_SYN | INDP_ASYN M.. { M..} H.. {H..} { \ } ] |
<axis_name> | Name of independent axis |
INDP_SYN/INDP_ASYN | Identifier for an independent axis |
M.. | Axis-specific M function |
H.. | Axis-specific H functions |
\ | Separator ("backslash") for clear programming of the command over multiple lines. |
Command value based synchronisation of specific asynchronous axis motions (INDP_ASYN) can be forced by the NC command:
Syntax: |
#WAIT INDP [ <axis_name> { ,<axis_name> } ] |
<axis_name> | Name of asynchronous axis |
Notice
If an asynchronous axis is again programmed with a motion before or without a corresponding #WAIT INDP [ ], command value based synchronisation is implicitly executed in the interpolator.
Command value based synchronisation of all currently active asynchronous axis motions (INDP_ASYN) is forced by the NC command:
Syntax: |
#WAIT INDP ALL |
Notice
If the axis of a pre-assigned axis-specific M/H function (P-CHAN-00039, P-CHAN-00025) is programmed in the same NC block as an independent axis, an error message is output.
Example: M10 is pre-assigned for a specific X axis (m_default_outp_ax_name[10] x):
N10 M10 X [INDP_SYN G01 G90 POS10 FEED1000 M7]
|_____| <- Error!
Programing Example
Independent axes
Example 1:
;N10 ends when X,Y and the indep. sync. Z axis
;end their motions
N10 X10 Y11 Z[INDP_SYN POS50 G01 FEED100 G90]
;N20 is executed after all motions in N10 end
N20 X20
;N30 ends when X and Y end their motions;
;independent asynchronous axis continues its motion
N30 X5 Y10 Z[INDP_ASYN POS500 G01 FEED200 G90]
;N40 is interpolated, asynchronous independent Z axis continues its motion
N40 X20 Y30
;Forced synchronisation of the Z axis: wait until target position
;Z500 is reached from N30
N50 #WAIT INDP[Z]
;Interpolation in N60 with X, Y, Z in coordinated motion
;starts after synchronisation takes place in N50
N60 X30 Y40 Z60
N70 Z[INDP_SYN M50] ;Output of M50 via independent Z axis
N80 …
Example 2:
;N10 is interpolated, the independent asynchronous Z axis
;continues its motion
N10 X10 Y11 Z[INDP_ASYN POS500 G01 FEED200 G90]
;N20 is interpolated, the independent asynchronous Z axis
;continues its motion
N20 X20 Y22
;Implicit synchronisation of Z motion of N10 before motion
;Z550 starts
N30 Z550
N40 X20 Y30 Z60 ;N40 is interpolated
N50 …
Example 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
;Remove DRY_RUN offset
N001 #TIME 2
N111 #CHANNEL INIT[CMDPOS] ;IPO=6, LR=6, offset=0
N222 #TIME 2
N400 Y10 Z5
M30