angelw
Diamond
- Joined
- Sep 10, 2010
- Location
- Victoria Australia
Hello Probe,
The Caution from the Fanuc Manual that tteitgen posted in his #951 Post and the text from which you have continued to use, is a general caution related to "Processing Macro Statements", as the heading of the article implies, and NOT related to G31 specifically, with G31 being included as the one of the solutions NOT part of the problem. The text that precedes that image should have been included to put it more in context. The more complete extract is shown below:
I've taken this matter up with the Resident Fanuc Engineer again and he is aliment that a Buffer Preventing Code is not required between a block containing a Buffer Preventing Code and a Macro Statement. This fellow is a career, Fanuc Company person who has been with Fanuc for the more than 30 years and I put far more stock in his opinion than example code written by a second party. The example you published with G53 following the Block containing G31 will work but it's not the presence of the G53 that makes the code work. The G31 Block completes before the next Block is executed because the G31 Block contains a Buffer Preventing Block, that being G31. I think your solution is a simply a solution looking for a problem.
The key word in the text of the picture above and that which is underlined in Red is "Containing". Whether the Buffer Preventing Code is Stand Alone in a Block or used in the manner for which it was designed, makes no difference; any Block that Contains a Buffer Preventing Code will Halt Buffering and have that Block complete before executing the next Block. The following extract from the text in the picture above and the Graphic representation of the program flow clearly indicate that the Block containing a Buffer Prevention Code will complete before the next Block is read.
At the blocks containing M00, M01, M02 or M30, blocks containing M-codes for which buffering is suppressed by setting parameters Nos. 3411 to 3420 and No.3421 to 3432, and blocks containing prevention buffering G codes such as G31 or G53, the CNC stops to preread the NC statement after that. Then, the stop of the macro statement execution is guaranteed until such M codes or G codes complete its execution.
Even the "if necessary" is a valid comment in the true context of the text in the picture above, as not all position System Variables need to have Buffering prevented before they can be accurately read. Any where their "Read operation during movement" is listed as Enabled can be read without Buffer Prevention; Block End Point, #5001–#5008, for example, is another that doesn't require Buffer Prevention for it's System Variable to be read and so, the following is allowed:
G90 G00 G54 X-100.0 Y0.0
#1=#5001
No Buffer Prevention necessary.
Regards,
Bill
The Caution from the Fanuc Manual that tteitgen posted in his #951 Post and the text from which you have continued to use, is a general caution related to "Processing Macro Statements", as the heading of the article implies, and NOT related to G31 specifically, with G31 being included as the one of the solutions NOT part of the problem. The text that precedes that image should have been included to put it more in context. The more complete extract is shown below:
I've taken this matter up with the Resident Fanuc Engineer again and he is aliment that a Buffer Preventing Code is not required between a block containing a Buffer Preventing Code and a Macro Statement. This fellow is a career, Fanuc Company person who has been with Fanuc for the more than 30 years and I put far more stock in his opinion than example code written by a second party. The example you published with G53 following the Block containing G31 will work but it's not the presence of the G53 that makes the code work. The G31 Block completes before the next Block is executed because the G31 Block contains a Buffer Preventing Block, that being G31. I think your solution is a simply a solution looking for a problem.
The key word in the text of the picture above and that which is underlined in Red is "Containing". Whether the Buffer Preventing Code is Stand Alone in a Block or used in the manner for which it was designed, makes no difference; any Block that Contains a Buffer Preventing Code will Halt Buffering and have that Block complete before executing the next Block. The following extract from the text in the picture above and the Graphic representation of the program flow clearly indicate that the Block containing a Buffer Prevention Code will complete before the next Block is read.
At the blocks containing M00, M01, M02 or M30, blocks containing M-codes for which buffering is suppressed by setting parameters Nos. 3411 to 3420 and No.3421 to 3432, and blocks containing prevention buffering G codes such as G31 or G53, the CNC stops to preread the NC statement after that. Then, the stop of the macro statement execution is guaranteed until such M codes or G codes complete its execution.
Even the "if necessary" is a valid comment in the true context of the text in the picture above, as not all position System Variables need to have Buffering prevented before they can be accurately read. Any where their "Read operation during movement" is listed as Enabled can be read without Buffer Prevention; Block End Point, #5001–#5008, for example, is another that doesn't require Buffer Prevention for it's System Variable to be read and so, the following is allowed:
G90 G00 G54 X-100.0 Y0.0
#1=#5001
No Buffer Prevention necessary.
Regards,
Bill
Last edited: