angelw Wrote:
Yes. lets hope that you get a reply in a timely manner. With regards to my source being incognito, I will provide his contact details to you, but I doubt that he would appreciate his details being published on a Forum for all and sundry to start contacting him.
Stefan’s Reply
Even in not conservative standards, 2 weeks is way beyond “a timely manner”. As to the “incognito source” – don’t bother, I am not looking to contact him.
angelw reply
Not surprising. When I asked for an official response, I was told that it’s not Fanuc’s policy to answer programming questions and will refer you to the Machine Tool Builder. My contact, where I got my previous statement was on a colleague to colleague basis.
In recent weeks I've contacted the Victorian manager of Renishaw and had a long and unambiguous conversation with him regarding the use of G31; his name is Mike Davies. He confirmed that their practice is to NOT follow a G31 Block with G53.
angelw Wrote:
Thus far the only evidence you have provided has been anecdotal.
Stefan’s Reply
Let me ignore this impertinence.
angelw reply:
You can ignore it all you like, but it doesn’t change the fact that you haven’t offered any example programs and the resulting error you claim, only anecdotes.
Stefan Wrote:
The “CAUTION” extract included in your previous posts indicates exactly the need of Buffer preventing block after G31 move block:
Specially, in case of reading/writing the system
variables to control signals, coordinates, offset
value, etc., it may different system variable data by
the timing of the NC statement execution. To avoid
this phenomenon, specify such M codes or G
codes before the macro statement, if necessary.
Unfortunately, the example given in this remark is poor and meaningless. As mentioned before, if they would use the N2 #100=#5061 instead of N2 #100=1. , everything would be clear. No NOTE, which with time became !CAUTION, would be needed. But they did not.
angelw reply
All Fanuc Manuals have the following tables, Copied and Pasted from a Fanuc Manual::
Stefan Wrote:
It also states in Fanuc Manuals that #506_ System Variables can be read during movement.
The operation of
touch trigger probe is based on the fact that the data is collected “on the fly”. This is obvious. Once the trigger is executed, the 506* registers are refreshed with the new data. The problem is, which 506* data are used in the next macro statement. In order to prevent the use of old (before the trigger being executed) data, the G53 block is needed.
angelw reply:
The G53 block is NOT needed.
blocks containing M codes for which buffering is suppressed by setting
parameters No.3411 to No.3420, and blocks containing G31 are not preread
What the above means, is that these codes halt buffering. G31 specified on its own, like G53, halts buffering. G31 with arguments halts buffering, is NOT pre-read and therefore, following it with G53 is superfluous.
angelw Wrote:
I've Posted recent program examples, run on a machine and not just text listing of a program, showing that a G31 Block used for the purpose it was designed, does indeed Buffer Prevent.
Stefan Reply
Unfortunately, in none of these examples the data of collected in 506* registers was use in macro sequence following the G31 move, therefore they are meaningless to the matter of this discussion.
angelw reply:
Not so. Its a known fact that G31specified on it's own with no coordinate addresses, can and is used to halt Buffering, that's well documented in Fanuc Manuals. What I was demonstrating was that G31 executed with coordinate addresses, as when used in its design application, performed in exactly the same manner to halt Buffering. But to satisfy you, here you go then, an example program made and tested today reading System Variable #5063.
The pictures I took with the phone of the program screen were rubbish. Accordingly, the following is the listing of the program. I'll take pictures tomorrow with a better camera and update this Post.
%
O0005
(G31 - G53 BUFFER HALT TEST)
N1 G00 G17 G21 G40 G49 G80 G94
G91 G28 Z0.0
G28 X0.0 Y0.0
T11 M06
G90 G00 G55 X0.0 Y0.0
G43 Z140.000 H11
G91 G31 Z-50.000 F1000
/G53
G65 H01 P#104 Q#5063
/G65 H01 P#105 Q#5063
M00
G91 G00 Z10.000
G28 Z0.0
G28 X0.0 Y0.0
M30
%
The picture following shows the result of executing the above program with Block Delete on, so that G53 and the Macro Statement writing to Common Variable #105 are ignored.
and the result of writing the content of System Variable #5063 into Common Variable #104.
The picture following shows the result of executing the above program with Block Delete off, so that G53 and the Macro Statement writing to Common Variable #105 are executed.
The result? As can be seen, the value read from System Variable #5063 and written to Common Variables #104 and #105 are the same precisely.
The use of G53 following G31 is tantamount to including G01 in consecutive Linear Interpolation Blocks; it does no harm, but its not necessary and it makes no difference to the performance of the program.