Limitations, special cases
Limitation of the look-ahead range
The described look-ahead range is limited due to resource limitation and the requirement for the NC program to run up as soon as possible after start.
The default limits the maximum number of blocks considered for pre-output to 10 blocks; this can be set in P-CHAN-00603 (or in P-STUP-00061). Depending on the block length, this results in a maximum joint width.
If an M/H function is brought forward beyond the look-ahead range, the M/H function is only brought forward automatically as far as the look-ahead range permits.
Programing Example
Limitation of the look-ahead range
%microjoint4
N01 G00 G90 X0 Y0
N02 G01 F10000
N03 V.G.M_FCT[100].PRE_OUTP_PATH = 28.6 ;in mm
N20 G91 Y1
N21 Y1 ; -> planned MicroJoint at Y1.4 mm
N22 Y1
N23 Y1
N24 Y1
N25 Y1
…
N37 Y1
N38 Y1
N39 Y1 ; -> real MicroJoint caused by block number limitation
N40 Y1
N41 Y1
N42 Y1
N43 Y1
N44 Y1
N45 Y1
N46 Y1
N47 Y1
N48 Y1
N49 Y1
N50 M100 M26
N99 M30
Explicit cancellation of the look-ahead range, #FLUSH, Read synchronous V.E. variable
The look-ahead range of M functions is reset by flushing the channel (#FLUSH or #FLUSH WAIT). In other words, the pre-output of M functions cannot be reversed beyond the #FLUSH point.
An implicit #FLUSH WAIT, i.e. the channel is flushed, can also be executed when a synchronous V.E variable (see [EXTV]) is read. A pre-output via the read access of a synchronous V.E. variable is therefore not possible either.
If an M/H function is brought forward beyond the look-ahead range, the M/H function is only brought forward automatically as far as the look-ahead range permits.
Programing Example
Explicit cancellation of the look-ahead range, #FLUSH, Read synchronous V.E. variable
%microjoint6
N01 G00 G90 X0 Y0
N02 G01 F10000
N10 V.G.M_FCT[100].PRE_OUTP_PATH = 28.6 ; in mm
N20 G91 Y1
N21 Y1 ; -> planned MicroJoint at Y1.4 mm
N22 Y1
N23 Y1
…
N38 Y1
N39 Y1
N40 Y1
N41 Y1
N42 Y1
N43 Y1
N44 Y1
N400#FLUSH ; -> MicroJoint inserted at Y24
N45 Y1
N46 Y1
N47 Y1
N48 Y1
N49 Y1
N50 M100 M26
N99 M30
"Overlapping" path-related pre-output
After a path-related pre-output of the M function is detected, all previously stored motion blocks are output. This corresponds to explicit flushing of the channel (see #FLUSH), thus avoiding delayed processing of the motion blocks.
As a result, it is not possible to overlap the path range of several M functions.
If pre-outputs of M/H functions overlap, the individual M/H functions are only brought forward automatically up to the originally programmed position.
Programing Example
"Overlapping" path-related pre-output
%microjoint5
(* M100 – Laser off, M26 – Laser on *)
N01 G00 G90 X0 Y0
N02 G01 F10000
N03 V.G.M_FCT[101].PRE_OUTP_PATH = 5 ;in mm
N04 V.G.M_FCT[102].PRE_OUTP_PATH = 23
N05 V.G.M_FCT[103].PRE_OUTP_PATH = 31
N20 X10
N30 M101 M26
N40 X30
N50 M102 M26
N60 X40
N70 M103 M26
N80 M30
Combination of MNS_SNS with and without pre-output path
It is not permitted to execute the simultaneous programming of MNS_SNS M functions with and without pre-output path in the same NC block including an axis motion.
Programing Example
Combination of MNS_SNS with and without pre-output path
%microjoint9
N01 G01 G90 X0 Y0 F10000
N02 V.G.M_FCT[100].PRE_OUTP_PATH = 35.6; in mm
N04 V.G.M_FCT[100].SYNCH = 8 ;MNS_SNS
N04 V.G.M_FCT[200].SYNCH = 8 ;MNS_SNS
N20 X10
N40 X30 M100 M200
N60 X40
N99 M30
Pre-output between output and synchronisation points of an MVS_SNS
It is not possible to insert an M/H function of synchronisation type MVS_SNS between output and synchronisation points. The pre-output of the M/H function is then only brought forward up to synchronisation point of the MCS_SNS at the most.
Programing Example
Pre-output of another M/H function of the MVS_SNS type
The example below shows an attemptyto move M100 between the output and synchronisation points of the M200 (an MVS_SNS with motion). In this case, M100 is not output as required at X9 but at the end of N10, i.e. at X10.
N01 G01 G90 X0 Y0 F1000
(Definitions of M functions)
N02 V.G.M_FCT[100].PRE_OUTP_PATH = 21.0
N03 V.G.M_FCT[100].SYNCH = 2 ; MVS_SVS
N04 V.G.M_FCT[200].SYNCH = 4 ; MVS_SNS
N10 X10 M200
N20 X30
N30 X40 M100
N40 X0 Y0
N50 M30