584,837 active members*
5,496 visitors online*
Register for free
Login
Results 1 to 16 of 16
  1. #1
    Join Date
    Feb 2006
    Posts
    1792

    suppressing buffering

    I had started a similar thread some time back, but did not get the solution at that time. So, I am restarting it. The question is how to suppress buffering during program execution on a Fanuc control. It is sometimes really needed. Read the following note which I have prepared for my students (please point out the mistakes/ambiguity, if any):

    Effect of buffering of macro statements on program execution
    The purpose of buffering is to speed up the program execution, by performing the calculations in advance. Normally, it only improves the performance of the machine, but there are situations when buffering is not desirable, and it must be somehow suppressed. For example, assume that system variable #1100 (which corresponds to signal F54.0, in the PMC ladder diagram) has been used to operate an external device, connected to the output terminal Y5.0 (which can be located on the terminal strip of the input/output module of the PMC), by adding the following rung to the existing ladder diagram:
    F54.0 Y5.0
    |--| |---------------------( )--|
    This rung would set the output device on or off, depending on the current status (1 or 0) of variable #1100. Now, if the requirement is to switch on the device somewhere in the middle of program execution, wait for five seconds, and then switch it off and restart the execution, one may insert the following blocks in the program, at the desired place:
    #1100 = 1;
    G04 X5;
    #1100 =0;
    Unfortunately, this would not work. The output would indeed be turned on, but while performing the dwell for five seconds, the next macro statement (#1100 = 0) would be buffered and immediately executed, switching off the output instantly. Thus, even though the execution would dwell for five seconds, the output would switch on only momentarily. Therefore, in order to have the desired effect, it is necessary to suppress buffering in this case. This can be very simply done by inserting a blank NC statement (a semicolon, the EOB symbol, is treated as a blank NC statement) after G04 block (though this method would not work in radius compensation mode):
    #1100 = 1;
    G04 X5;
    ;
    #1100 =0;
    Fanuc control does not define a G-code to limit buffering to the desired number of blocks, unlike Haas control which has G103 for this purpose.

  2. #2
    Join Date
    Sep 2005
    Posts
    767
    This is just a hunch, but try adding blank lines. The Fanuc may be buffering a specific number of blocks ahead, and this should defeat that. Try:

    #1100 = 1;
    G04 X5.;
    ;
    ;
    ;
    ;
    ;
    #1100 = 0

    Like I've said, this is only a hunch.

    A second idea would be to add an insignificant motion command, like so:

    #1100 = 1
    G04 X5.;
    G91 Z1
    Z-1
    G90
    #1100 = 0

  3. #3
    Join Date
    Feb 2006
    Posts
    1792
    So, this is the only method on Fanuc.
    Thanks for the information.

    The 0i manual indicates that in G40 mode only one NC statement (and all intervening macro statements) is buffered. So, I used only one blank NC statement (a semicolon). I believe, a semicolon is treated as an NC statement.

  4. #4
    Join Date
    Nov 2006
    Posts
    175
    no, not only.
    If we are talking about i series controls, there are several parameters - 3411..3432, where many M-codes can be assigned as preventing buffering. Writing dummy M-code there still needs proper FIN in the ladder.
    Another command preventing buffering is G53.

  5. #5
    Join Date
    Feb 2006
    Posts
    1792
    That is correct. The 0i manual gives parameters 3411-3420 for this purpose. But there is no mention of FIN or ladder.

    However, one should not suppress buffering in radius compensation mode, as this would result in incorrect machining. Am I right?

  6. #6
    Join Date
    Nov 2006
    Posts
    175
    Read the next page, with 3421..3432 you can define ranges.
    Where to use preventing buffering - usually in macros, where we want to be sure what is happening on exactly this line.

  7. #7
    Join Date
    May 2008
    Posts
    157

    Re: suppressing buffering

    I have been looking around to sort out the same problem of preventing buffering while executing macro statements. In my case, I post process the NC programs such that I assign a line number to the program (N1, etc) every 50 lines or 100 lines. Before this I assign the same line number digits to a permanent variable #592. The problem i faced was that the data was always wrong as in machine used to show minimum of 200 blocks ahead of whatever was actually being executed. Finally I gathered that mentioning G53 will kind of define the end of a buffering blocks. All of my machines have AICC2 with 200 blocks look ahead. I started using G53 just before every Macro statement block and now I face another problem of buffering not being enough on complex 3D programs as buffering does not happen on the fly.

    Is there any method where only a particular block can be avoided from buffering ?

  8. #8
    Join Date
    Feb 2011
    Posts
    640

    Re: suppressing buffering

    I just put two extra EOBs between blocks that share data.

  9. #9
    Join Date
    May 2008
    Posts
    157

    Re: suppressing buffering

    Quote Originally Posted by tc429 View Post
    I just put two extra EOBs between blocks that share data.
    My statement is as below.

    G53
    #592 = 10
    N10 G01 X... Y...

    Where am i supposed to put the EOB's ?

    Am i also supposed to remove the G53 which stops buffering of blocks altogether after G53 is mentioned ?

  10. #10
    Join Date
    Nov 2006
    Posts
    175

    Re: suppressing buffering

    As I stated in message #4, M-codes prevent buffering, but you must organize a free M-code with direct FINish. Because there are different ways to make FIN circuit, you must check your machine and do this same way.

  11. #11
    Join Date
    Sep 2013
    Posts
    4

    Re: suppressing buffering

    Is G53 working correctly to stop buffering ?

  12. #12
    Join Date
    Feb 2006
    Posts
    1792

    Re: suppressing buffering

    Quote Originally Posted by Mrunal View Post
    Is G53 working correctly to stop buffering ?
    This is what people have reported.
    You can use G31 also, without any argument, even if probe is not wired.

  13. #13
    Join Date
    May 2008
    Posts
    157

    Re: suppressing buffering

    Quote Originally Posted by Mrunal View Post
    Is G53 working correctly to stop buffering ?
    Yes it is very much working in my case for avoiding buffering of macro statements

  14. #14
    Join Date
    Jul 2010
    Posts
    118

    Re: suppressing buffering

    on all fanuc controls, the very basic dwell command does exactly that, prevent next line processing.
    G4 X0.1 (0.1 of a second), also described for this purpose in the manual.

    G31 alone in one line also prevent next line processing.

  15. #15
    Join Date
    May 2008
    Posts
    157

    Re: suppressing buffering

    Quote Originally Posted by norbert.barnard View Post
    on all fanuc controls, the very basic dwell command does exactly that, prevent next line processing.
    G4 X0.1 (0.1 of a second), also described for this purpose in the manual.

    G31 alone in one line also prevent next line processing.
    There have been issues with the amount of dwell given based on which results have varied. I have now settled at G4 P100 which has started giving me proper results. JFYI

  16. #16
    Join Date
    Oct 2018
    Posts
    7
    Hello ,

    I'm trying to get more information about buffering on fanuc controllers is there anyone that could point me in the right direction to get some document where this topic is explained more in depth
    thanks in advance

Similar Threads

  1. SPACE buffering in DNC Unit
    By Ashish B in forum DNC Problems and Solutions
    Replies: 8
    Last Post: 01-15-2011, 04:44 AM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •