![]() | |
| Home Page | Mark Forums Read | Today's Posts | My Replies | Classifieds | Reviews | Photo Gallery | Web Links | Share Files | Advertise With Us | Ad List |
| |||||||
| Fanuc Discuss Fanuc controllers here! |
| This forum is sponsored by: |
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
| |||
| |||
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
| |||
| |||
| 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
| |||
| |||
| 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
| |||
| |||
| 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
| |||
| |||
| 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? |
| Sponsored Links |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | Search this Thread |
| Display Modes | |
| |