What's new
What's new

How to use G31 torque skip

Joined
Nov 15, 2005
Location
Illinois
Hey guys,
I need some help. I have a Miyano BND51S with Faunuc control. I am trying to turn between centers and this machine has a subspindle, not a tailstock. Currently I am having the B-axis rapid within .03 of the part them they have to feed in manually until the center touches the part. Then they continue with the program. For production I want to use G31 torque skip. So once the B-axis hits a certain load the axis will stop and continue with the rest of the program. Question is, where do you input the max load or deviation before the G31 skips? whats the difference between P99 and P98 after the G31? Thanks a bunch !!!
 
This is something I've been wanting to get working on our Doosan that also lacks anywhere to enter a torque limit. Your post prompted me to do some digging.

Here is what I've figured out, hopefully Bill or someone will chime in and tell me if this is all good or not, but it does seem to work having done some crude trials with a bit of timber between the chucks :o

You'll need to check your parameters, this works on our 18i

Parameter 2060 contains the torque limits for each axis, but it's global - not restricted to the G31 function, so you can't leave it set.

G10 L50
N2060 P6 R1000 ( P is the axis number, in my case B is 6. R is an arbitrary value that I picked out of thin air, seems to equate to about 40% axis load.)
G11
G98 G31 P99 B-xxx Fxxx
G10 L50
N2060 P6 R8010 ( 8010 is just what it was set at previously.)
G11

If nobody can find any problems with this approach I will probably roll it into a sub and assign a g code with parameters for the limit value, B coordinate and feedrate.

I forgot to link an old post of Bills where he explains the P98/P99 thing.
 
Last edited:
Hi gregormarwick. Did you get this working as described? I'm about to attempt something similar and was wondering if this method worked. Thanks.
 
Hi gregormarwick. Did you get this working as described? I'm about to attempt something similar and was wondering if this method worked. Thanks.

Yes it works as I posted and have been using it that way since in that machine. I did write a very simple macro just to contain it.

I generally use it twice during a cut off, first to push onto the part, second to pull away when both chucks are clamped to hold the part under a bit of tension. Prevents the insert getting jammed between the part and the bar when it cuts through. Passing #5006 (or whichever is appropriate for your axis) as the R value prevents any rapid movement.

%
O2000 (SUB PUSH ON)


(R B-AXIS RAPID PLANE)
(W B-AXIS PUSH PLANE)
(H PUSH TORQUE - 800)
(F PUSH FEEDRATE MMPM)


G0 B#18 (RAPID TO R PLANE)


G10 L50
N2060 P6 R#11
G11
G98 G31 P99 B#23 F#9 (PUSH ONTO PART)
G10 L50
N2060 P6 R8010
G11


M99
%
 
Don't forget to put a position check after the G31 - give yourself a few thousandths either way so you know that you don't have a chip in the sub spindle or anything like that.
 
Hi gregormarwick. Thanks for posting that. It worked great. For the record, this works on a Hardinge Elite lathe with a Fanuc 21iT-B control. I didn't use it for a sub-spindle but rather to check to make sure the tailstock was in the correct position. I am bar feeding and worried about the bar feeding out short and allowing the tailstock to move too far forward, thus creating a collision opportunity for some of the tools. It has already saved me once from a bad feed out from a bent bar.
 
Oh boy...I have a Hardinge T42 with 18T control. Do you know if this might work or where to look for that info? Some jobs parts tend to get stuck in the sub so we have to have someone there all the time. I would love to have a non-riding something (die spring?) sticking out radially of the turret and feed into the part and if it senses the part there by the spring being pushed and the load going up then it knows the part did not eject and stop the machine.

I talked to Hardinge (Morris Midwest) about installing a whisker thinger but they were no help.

Thank you!
 
You could install a BK Mikro, but if you've got G31 and also have the ability to read position for macros you can do a torque skip with position check. I just started the G31 at least one part stickout from the subspindle away from the part in the main to make sure there wouldn't be a collision. The code looked up the subspindle Z axis absolute position and if it wasn't within 0.002" of the target location, it alarmed out. It was meant for chip check when I first saw it but I later used it for what you describe. I had a part that would sometimes hang on the ejector.
 
Oh boy...I have a Hardinge T42 with 18T control. Do you know if this might work or where to look for that info? Some jobs parts tend to get stuck in the sub so we have to have someone there all the time. I would love to have a non-riding something (die spring?) sticking out radially of the turret and feed into the part and if it senses the part there by the spring being pushed and the load going up then it knows the part did not eject and stop the machine.

I talked to Hardinge (Morris Midwest) about installing a whisker thinger but they were no help.

Thank you!

First off, let me just say that machines without part detection on the sub are dumb. I have seven machines with subs, and only the early '90s Star machines have this feature. All the other machines are newer but lack this "high-tech" feature. Why doesn't everyone make this standard?

Anyway, I have the same machine (Conquest T42) but with a tailstock instead of a sub. I tested it out using the G31 P99 in MDI, and it took it. My 18T parameter manual says that parameter #2060 is "Torque Limit", so that is the same as the example above. I'm pretty sure your machine has macros, so I'd say that you have all the elements to make this work. It would take some experimenting to get it going. Let me know if you would like further help.

It might be worth double checking in the manual to see if you have an M-code that accomplishes the same thing. I have a Hardinge Swiss machine of a similar vintage and the same control (or maybe it's an 18i...), and it has an M-code to turn on a "sensitive mode" for the sub. I want to say it's M73 on and M74 off. I turn it on when I'm pulling back the sub after parting off to check if the cut off tool is still intact and doing it's job. I also turn it on when I'm moving the sub onto the part for cut off. If the previous part is stuck in the collet, it bumps the next part and alarms out. This is similar to what Rick Finsta describes above. That might be a good option for you instead of trying to hit the part with the turret. I think the T42 has clutches on the X and Z, and it would be a pain to pop those accidentally while you're figuring this out...but better than damaging the machine, right?
 
First off, let me just say that machines without part detection on the sub are dumb. I have seven machines with subs, and only the early '90s Star machines have this feature. All the other machines are newer but lack this "high-tech" feature. Why doesn't everyone make this standard?

Anyway, I have the same machine (Conquest T42) but with a tailstock instead of a sub. I tested it out using the G31 P99 in MDI, and it took it. My 18T parameter manual says that parameter #2060 is "Torque Limit", so that is the same as the example above. I'm pretty sure your machine has macros, so I'd say that you have all the elements to make this work. It would take some experimenting to get it going. Let me know if you would like further help.

It might be worth double checking in the manual to see if you have an M-code that accomplishes the same thing. I have a Hardinge Swiss machine of a similar vintage and the same control (or maybe it's an 18i...), and it has an M-code to turn on a "sensitive mode" for the sub. I want to say it's M73 on and M74 off. I turn it on when I'm pulling back the sub after parting off to check if the cut off tool is still intact and doing it's job. I also turn it on when I'm moving the sub onto the part for cut off. If the previous part is stuck in the collet, it bumps the next part and alarms out. This is similar to what Rick Finsta describes above. That might be a good option for you instead of trying to hit the part with the turret. I think the T42 has clutches on the X and Z, and it would be a pain to pop those accidentally while you're figuring this out...but better than damaging the machine, right?

Thanks, wmpy! I will look into "sensitive mode" but in the meantime we tried G31P99 and got an "015 P/S Alarm" Have you any idea what that means? The machine DOES has macros enabled.

You are right about the clutches and popping them back as needed...could be worse!

Whenever the part gets stuck in the sub and runs into the next part 9 times out of 10 the sub goes UP and we can put a 2X4 between the sub and the turret and jog the turret down in X to push the sub back into alignment haha. Pulling it UP requires a sling. :)

I wonder IF we end up getting G31 to work if it would work on the Z-axis while picking off, similarly to how you described using your sensitive mode...probably better than swinging something from the turret by the part to check!

Thank you!
 
Thanks, wmpy! I will look into "sensitive mode" but in the meantime we tried G31P99 and got an "015 P/S Alarm" Have you any idea what that means? The machine DOES has macros enabled.

You are right about the clutches and popping them back as needed...could be worse!

Whenever the part gets stuck in the sub and runs into the next part 9 times out of 10 the sub goes UP and we can put a 2X4 between the sub and the turret and jog the turret down in X to push the sub back into alignment haha. Pulling it UP requires a sling. :)

I wonder IF we end up getting G31 to work if it would work on the Z-axis while picking off, similarly to how you described using your sensitive mode...probably better than swinging something from the turret by the part to check!

Thank you!

15 is "too many axis commanded", is that relevant to what you typed in?

G31 torque skip can only act on one axis at a time...
 
When I tried on my machine, I MDI'd the following command, and it took it.

G98G31P99W-1. F10.

Can you try that?
 
15 is "too many axis commanded", is that relevant to what you typed in?

G31 torque skip can only act on one axis at a time...

It could be...I'm not familiar with the syntax of the code so maybe it must include an axis like in wmpy's example below. Thank you! To be continued....
 
Yes, it must include an axis. Basically, you are replacing a G01 with a G31.
 
On Doosan's the G31 is looking for a signal. So when using torque skip on, say, a part handover on a subspindle, one would engage the function with an M86 - by itself - then the next line would be a G31 G98 B-X.xxxx F20.; then after the part transfer the B would retract slightly then an M87 to turn it off. If you need, I wrote the manuals on that.
 
When I tried on my machine, I MDI'd the following command, and it took it.

G98G31P99W-1. F10.

Can you try that?

Oh my!...it worked! Now I have a couple questions bout the syntax if you don't mind!:

1. What is "L50" in the G10 line?
2. Maybe I'll close the sub and have it move up to the front of the part with the G31 line...there should be no interference IF there is no part in the sub. But what happens if there IS interference and the torque limit is exceeded? It "skips" the G31 line or...??? Or does it stop and alarm out with some sort of "torque limit exceeded" message but at least nothing got broken?

Thank you, again, for your help! This is going to be huge! :cheers:
 
The line following the G31 line should check if it made it to the position and then jump to an alarm or message if so. No alarm pops up or message posts automatically, it simply skips the remaining move and steps to the next line if torque is exceeded. Here is a simple version of how to do this on a 32i control. The wording in the parenthesis on the #3000 line displays on the message page:

G1G99
#101=1.8 (target depth)
G31P98Q155Z#101F.0055
IF[#5042NE#101]GOTO456
G0Z-.1
M5

M30

N456
G0Z-.2 (FORCE TOOL RETRACT)
M5
M505 (WAIT CODE SO MY SUB CAN FINISH BEFORE MESSAGE DISPLAYS)
#3000=1(YO THE T22 DRILL OVERLOADED. CHECK THAT S#IT.)
%

I have a more complex version of this in this thread that I am working through. It adds pecking with torque skip for tool monitoring.
 
The line following the G31 line should check if it made it to the position and then jump to an alarm or message if so. No alarm pops up or message posts automatically, it simply skips the remaining move and steps to the next line if torque is exceeded. Here is a simple version of how to do this on a 32i control. The wording in the parenthesis on the #3000 line displays on the message page:

G1G99
#101=1.8 (target depth)
G31P98Q155Z#101F.0055
IF[#5042NE#101]GOTO456
G0Z-.1
M5

M30

N456
G0Z-.2 (FORCE TOOL RETRACT)
M5
M505 (WAIT CODE SO MY SUB CAN FINISH BEFORE MESSAGE DISPLAYS)
#3000=1(YO THE T22 DRILL OVERLOADED. CHECK THAT S#IT.)
%

I have a more complex version of this in this thread that I am working through. It adds pecking with torque skip for tool monitoring.

Thank you! 1) what is the "Q" word in your G31 line? and 2) I totally get your example and the conditional branch "node" if you will after the G31 line, but how does the example earlier in this thread work without any branching, for instance:

G10 L50
N2060 P6 R1000 ( P is the axis number, in my case B is 6. R is an arbitrary value that I picked out of thin air, seems to equate to about 40% axis load.)
G11
G98 G31 P99 B-xxx Fxxx
G10 L50
N2060 P6 R8010 ( 8010 is just what it was set at previously.)
G11

OR would the position check line just be put in right after that???

Thank you, again! :cheers:
 
Thank you! 1) what is the "Q" word in your G31 line? and 2) I totally get your example and the conditional branch "node" if you will after the G31 line, but how does the example earlier in this thread work without any branching, for instance:

G10 L50
N2060 P6 R1000 ( P is the axis number, in my case B is 6. R is an arbitrary value that I picked out of thin air, seems to equate to about 40% axis load.)
G11
G98 G31 P99 B-xxx Fxxx
G10 L50
N2060 P6 R8010 ( 8010 is just what it was set at previously.)
G11

OR would the position check line just be put in right after that???

Thank you, again! :cheers:

I misread your original post, and was giving it a position check in my code that it sounds like you don't need. My mistake. On my control the Q word is the torque value at which it skips, in percent (as a whole number with no decimal per what I am told). It is in reference to the axis servo torque, the percentage values you would see on the load monitor page.

When executing a G31 move, the move should just stop at the moment the torque load percentage exceeds the set Q value, and move on to the next line of code. So in your example with a Q50 added to the G31 line it would move the B until the B axis hits 50% load, regardless of position, then go to the G10 line below. There may be some significant differences in our controls though if your manual is using the P and R words. My understanding of the Q word is that it simply applies to the axis making the move on the G31 line.

If you were doing a position check then I would think you would want to do it immediately.
 
Oh my!...it worked! Now I have a couple questions bout the syntax if you don't mind!:

1. What is "L50" in the G10 line?
2. Maybe I'll close the sub and have it move up to the front of the part with the G31 line...there should be no interference IF there is no part in the sub. But what happens if there IS interference and the torque limit is exceeded? It "skips" the G31 line or...??? Or does it stop and alarm out with some sort of "torque limit exceeded" message but at least nothing got broken?

Thank you, again, for your help! This is going to be huge! :cheers:

G10 L50 enables parameter writing. G11 disables it. You should NOT run this code if you don't completely understand what it's doing!

That section of code is explicitly changing the contents of parameter 2060#6, which is the relevant parameter on the machine I wrote it for (18i-TB, parameter 2060 is the per axis torque limit, the subspindle on this machine is axis number 6), there are no guarantees that it's the same on yours, and you MUST do your due diligence before running it.

The second part changes it back to it's original value, but 8010 is the original value of mine - yours is likely to be different, so take care!

Thank you! 1) what is the "Q" word in your G31 line? and 2) I totally get your example and the conditional branch "node" if you will after the G31 line, but how does the example earlier in this thread work without any branching, for instance:

G10 L50
N2060 P6 R1000 ( P is the axis number, in my case B is 6. R is an arbitrary value that I picked out of thin air, seems to equate to about 40% axis load.)
G11
G98 G31 P99 B-xxx Fxxx
G10 L50
N2060 P6 R8010 ( 8010 is just what it was set at previously.)
G11

OR would the position check line just be put in right after that???

Thank you, again! :cheers:

The Q in G31 only works on newer Fanucs, it lets you specify a percentage of the fixed torque limit without doing any of the workarounds discussed ITT.

It doesn't do anything on the 18i-TB that my original example above was written for, but it's important to note that the control will happily accept it anyway, no alarm, but no reduced torque. Nice way to have a crash if you're sharing code between machines.

I use G31 P98 Qx on my 31i-b5 and it works great.

Re. position checks, the example I wrote there is simply the mechanics of a functional torque skip on a machine that doesn't have built in support for it. You do whatever checks you need to do after that.

I misread your original post, and was giving it a position check in my code that it sounds like you don't need. My mistake. On my control the Q word is the torque value at which it skips, in percent (as a whole number with no decimal per what I am told). It is in reference to the axis servo torque, the percentage values you would see on the load monitor page.

When executing a G31 move, the move should just stop at the moment the torque load percentage exceeds the set Q value, and move on to the next line of code. So in your example with a Q50 added to the G31 line it would move the B until the B axis hits 50% load, regardless of position, then go to the G10 line below. There may be some significant differences in our controls though if your manual is using the P and R words. My understanding of the Q word is that it simply applies to the axis making the move on the G31 line.

If you were doing a position check then I would think you would want to do it immediately.

I'll just reiterate - G31 Qx only applies to newer controls. Also, it's not a direct equivalent percentage, the range for Q is 0-255 which scales to 0-100% load, so to approximate 50% load you would use Q128, not Q50.
 








 
Back
Top