What's new
What's new

Help! Outline offset relative to drill locations in single setup... A head-scratcher.

aarongough

Stainless
Joined
Oct 27, 2014
Location
Toronto, Canada
Hey guys,
I've been beating my head against this for a couple of days, I figured it's time to see what other people think. I machine the handle scales for my knives out of G10 composite on my Fadal VMC15, every important surface is machined in a single setup. The parts are held down from underneath with 1/4-20 bolts threaded into threaded holes in the underside of the stock which are machined in a prep operation.

The issue is that the outline of the parts is offset relative to the pin holes in the Y direction. The parts should be a mirror image of each other, but when aligned against each other with pins they are offset by 0.01" The pin holes and the outline are cut in the same setup, without the parts or fixtures being disturbed in any way.

I am not 100% sure whether the parts are each offset by 0.005" or whether it's one part that is offset by 0.01", I don't have a CMM or anything to measure this with confidence. I addition to the outline being offset, some other features (like the lanyard holes) are also offset. But other features are not. The counter-bores for the pin holes seem to be concentric for instance...

Troubleshooting steps taken so far:
- Verified that the models are indeed mirror images of each other
- Wiped all toolpaths and re-create them to make sure there's no weirdness there
- Backplotted the gcode output by Fusion to verify that it's also symmetrical
- Changed program to cut outline and pin holes right after each other and after all roughing operations, to make sure stock movement is not an issue
- Reversed order of hole drilling (front to back rather than back to front) to verify that lost motion somewhere wasn't causing the offset, no change.
- Run the parts on another machine (Fadal VMC10) and got the same results :willy_nilly: :angry:
- Verified that both machines in question are mechanically sound. Less than 0.0002" backlash, zeroed out ballscrew comp tables on VMC15 as ballscrews have been replaced.
- Check the spindle tram with a CAT40 test arbor. Dial indicator against test arbor showed less than 0.0005" change as the spindle was moved up 8", in both X and Y direction.
- Tear out my hair and sit rocking myself in the corner :D

Here is a top down view of the models with dimensions showing that the hole locations are symmetrical relative to the outline in Y:


And here is a backplot of the Gcode for the outline milling and pin hole drilling operations, with point locations marked and the distances between them calculated:


Here is a pair of handle scales, temporarily held together with pins:


You can clearly see the offset at the front:


And at the back of the scales:


And inside the lanyard holes. The lanyard holes are machined with a separate tool and toolpath to the outline!


Here you can see the fixture plate with all the relevant toolpaths:


Order of operations is:
- 2D Adaptive roughing operation, leaving 0.03" radial stock - 3/8" carbide ballnose 4 flute
- 3D contour handle scales with parallel toolpath - 3/8" carbide ballnose 4 flute
- Cut outlines with 2D contour toolpath - 3/8" carbide ballnose 4 flute
- Drill pin holes with peck - 1/8" carbide drill
- Counterbore pin holes with helical boring toolpath - 5/32" carbide endmill, 4 flute
- Helical bore lanyard holes - 5/32" carbide endmill, 4 flute
- Chamfer top edge of lanyard holes - 1/4" 90º chamfer mill, 4 flute

You can see a photo of the actual fixture plate with finished scales in place here: https://www.instagram.com/p/BZ1C6bQF3Vy/

I'm honestly at a total loss as for what could be causing the issue at this point. I have looked through the code and I don't see anything unusual in there, and the backplot says that the code is theoretically what it should be.

The only thing I can imagine at this point is some sort of bug in the control that's causing a coordinate shift somehow. My two fadals have different software versions though (VMC10 has a -4 CPU, VMC15 has a -5 CPU) and they both behaved exactly the same way.

I have been fixing the issue by sanding the edges of the scales by hand against a hardened steel template, but this is costing a lot of time and the results are still not quite perfect... Any thoughts you guys have would be greatly appreciated!

-Aaron
 
It would be a bit of an unfortunate coincidence to happen on both machines, but you might have a servo balance problem causing offset interpolation in the Z axis.

You know if the balance is off in X or Y you will interpolate diagonally oval holes - the same can be true in Z if you are contouring in X-Z or Y-Z, it's just not so easy to notice.
 
In your second picture, the Y dimensions should be mirror images of each other and they are not. You are showing Y-30.748 and then Y30.737. This assumes that Y0 should be/is exactly between the scales. I can't say, but I'd go back to your 3D model and verify that it's where it should be in relation to your fixtures datum points.
 
In your second picture, the Y dimensions should be mirror images of each other and they are not. You are showing Y-30.748 and then Y30.737. This assumes that Y0 should be/is exactly between the scales. I can't say, but I'd go back to your 3D model and verify that it's where it should be in relation to your fixtures datum points.

Good catch, I kind of glossed over that having read that OP had verified that everything was symmetrical.

Now I'm wondering why the parts are offset about Y in the backplot? Was the fixture machined incorrectly and the offset is to compensate for that? If the fixture is symmetric about Y0, and the parts are actually offset by 0.01", then the misalignment when assembled should actually be 0.02" right? Accidentally doubled up on a compensation fix?
 
Well, he said the dimensions were in metric, so his difference in numbers isn't much, less than .0005" in inches. But still, when I design a part and fixture, I want a hole and a face to orient the fixture and then establish X0 and Y0, then do all my layout from that point. All the Y's in the case, should be mirrored off of Y0. That makes it easy to verify code as all the numbers should repeat, just negative vs. positive.

Every time I have had mirror images end up off, I take it back to an incorrect mirror in CAD, or something accidentally got dragged (if it's not anchored/locked in place). So my first thing to check is the original CAD model and verify all the dimensions are where they are supposed to be.
 
Hey Aaron.

I know you are stickler, detail oriented and completely organized,
and I know this is driving you fricken crazy.

I don't think I would have done such a detailed analysis as you have,
after a short bit, I would have said 'screw it' offset the geometry
until they lined up and let it rip.

I've really got nothing, except is your fixture plate sitting flat,
and do you have any head nod. Though I'm going to guess that since
the error repeated on a second machine. Its program related.

One last thought. Fadals are Fadals, they are not very good at
accurate curves at high feed rates. When I first got to use a
Fadal, I was working with a guy that had just come from a shop
that was running brand new Mori Horizontals. I was interpolating
a bore at 16ipm or something. He told me to just run it at 120ipm.

That worked out well. 10:30 to 4:30 was .016" oversize (inches, not mm)
and 1:30 to 7:30 was .016 undersize. it was pretty good on the quadrants
though, but the customer didn't care, they wanted a round hole.

What kind of feed rates are you running? I wonder if you could run one
climb and the other conventional to get the same inaccuracies in each
part so they match up.
 
It would be a bit of an unfortunate coincidence to happen on both machines, but you might have a servo balance problem causing offset interpolation in the Z axis.

You know if the balance is off in X or Y you will interpolate diagonally oval holes - the same can be true in Z if you are contouring in X-Z or Y-Z, it's just not so easy to notice.

I actually tuned all the servos on the VMC15 pretty recently as I had to replace 2 servo drives when restoring it... The outline is only machined with movements in X&Y as it's just a standard 2D toolpath, I haven't seen any other issues that would indicate servo balance issues but I will definitely look closer at that!
 
In your second picture, the Y dimensions should be mirror images of each other and they are not. You are showing Y-30.748 and then Y30.737. This assumes that Y0 should be/is exactly between the scales. I can't say, but I'd go back to your 3D model and verify that it's where it should be in relation to your fixtures datum points.

Yes good catch :) I should have mentioned that is caused by the models being very slightly off from the center line. All the features within the model itself are lined up correctly though as illustrated in the pictures. I latched onto that initially as a potential source of the issue as well, but the offset is only 0.011mm (0.00043") so it's not enough to explain the error even if it was the cause unfortunately. It bugs me that it's not quite lined up though, I should probably move the part anyway lol
 
Good catch, I kind of glossed over that having read that OP had verified that everything was symmetrical.

Now I'm wondering why the parts are offset about Y in the backplot? Was the fixture machined incorrectly and the offset is to compensate for that? If the fixture is symmetric about Y0, and the parts are actually offset by 0.01", then the misalignment when assembled should actually be 0.02" right? Accidentally doubled up on a compensation fix?

The offset is in the model too... When placing the parts on top of the fixture in the CAD file I must have just bumped one of them somehow. However even if the part was misplaced in the model by 1/8" the output part would still be within tolerance because everything is machined in one shot... I might shave my fixture a little, but it shouldn't affect the part :D
 
Well, he said the dimensions were in metric, so his difference in numbers isn't much, less than .0005" in inches. But still, when I design a part and fixture, I want a hole and a face to orient the fixture and then establish X0 and Y0, then do all my layout from that point. All the Y's in the case, should be mirrored off of Y0. That makes it easy to verify code as all the numbers should repeat, just negative vs. positive.

Every time I have had mirror images end up off, I take it back to an incorrect mirror in CAD, or something accidentally got dragged (if it's not anchored/locked in place). So my first thing to check is the original CAD model and verify all the dimensions are where they are supposed to be.

Yeah that was my intention for this fixture plate as well. I updated the models for the handle scales a while back and must have bumped one of them away from the center-line somehow. The way the part is machined it doesn't really matter though as all of the features in the model are still in the correct relationship to each other. It does offend my sensibilities though so I will fix it!
 
Hey Aaron.

I know you are stickler, detail oriented and completely organized,
and I know this is driving you fricken crazy.

You know me well Bob! :D

I don't think I would have done such a detailed analysis as you have,
after a short bit, I would have said 'screw it' offset the geometry
until they lined up and let it rip.

I've really got nothing, except is your fixture plate sitting flat,
and do you have any head nod. Though I'm going to guess that since
the error repeated on a second machine. Its program related.

One last thought. Fadals are Fadals, they are not very good at
accurate curves at high feed rates. When I first got to use a
Fadal, I was working with a guy that had just come from a shop
that was running brand new Mori Horizontals. I was interpolating
a bore at 16ipm or something. He told me to just run it at 120ipm.

That worked out well. 10:30 to 4:30 was .016" oversize (inches, not mm)
and 1:30 to 7:30 was .016 undersize. it was pretty good on the quadrants
though, but the customer didn't care, they wanted a round hole.

What kind of feed rates are you running? I wonder if you could run one
climb and the other conventional to get the same inaccuracies in each
part so they match up.

The main reason I didn't just offset it and get back at it is because I'm worried that the same error is creeping in other places and I haven't noticed, or that it will creep in somewhere in the future and cause issues, so I'd rather get it nailed down properly if I can. There is a limit to the time I'm willing to spend of course! But if I can't rely on my CAD/CAM/Machine to hold +-0.002" easily then it's going to make life a whole lot harder!

I was worried about head nod or lost motion as well. I chucked in a test arbor, and with a dial indicator on the table went around levering on the head and the table in every direction I could. The largest deflection I got was about 0.0015" at the tip of the 8" gage length test arbor, so I don't think there's a real issue there.

Feedrates in this case are pretty low. I need a good finish on the outline so I'm running 7500rpm and 20IPM. Same story on the drilling cycle. The 3D contouring is done at 70IPM seemingly without issues, but that leaves some meat around the edges so I can make sure I can cut the outline accurately.

It's driving me a bit bonkers honestly :D :D
 
Are you climb cutting one part and conventional milling the other by mirroring the tool paths?

Good question! No, I am climb cutting both outlines in the case, as the mirroring is done in CAD, and then the toolpaths are programmed from the mirrored models like normal.
 
wondering how it's programmed? is it long handed code for both sides? or is it a sub that's mirrored?

I try to avoid hand coding anything to be honest, everything has to match up with my CAD files so it's just too much work.

Eveything is programmed in Fusion, so the actual model itself is mirrored and then the toolpaths are programmed from the model just the same as if they were 2 separate parts... No mirroring or anything fancy happening in the Gcode
 
Have you tried recreating the issue with a simpler program? If you only mill the pin holes and do the outer contour with none of the roughing or surfacing work, is the offset still present? If it is, you at least have a simpler test case to consider. If it isn't, you can start adding operations back until the problem presents itself and then figure out what's going on from there.
 
Have you tried recreating the issue with a simpler program? If you only mill the pin holes and do the outer contour with none of the roughing or surfacing work, is the offset still present? If it is, you at least have a simpler test case to consider. If it isn't, you can start adding operations back until the problem presents itself and then figure out what's going on from there.

I agree. Just put in the pin holes and cut the OD and then check for misalignment.

Here are somethings that jumped to my mind.

1) Drill bit wander. I've seen this in fiberglass. I would consider testing by helically interpolating the holes after drilling undersize. This should true up the location. I don't trust drill anymore... I'm happy if the hole comes out on the right side of the part.

2) Thermal growth or movement of the part. I recall this material being death on cutters. Doesn't take too much dull to heat up a part or cause it to shift. Especially since you are cutting this part symmetrically, but in opposite directions... this could cause the issue to compound, especially if you are coming around one end heavy. There is enough clearance in a 1/4-20 tapped hole and associated screw clearance hole to see this amount of mismatch. Every time I fail because of this I swear I'll always use dowel pins to locate (then I get away with it a thousand times and ignore my own rules).

3) Spline issues. Judging by the 3D model, your 2D projected geometry is going to be interpreted as non-uniform rotational B-Splines (I don't know what that means, but it makes me sound smart). Cheaper CAM systems and less robust machine processors don't do particularly well on NURBS. It will assign a tolerance to the spline and then turn the code into a series of arcs (best case) or lines (worser case). This tolerance is then toleranced by the machine controller. This will be impacted by the opposite direction issue, because it is going to interpret the code using different conditions and assign a tolerable deviation. This could easily be a visibly evident defect. One solution is to go into the projected geometry and manually convert anything that is a spline into arcs. The came system will then post honest to goodness IJK code that is not (as) subject to controller interpretation. Again, the first thing I would do is simplify the parts to something that is just the OD and the holes. Make sure that there are no splines, and then cut them. Any mismatch at this point is most likely the machine.
 
I would try and move model back to origin zero being center then reposting code. Trying to chase down an error while doing even simple running math like offset +1 in y gets clustered fast. Then you can at least establish what you are seeing in real part vs virtual part. Left and right hand only triples the confusion of what you get and think you should get.
If the same thing happens on two machines it is either operator or code. You know your machines mood so going to go with a subtle error in the model layout.
 
This is almost certainly the right answer, your two models are NOT symmetrical, they are close but not exact. We know of one error for sure, what other mistakes did you make while making your drawing/fixture?

I'm not saying that to sound like a dick, I just know I've done the same thing a few times, you can't make a perfect part without a perfect drawing, and it sounds like you're the same as I am. Hand programming is a waste of time. 100 percent of code should come from cam.

Throw everything away and start over, mirror one part and build a fixture around that. You've made another mistake somewhere in that drawing you just don't know where.
 








 
Back
Top