Oh, one more:
O9380(...MEASURING-NO...)
IF[#2EQ#0]GOTO10
#506=#2
GOTO99
N10#506=#506+1
N99M99
Thanks
I have a machine (horizontal boring bar - with fanuc 15M controller) that has some probing macro's that I would like to change. I'm no pro at parametric programming. Currently, the probe only hits once when finding a position, as opposed to hitting twice (once at a faster feed rate then pull back and contact at a slower feed rate) like any other machine I've worked on. Also, when hitting that one time, it goes faster than I'd like and I've noticed differences when manually slowing the feed rate, so I'd really like it to hit twice.
I was wondering if anyone would be willing to take the time to decipher the following programs and let me know what I'd have to do to get it to hit twice, as described above. I have run across some very smart people on this website - was hoping to come across some more (or the same). Here are some programs, with 9100 being probing information and 9300 is the centering program, and all the programs those two programs call up:
O9100(...PROBE-INFORMATION...)
IF[#19EQ#0]GOTO20
IF[#19LE0]GOTO10
#500=#19
N10#501=#501+1
IF[#501LE#500]GOTO11
#501=1
N11#502=4
#505=0
#506=0
#507=9
#141=0
#142=0
#143=0
#144=5
#145=50
#146=1000
#147=5
#148=5
#109=0
IF[#507EQ6]GOTO12
#510=0
N12IF[#501NE1]GOTO20
#119=0
N20
#27=#7
#28=#9
#29=#18
#30=#1
#31=#2
#33=0
WHILE[#33LE7]DO1
IF[#[24+#33]EQ#0]GOTO30
#[141+#33]=#[24+#33]
N30#33=#33+1
END1
IF[#3EQ#0]GOTO40
#119=#3
GOTO50
N40IF[#11EQ#0]GOTO50
#119=#[#11]
N50IF[#507EQ6]GOTO60
IF[#20EQ#0]GOTO60
#510=#20
N60IF[#4EQ#0]GOTO70
IF[#4EQ#505]GOTO70
IF[#4NE0]GOTO65
#505=0
GOTO70
N65#505=1
N70IF[#17EQ#0]GOTO80
#502=#17
N80G65P9390B17.
N99M99
%
O9300(...CENTERING...)
G65P9380B#11
G65P9150A9300.
#8=1
M98P9200
IF[#110EQ#0]GOTO1
IF[#110LT0]GOTO10
N1
IF[[#23-54]*[#23-59]LE0]GOTO20
N10#23=0
GOTO50
N20
#23=#23-53
N30IF[#507NE6]GOTO35
#30=2500+#23
#31=2600+#23
GOTO40
N35#30=5201+#23*20
#31=5202+#23*20
N40
#17=1
IF[#17GT0]GOTO45
#[#30]=#115
#[#31]=#116
GOTO50
N45#[#30]=#[#30]+#115
#[#31]=#[#31]+#116
N50G90X#24Y#25
Z#26
G65P9120A-1.H126R#18
IF[#110EQ#0]GOTO61
#3000=199(ERROR FLAG ON)
GOTO99
N61
G65P9390B12.W#23I#[#30]J#[#31]
N99M99
%
O9200(...INSIDE-DIAMETER...)
IF[#8NE#0]GOTO10
IF[#501NE1]GOTO99
G65P9380B#11
G65P9150A9200.
N10IF[#7GT#144]GOTO20
G65P9150B-1.
GOTO99
N20
G65P9120A1.H126
G65P9130X#24Y#25Z#26
#30=[#7-#144]/2
IF[#502NE3]GOTO40
N30
IF[#4NE#0]GOTO32
#4=90
#5=210
#6=330
N32G65P9110X[COS[#4]]Y[SIN[#4]]C#30
#111=#138
#112=#139
G65P9110X[COS[#5]]Y[SIN[#5]]C#30
#113=#138
#114=#139
G65P9110X[COS[#6]]Y[SIN[#6]]C#30
#115=#138
#116=#139
GOTO50
N40
G65P9110X1.C#30
#111=#138
G65P9110X-1.C#30
#113=#138
G65P9110Y1.C#30
#114=#139
G65P9110Y-1.C#30
#116=#139
N50
G65P9140A-1.I#111J#112I#113J#114I#115J#116
IF[[#19-1]*[#19-2]NE0]GOTO60
#33=117+#19*3
#[#33]=#111
#[#33+1]=#112
#[#33+2]=#26
N60G65P9150I#24J#25K#26D#7U#111V#112W#26X#114
IF[#8NE#0]GOTO99
G65P9120A-1.H126R#18
G65P9390B1.
N99M99
%
O9110(...SKIP...)
(M54)
#10=#5001
#11=#5002
#12=#5003
#33=#3-#147
#32=#3+#148
IF[#33LE0]GOTO10
#32=#147+#148
G01G91X[#33*#24]Y[#33*#25]Z[#33*#26]F#146
N10
G31G91X[#32*#24]Y[#32*#25]Z[#32*#26]F#145
G04X2.
#27=#3+#148
G04X1.(** 91-3-20 **)
#28=SQRT[[#5001-#10]*[#5001-#10]+[#5002-#11]*[#5002-#11]+[#5003-#12]*[#5003-#12]]
IF[#28LT[#27-0.01]]GOTO20
G65P9150B-2.
N20
G04X1.(** 91-3-20 **)
#4=#5021
#5=#5022
#6=#5023
G01G90X#10Y#11Z#12F#146
G04
#30=#119
G04X1.(** 91-3-20 **)
#138=#5041-#5001
#139=#5042-#5002
#140=#5043-#5003
#138=#5061+#141-#30*#24-#138
#139=#5062+#142-#30*#25-#139
#140=#5063-#30*#26-#140
G65P9190X#24Y#25Z#26C#3I#4J#5K#6
N99M99
%
O9120(...POSITION-SAVE/RETURN...)
IF[#1LT0]GOTO20
N10
G04X1.(** 91-3-20 **)
#[#11]=#5001
#[#11+1]=#5002
#[#11+2]=#5003
GOTO99
N20
IF[#18EQ99]GOTO99
IF[#18EQ98]GOTO25
G65P9130X#[#11]Y#[#11+1]Z#[#11+2]
GOTO99
N25
G04X1.(** 91-3-20 **)
G65P9130X#5001Y#5002Z#[#11+2]
N99M99
%
O9130(...POSITIONING...)
IF[#26GT#5003]GOTO20
N10
G00G90X#24Y#25
Z#26
GOTO99
N20
G00G90Z#26
X#24Y#25
N99M99
%
O9150(...DATA-TRANSFER...)
IF[#1EQ#0]GOTO10
#100=#1
N10#110=#2
IF[#2NE#0]GOTO20
#33=0
WHILE[#33LE3]DO1
#[101+#33]=#[4+#33]
#[111+#33]=#[21+#33]
#[115+#33]=#[21+#33]-#[4+#33]
#33=#33+1
END1
GOTO99
N20
IF[#2GE0]GOTO99
N30G65P9390B#2X#24
GOTO[40-#2]
N41#3000=180(ILLEGAL-MACRO-CALL)
N42#3000=180(SKIP-SIGNAL-NOT-ON)
N43#3000=180(OUT-OF-TOLERANCE)
N44#3000=180(TOOL-FAILURE)
N99M99
%
I think I have them all. Any help is appreciated...
Similar Threads:
Oh, one more:
O9380(...MEASURING-NO...)
IF[#2EQ#0]GOTO10
#506=#2
GOTO99
N10#506=#506+1
N99M99
Thanks
Error.
Last edited by txcncman; 03-12-2012 at 04:24 AM.
Hi pwilson,
The actual measure hit is made in the following program. Its the only program that contains a G31 code, and I've highlighted it in RED. The coordinates of where the Skip Signal occurred are gained by reading the System Variables #5061 to #5063, and are highlighted in GREEN
Its clear that the program only makes one hit, so to make another hit you would add code after the G31 block highlighted in RED, to back away and repeat G31G91X[#32*#24]Y[#32*#25]Z[#32*#26]F#145. Of course, the amount you back off needs to be less than the inverse incremental move of X[#32*#24]Y[#32*#25]Z[#32*#26], otherwise the G31 Skip Signal may not execute on the second touch. A duplicate of the original G31 block can be used for the second touch.
However, having said the above, the only accuracy advantage that you would gain from taking a second hit would be to average the value of the two Skip Signal sets of coordinates. The program as is, rough positions at a Feed Rate of F1000 (#146) and then makes the Skip Signal touch at F50 (#145). In programs where two touches are made, its usual for the Probe to make touch at a high Feed Rate then back off to where this program is Rough Positioning, and then takes the second touch at a slow Feed Rate.
Basically, your program is doing the same as a two touch program, but without the first touch. The two touch program is normally one where the position of the feature to be touched is unknown within a reasonably small tolerance, ie 5mm or so. For example, a Tool Measuring Device, where tools of substantial length variation may be being measured for the first time. There are two different forms of Macro program for this purpose, one where a rough length of the tool being measured is either set in the Tool Length Offset registry, or passed to the Macro, and the second where no rough length is either set of passed. In the second form, the tool is positioned over the Tool Setter, and a Rapid move made in Z to a position well above the Setter, say 50mm for the longest tool that will conceivably be used. The slide then moves at a Fast Feed Rate using a G31 Skip Signal command to find the Setter. The slide then backs off a small incremental move and makes a second touch at Slow Feed.
If you want a slower Feed Rate for the touch, its #145 that needs to be slowed, not #146. #145 is currently set to #145=50 in your listed program.
Regards,
Bill
O9110(...SKIP...)
(M54)
#10=#5001
#11=#5002
#12=#5003
#33=#3-#147
#32=#3+#148
IF[#33LE0]GOTO10
#32=#147+#148
G01G91X[#33*#24]Y[#33*#25]Z[#33*#26]F#146 << This block positions in fresh air so the Feed Rate is rather irrelevant with regards to accuracy. It needs to be fast so not to waste time positioning for the touch in the following G31 block.
N10
G31G91X[#32*#24]Y[#32*#25]Z[#32*#26]F#145
G04X2.
#27=#3+#148
G04X1.(** 91-3-20 **)
#28=SQRT[[#5001-#10]*[#5001-#10]+[#5002-#11]*[#5002-#11]+[#5003-#12]*[#5003-#12]]
IF[#28LT[#27-0.01]]GOTO20
G65P9150B-2.
N20
G04X1.(** 91-3-20 **)
#4=#5021
#5=#5022
#6=#5023
G01G90X#10Y#11Z#12F#146
G04
#30=#119
G04X1.(** 91-3-20 **)
#138=#5041-#5001
#139=#5042-#5002
#140=#5043-#5003
#138=#5061+#141-#30*#24-#138
#139=#5062+#142-#30*#25-#139
#140=#5063-#30*#26-#140
G65P9190X#24Y#25Z#26C#3I#4J#5K#6
N99M99
%
O9120(...POSITION-SAVE/RETURN...)
IF[#1LT0]GOTO20
N10
G04X1.(** 91-3-20 **)
#[#11]=#5001
#[#11+1]=#5002
#[#11+2]=#5003
GOTO99
N20
IF[#18EQ99]GOTO99
IF[#18EQ98]GOTO25
G65P9130X#[#11]Y#[#11+1]Z#[#11+2]
GOTO99
N25
G04X1.(** 91-3-20 **)
G65P9130X#5001Y#5002Z#[#11+2]
N99M99
%
O9130(...POSITIONING...)
IF[#26GT#5003]GOTO20
N10
G00G90X#24Y#25
Z#26
GOTO99
N20
G00G90Z#26
X#24Y#25
N99M99
%
O9150(...DATA-TRANSFER...)
IF[#1EQ#0]GOTO10
#100=#1
N10#110=#2
IF[#2NE#0]GOTO20
#33=0
WHILE[#33LE3]DO1
#[101+#33]=#[4+#33]
#[111+#33]=#[21+#33]
#[115+#33]=#[21+#33]-#[4+#33]
#33=#33+1
END1
GOTO99
N20
IF[#2GE0]GOTO99
N30G65P9390B#2X#24
GOTO[40-#2]
N41#3000=180(ILLEGAL-MACRO-CALL)
N42#3000=180(SKIP-SIGNAL-NOT-ON)
N43#3000=180(OUT-OF-TOLERANCE)
N44#3000=180(TOOL-FAILURE)
N99M99
%
I think I have them all. Any help is appreciated...[/QUOTE]
Last edited by angelw; 03-12-2012 at 05:21 AM.
Hi Bill,
Thank you for taking the time to reply to my post.
Currently, the program takes the one hit, where would I put the duplicate line exactly (to take the second hit)? Also, how would I include this second hit in the calculations? You had said "the only accuracy advantage that you would gain from taking a second hit would be to average the value of the two Skip Signal sets of coordinates. The program as is, rough positions at a Feed Rate of F1000 (#146) and then makes the Skip Signal touch at F50 (#145). In programs where two touches are made, its usual for the Probe to make touch at a high Feed Rate then back off to where this program is Rough Positioning, and then takes the second touch at a slow Feed Rate" How do I get it to average the value of the two Skip Signal sets of coordinates?
Or don't you think I really need the two hits? The only reason I was trying to get the two hits was because the only hit was fast, but now I see it is at F50 and I'm in IPM so that's 50 IPM, which is too fast I think for a hit. We need to manually override it to slow down enough to give us an accurate reading. Well the other reason I wanted two hits is because I am used to seeing that on every other machine. Do you think it's necessary?
Program 9100 is the probe information program. In the line with that program, we put what the feed rate should be on the hit and on the approach (at least that's what the book says), it would look something like this:
G65P9100X0Y0Z12.218A.3B.1C0D.197F.05I0.Q4.R60.S0
Based on what the book says, the "F.05" should control the speed of the hit and the R60. should be the approach speed (I think) - but it doesn't feed at the slow feed rate when running programs like 9300. I might have found the problem when I typed that line above in because each command needs a decimal point with each value and I notice that the "F.05" has the decimal point right after the "F" which might be screwing things up. I will be in the shop in about 2 hours - I will check that out.
So, do you think I need the second hit or just slow down the current hit from "F50" to something slower and keep it at one hit? If I need the second hit, could you show me where to put it as well as any other lines of code I may need?
Thanks for your help....
I haven't had a chance to go through the program line by line, but I can tell you about some of your issues.
1. Your following block, G65P9100X0Y0Z12.218A.3B.1C0D.197F.05I0.Q4.R60.S0, passes the argument A, B, F, and R to O9100, and are Local Variables #1, #2, #9, and #18 in that program. Their values are then allocated to the Local Variables #30, #31, #28 and #29 respectively; and that's where it ends. Accordingly, passing A, B, F and R has no effect.
2. The Skip program O9110 uses #146 and #145 as the Feed Rate for the Rough Positioning and the Touch respectively. These are Common Variables, set in program O9100 and are not modified anywhere else. Accordingly, if you want a different Feed Rate for either of these, you need to change them in O9100. Clearly, the F and R arguments passed in your call block are not being used to specify or regulate the two Feed Rates.
3. Clearly, these Macro programs were primarily created for use with a Metric configured machine. However, you could test for the Mode the control is set to, Imperial(G20) or Metric(G21), and convert the Feed Rate stored in #145 and #146 to IMP if the control is set to Imperial Mode. The changes required made to program O9100 are shown in RED
4. As you're using Imperial mode, it would seem that #147=5 and #148=5 would represent 5" instead of 5mm. These variables are used in the rough positioning and the touch coordinates, they should be converted to inch as well, and probably #144 also.
You don't need to make a second touch with this program. As I explained in my previous Post, your program does what the two touch program does, but without the first Hard Touch. Its making the Touch at F50 which is a slow feed in Metric Mode. In a two touch program, the second touch would be made at this slow feed rate.
Does your book give any reference to an "S" argument being passed with this block G65P9100X0Y0Z12.218A.3B.1C0D.197F.05I0.Q4.R60.S0? If so whats its proposed purpose?
Regards,
Bill
O9100(...PROBE-INFORMATION...)
IF[#19EQ#0]GOTO20
IF[#19LE0]GOTO10 IF[#19LE0]GOTO9
#500=#19
N10#501=#501+1 N9#501=#501+1
IF[#501LE#500]GOTO11 IF[#501LE#500]GOTO10
#501=1
N11#502=4 N10#502=4
#505=0
#506=0
#507=9
#141=0
#142=0
#143=0
#144=5
#145=50
#146=1000
IF[#4006=21]GOTO11
#145=[#145/25.4] <Convert to IPM
#146=[#146/25.4] <Convert to IPM
N11
#147=5
#148=5
#109=0
IF[#507EQ6]GOTO12
#510=0
N12IF[#501NE1]GOTO20
#119=0
N20
#27=#7
#28=#9
#29=#18
#30=#1
#31=#2
#33=0
WHILE[#33LE7]DO1
IF[#[24+#33]EQ#0]GOTO30
#[141+#33]=#[24+#33]
N30#33=#33+1
END1
IF[#3EQ#0]GOTO40
#119=#3
GOTO50
N40IF[#11EQ#0]GOTO50
#119=#[#11]
N50IF[#507EQ6]GOTO60
IF[#20EQ#0]GOTO60
#510=#20
N60IF[#4EQ#0]GOTO70
IF[#4EQ#505]GOTO70
IF[#4NE0]GOTO65
#505=0
GOTO70
N65#505=1
N70IF[#17EQ#0]GOTO80
#502=#17
N80G65P9390B17.
N99M99
%
Last edited by angelw; 03-12-2012 at 09:49 AM.
Yes, for the "S" argument, this is what the book says:
S: Measurement skip frequency (If the number has been already set in common variable #500, S = 0).
So, setting A & B isn't doing anything in program 9100? It should be the amount of approach and overrun at the time of measurement. In program 9300 (which is the centering program) it is using Local Variables #30 and #31. Also in program 9200 (inside diameter) uses #30 a bunch, but no #31.
The "F" and "R" are the measurement feed rate and rapid feed rate, which I'm not sure is doing anything (I am about to test it out on the machine). Wouldn't "F" be #9 and "R" be #18? If so, their values are allocated to #28 & #29 in program 9100...
Regarding the changes required in RED, are these lines supposed to be after the line they are on, or replacing that line, or ?
Thanks again for your help.
Oops, sorry, I see that you've already identified "F" and "R" as #9 and #18...
I just came back from the machine, and I changed #145 (feed rate for the touch) to 2.0 from 50. The machine still touches at F50 IPM though. In the 9100 block, I have the "F" specified at .05. It displays this on the control (Fanuc 15m), but shows the actual at 50.
I'm lost.
Hi pwilson,
What do you mean by having "F" specified at .05? Do you mean that #145 has the value .05 applied to it, because that's the only way that the Touch Feed Rate is going to be altered.
If you have changed #145 to 2.0 and it still uses 50 when the probe actually feeds onto the feature, then you must not have supplied all of the program to be looked at.
Of the programs you have listed #145 and #146 appear only in O9100, the setting program, and O9110, the Skip program where the Touch takes place. These two variables are Common Variables meaning that their value is available in all programs that use them. Unless #145 and #146 are being changed back to 50 and 1000 respectively in another program that you have not Posted then changing them in O9100 will have the value that they're changed to used in O9110.
To see what Macro Programs are actually being used, and to see whats actually occurring in the various Macro programs, set bit 5 of parameter 0010 to 1. This will allow the Macro statements to be executed in single block mode. Once this parameter is set, launch your call block in single block and step through the whole process until finished, or at least until the control gets to the G31 block in O9110. At any time during this process, you can look at the value of any Variable of interest in the Macro Variable registry pages.
If you change #145 to 2.0 in O9100, then you should see this value in the Macro Variable Registry Page for that variable number. When you get to the G31 block, check it again. It should still be the value you set it to in O9100 unless its being changed in a program that you haven't Posted. For starters, G65P9390B12.W#23I#[#30]J#[#31] in O9100 is calling O9390 and you don't list that program in your Post.
Regarding the blocks that show the the original block in black and the alternate block in RED, replace the Black code with the RED code
Regards,
Bill
Last edited by angelw; 03-12-2012 at 05:20 PM.
Hi angelw,
Unfortunately, the job has been pulled from the machine for another job, so I will not be able to investigate again for a week or so, but I do want to resolve the issue so I will post back when I can...
I did change #145 to 2.0 and it still was feeding at 50. I know what you mean, that there must be somewhere else that it is calling it (#145) up and overriding the 2.0, I just can't find it. I went through the programs to make sure there weren't any other ones being called up and didn't see any that I haven't included except the one you mentioned.
Here is the program that was missing (9390):
O9390(...PRINT-OUT/MM...)
IF[#505EQ0]GOTO9990
POPEN
IF[#506NE#0]GOTO10
#506=0
N10IF[#24NE#0]GOTO20
#24=0
N20IF[#2GE0]GOTO1000
N100
GOTO[100-#2*10]
N110DPRNT[#506[40]-#100[40]*///*ALARM*///*ILLEGAL*MACRO*CALL]
GOTO200
N120DPRNT[#506[40]-#100[40]*///*ALARM*///*SKIP*SIGNAL*NOT*ON]
GOTO200
N130DPRNT[#506[40]-#100[40]*///*ALARM*///*OUT*OF*TOLERANCE]
GOTO200
N140DPRNT[#506[40]-#100[40]*///*ALARM*///*TOOL*FAILURE]
N200DPRNT[************P#100[40]**********T#24[40]**********H#109[30]]
#505=0
GOTO9999
N1000
IF[#4006EQ21]GOTO1001
M98P9394
GOTO9999
N1001GOTO[1000+#2*10]
N1010
DPRNT[#506[40]-#100[40]*INSIDE*DIAMETER/#502[10]-POINTS]
GOTO2010
N1020
DPRNT[#506[40]-#100[40]*OUTSIDE*DIAMETER/#502[10]-POINTS]
GOTO2010
N1030
DPRNT[#506[40]-#100[40]*CENTER*DISTANCE]
GOTO2010
N1040
DPRNT[#506[40]-#100[40]*WIDTH*OF*GROOVE]
GOTO2040
N1050
DPRNT[#506[40]-#100[40]*THICKNESS]
GOTO2040
N1060
DPRNT[#506[40]-#100[40]*DEPTH*/*HEIGHT]
GOTO2040
N1070
DPRNT[#506[40]-#100[40]*ORTHOGONAL*COORDINATES]
GOTO2070
N1080
DPRNT[#506[40]-#100[40]*INCLINATION]
GOTO2040
N1090
DPRNT[#506[40]-#100[40]*TOOL*LENGTH]
#30=#[2000+#109]
DPRNT[************Z0*#103[53]**Z**#113[53]**EZ*#117[53]**H#109[30]*#30[53]]
GOTO9999
N1100
DPRNT[#506[40]-#100[40]*TOOL*WEAR]
GOTO2040
N1110
DPRNT[#506[40]-#100[40]*CENTERING*BY*OUTSIDE*DIAMETER/#502[10]-POINTS]
IF[#23EQ0]GOTO2010
GOTO2110
N1120
DPRNT[#506[40]-#100[40]*CENTERING*BY*INSIDE*DIAMETER/#502[10]-POINTS]
IF[#23EQ0]GOTO2010
GOTO2110
N1130
DPRNT[#506[40]-#100[40]*COMPENSATION*OF*DATUM*PLANE]
IF[#23EQ0]GOTO2040
#30=53+#23
GOTO[1130+#24]
N1131DPRNT[************X0*#101[53]**X**#111[53]**EX*#115[53]**G#30[20]X*#4[53]]
GOTO9999
N1132DPRNT[************Y0*#102[53]**Y**#112[53]**EY*#116[53]**G#30[20]Y*#5[53]]
GOTO9999
N1133DPRNT[************Z0*#103[53]**Z**#113[53]**EZ*#117[53]**G#30[20]Z*#6[53]]
GOTO9999
N1140
#27=9350
IF[#100NE9330]GOTO1141
#27=9340
N1141#30=#[2000+#109]
DPRNT[#506[40]-#27[40]*TOOL*OFFSET*CHANGE]
IF[#27EQ9340]GOTO1142
DPRNT[************I**#105[53]**J**#106[53]**U**#107[53]**V**#108[53]]
N1142
IF[#109GT400.]GOTO1143
#19=#109-200.
DPRNT[************P#100[40]**********T#24[40]**************************H#19[30]*#30[53]]
GOTO9999
N1143
#19=#109-600.
DPRNT[************P#100[40]**********T#24[40]**************************D#19[30]*#30[53]]
GOTO9999
N1150
DPRNT[#506[40]-#100[40]*COORDINATE*OF*PLANE]
GOTO2040
N1160
DPRNT[#506[40]-*9170*ECCENTRICITY*OF*PROBE]
GOTO2070
N1170
DPRNT[#506[40]-*9100*PROBE*INFORMATION]
DPRNT[************X**#141[53]**Y**#142[53]**Z**#143[53]**D**#144[53]]
DPRNT[************F**#145[53]**R**#146[53]**A**#147[53]**B**#148[53]]
DPRNT[************C**#119[53]]
GOTO9999
N1180
DPRNT[#506[40]-*9160*AMOUNT*OF*CALIBRATION]
DPRNT[************P#100[40]**********C**#119[53]**AT*F#145[53]]
GOTO9999
N1190
IF[#505LT10]GOTO9999
DPRNT[SKIPPED*AT*X**#138[53]**Y**#139[53]**Z**#140[53]]
GOTO9999
N2010
DPRNT[************X0*#101[53]**X**#111[53]**EX*#115[53]]
DPRNT[************Y0*#102[53]**Y**#112[53]**EY*#116[53]]
DPRNT[************D0*#104[53]**D**#114[53]**ED*#118[53]]
GOTO9999
N2040
GOTO[2040+#24]
N2041DPRNT[************X0*#101[53]**X**#111[53]**EX*#115[53]]
GOTO9999
N2042DPRNT[************Y0*#102[53]**Y**#112[53]**EY*#116[53]]
GOTO9999
N2043DPRNT[************Z0*#103[53]**Z**#113[53]**EZ*#117[53]]
GOTO9999
N2044DPRNT[************A0*#104[53]**A**#114[53]**EA*#118[53]]
GOTO9999
N2070
DPRNT[************X0*#101[53]**X**#111[53]**EX*#115[53]]
DPRNT[************Y0*#102[53]**Y**#112[53]**EY*#116[53]]
GOTO9999
N2110
#30=53+#23
DPRNT[************X0*#101[53]**X**#111[53]**EX*#115[53]**G#30[20]X*#4[53]]
DPRNT[************Y0*#102[53]**Y**#112[53]**EY*#116[53]**G#30[20]Y*#5[53]]
GOTO9999
N9999PCLOS
N9990M99
%
It calls up program 9394:
O9394(...PRINT-OUT/INCH...)
GOTO[1000+#2*10]
N1010
DPRNT[#506[40]-#100[40]*INSIDE*DIAMETER/#502[10]-POINTS]
GOTO2010
N1020
DPRNT[#506[40]-#100[40]*OUTSIDE*DIAMETER/#502[10]-POINTS]
GOTO2010
N1030
DPRNT[#506[40]-#100[40]*CENTER*DISTANCE]
GOTO2010
N1040
DPRNT[#506[40]-#100[40]*WIDTH*OF*GROOVE]
GOTO2040
N1050
DPRNT[#506[40]-#100[40]*THICKNESS]
GOTO2040
N1060
DPRNT[#506[40]-#100[40]*DEPTH*/*HEIGHT]
GOTO2040
N1070
DPRNT[#506[40]-#100[40]*ORTHOGONAL*COORDINATES]
GOTO2070
N1080
DPRNT[#506[40]-#100[40]*INCLINATION]
GOTO2040
N1090
DPRNT[#506[40]-#100[40]*TOOL*LENGTH]
#30=#[2000+#109]
DPRNT[************Z0*#103[44]**Z**#11+3[44]**EZ*#117[44]**H#109[30]*#30[44]]
GOTO9999
N1100
DPRNT[#506[40]-#100[40]*TOOL*WEAR]
GOTO2040
N1110
DPRNT[#506[40]-#100[40]*CENTERING*BY*OUTSIDE*DIAMETER/#502[10]-POINTS]
IF[#23EQ0]GOTO2010
GOTO2110
N1120
DPRNT[#506[40]-#100[40]*CENTERING*BY*INSIDE*DIAMETER/#502[10]-POINTS]
IF[#23EQ0]GOTO2010
GOTO2110
N1130
DPRNT[#506[40]-#100[40]*COMPENSATION*OF*DATUM*PLANE]
IF[#23EQ0]GOTO2040
#30=53+#23
GOTO[1130+#24]
N1131DPRNT[************X0*#101[44]**X**#111[44]**EX*#115[44]**G#30[20]X*#4[44]]
GOTO9999
N1132DPRNT[************Y0*#102[44]**Y**#112[44]**EY*#116[44]**G#30[20]Y*#5[44]]
GOTO9999
N1133DPRNT[************Z0*#103[44]**Z**#113[44]**EZ*#117[44]**G#30[20]Z*#6[44]]
GOTO9999
N1140
#27=9350
IF[#100NE9330]GOTO1141
#27=9340
N1141#30=#[2000+#109]
DPRNT[#506[40]-#27[40]*TOOL*OFFSET*CHANGE]
IF[#27EQ9340]GOTO1142
DPRNT[************I**#105[44]**J**#106[44]**U**#107[44]**V**#108[44]]
N1142
DPRNT[************P#100[40]**********T#24[40]**************************H#109[30]*#30[44]]
GOTO9999
N1150
DPRNT[#506[40]-#100[40]*COORDINATE*OF*PLANE]
GOTO2040
N1160
DPRNT[#506[40]-*9170*ECCENTRICITY*OF*PROBE]
GOTO2070
N1170
DPRNT[#506[40]-*9100*PROBE*INFORMATION]
DPRNT[************X**#141[44]**Y**#142[44]**Z**#143[44]**D**#144[44]]
DPRNT[************F**#145[44]**R**#146[44]**A**#147[44]**B**#148[44]]
DPRNT[************C**#119[44]]
GOTO9999
N1180
DPRNT[#506[40]-*9160*AMOUNT*OF*CALIBRATION]
DPRNT[************P#100[40]**********C**#119[44]**AT*F#145[44]]
GOTO9999
N1190
IF[#505LT10]GOTO9999
DPRNT[SKIPPED*AT*X**#138[44]**Y**#139[44]**Z**#140[44]]
GOTO9999
N2010
DPRNT[************X0*#101[44]**X**#111[44]**EX*#115[44]]
DPRNT[************Y0*#102[44]**Y**#112[44]**EY*#116[44]]
DPRNT[************D0*#104[44]**D**#114[44]**ED*#118[44]]
GOTO9999
N2040
GOTO[2040+#24]
N2041DPRNT[************X0*#101[44]**X**#111[44]**EX*#115[44]]
GOTO9999
N2042DPRNT[************Y0*#102[44]**Y**#112[44]**EY*#116[44]]
GOTO9999
N2043DPRNT[************Z0*#103[44]**Z**#113[44]**EZ*#117[44]]
GOTO9999
N2044DPRNT[************A0*#104[44]**A**#114[44]**EA*#118[44]]
GOTO9999
N2070
DPRNT[************X0*#101[44]**X**#111[44]**EX*#115[44]]
DPRNT[************Y0*#102[44]**Y**#112[44]**EY*#116[44]]
GOTO9999
N2110
#30=53+#23
DPRNT[************X0*#101[44]**X**#111[44]**EX*#115[44]**G#30[20]X*#4[44]]
DPRNT[************Y0*#102[44]**Y**#112[44]**EY*#116[44]**G#30[20]Y*#5[44]]
GOTO9999
N9999M99
%
I figured they were print-out programs and weren't relevant, but then again, what do I know?
I will step the probing cycle through as you suggest, hoping to find where the 50 is coming from.
Thanks again for taking the time to help.
Hi Wilson,
Yes, its as you thought, this Macro is to output data to a file and has no reference to the variables for Feed Rate.
Stepping through the program will find whats happening with the #145, #146 variables.
Keep in touch if you want further help.
Regards,
Bill
I haven't read through all this, but.
Seems like #145=50 is at least one of the issues?
And
F#145 is a feed rate you don't want?
Then just give it a number you like.
Change F#145 to F10 or what ever, then who cares what is changing
#145 variable........
My first question would be, if you probe at the fast feed rate and get a setting and then manually override feed rate to a slower feed rate and probe again, do you get a variation in the setting? If not, the feed rate change would only be to make you more comfortable and does not effect the performance.
As mentioned before, the 2 hit scenario probably does not save a value that effects the final output setting. It only gets a position to probe to at a slower feed rate. The slow feed rate probing actually captures the position for setting. In this case, see above.
If the 2 hit scenario is averaging, then it may be of value, if you do obtain a difference between the first hit and the second hit.
In the OP's particular Probe Program, there is no second hit. In the following blocks:
G01G91X[#33*#24]Y[#33*#25]Z[#33*#26]F#146 << This block just gets the Probe close to the feature, but is in fresh air when the block terminates.
G31G91X[#32*#24]Y[#32*#25]Z[#32*#26]F#145 << This block uses the G31 Skip Function to make contact with the Feature.
This type of Macro relies on the approximate position of the feature being known. The Macro that uses two hits is one where the Feature position is generally unknown. In this case, G31 would be used in both the above blocks, so that the first block would have the Probe head in the correct direction and find the Feature by basically running into it. The probe would when be moved away form the feature a short distance and a second touch made via the second block at a slower feed rate.
exhaustgases is correct in that the occurrences of F#145 could be replaced with a fixed feed rate, but it starts to erode the flexibility of the program. Its not Rocket Science to find where and why #145 is being changed. Step through the program once in single block would reveal all, and pwilson may have found the issue given that its been some time now since he last visited this Thread.
Regards,
Bill