What's new
What's new

Correct usage of G43.4 for Tool Center Point Control on Fanuc Robodrill

MorganStark47

Plastic
Joined
Mar 11, 2020
Hello, I'm trying to use Tool Center Point control on FANUC Robodrill and haven't had much luck. The controller I'm working with is Fanuc Series 31i-Model B (4 axes).

First off, is TCP control at all possible with 4 axes or is 5 axes a minimum requirement? I read somewhere that G43.5 can be used only on 5 axes machines, does that apply to G43.4 as well?

Also, I'm unsure whether my syntax is correct and if I'm placing G43.4 correctly in my CNC file. I'm trying to get it to work on a 4 axes FANUC Robodrill, the sequence of operations being:
  • position tool tip 30mm above G55 origin and also set B to 0deg
  • rotate B to 45deg and dwell
  • rotate B to 70deg

The manual for 31i-Model B states that TCT bit of parameter 5040 should be set to 1, which it is.


Here's the CNC file:
%
<TCP_test>
M05 (STOP SPINDLE)
G90 (SET TO ABSOLUTE MODE)
G21 (SET TO METRIC)
G94 (SET TO MM/MIN)
G01 (SET TO LINEAR INTERPOLATION)
G49 G40 G53 Z0.000
G53 G49 Z0.000
T7 M06 (LOAD TOOL)
(RELATIVE Z PATH)
(Position the part)
G55 (WORKPIECE COORDS)
X0.000 Y0.000 F5000
B0.000 F2000

G43.4 Z30.000 H7 F1000 (ENGAGING TCP CONTROL)
G5.1 Q0 (Smooth interpolation and AI contour control modes off)
F1000
G1 B45 (MOVE TO B45)
G04 X5 (WAIT FOR PERIOD)
G1 B70 (MOVE TO B70)
G04 X5 (WAIT FOR PERIOD)

G53 G49 Z0.000
G55 (WORKPIECE COORDS)
B0.000 F2000
X0.000 Y0.000 F5000
G49 G53 Z0.000
M30 (END OF CNC FILE)
%

What happens is that the G43.4 line throws the error PS0010 - Improper G code.

What I want to achieve: as B rotates, the tool tip follows the X0 Y0 Z30 point, tracing out an arc about B rotation.

Where am I going wrong? If Tool Center Point Control is not possible on a 4 axes machine, what changes would need to be made to get this file working on a 5 axes machine? I presume I could switch to G43.5 for a 5 axes machine?

Thanks
 
Unless you bought the option specifically, or unless the machine you have was a demo that had the option on it before you bought it there is slim to no chance that you have the TCP option...

That said, what you want to do can be done, but you will have to do it point to point and won't be able to use "interpolation" type functions to do it simply by programming at the control. There are a few ways you could do this. One would be to work out a function that would calculate the points XYZB in angular increments using macro b from one point to the next with a G65 call, this could take into account any shift from center-line of rotation if you needed it to as well. Or you can create the move in CAM and just paste it in there via a sub or whatnot, programmed about the center-line of rotation.

Or you could buy TCPC, but IMHO, there isn't much point for 4 axis as you don't have a compound rotary / non-intersecting rotary centerline issues to compensate for or high speed rotary lookahead / smoothing functions to implement. G54.2 (dynamic fixture offsets) might be worth it, but still won't do exactly what you are looking to do.

Many ways to accomplish this, it will just depend on what you actually need to do, and why.

Are you looking to do this while cutting or is this just an attempt at a faster reposition? If cutting, can you draw what you want to accomplish?
 
... work out a function that would calculate the points XYZB in angular increments

That's how we've been doing it so far in principle, in that all those calculations happen off the machine. But we want to make the CNC file generation machine kinematics independent, so that two different machines with different kinematics but with TCP control enabled, should produce the same "output".

I'm trying to achieve something similar to this post. The idea is that the machine works out all the axes commands by itself from the toolpath.

... can you draw what you want to accomplish?
Free form surface machining, like this one
 








 
Back
Top