Jump to content

Loading Base Alignment from fixture


---
 Share

Recommended Posts

I am running a family of parts that sit on a fixture. The bottom of all parts sit on the same location on the fixture, however the top or Z origin of each part is different. I've used a "Load an alignment" from a fixture before but didn't have varying heights of parts.

As I sit here thinking about it, I suppose I could create a secondary alignment with a Z offset equal to my part height and assign this alignment to all of the features. Am I on the right track or is there an easier solution?
Link to comment
Share on other sites

How much variance is there in the height of the parts? Are the other alignment components consistent? If so you may not need a fixture alignment, you could possibly use a typical "on the part" alignment, just set a search distance before probing on your Z feature, and teach the alignment on the tallest part (dont run from the (cnc) version of the alignment of course)
Link to comment
Share on other sites

Please sign in to view this quote.

The only problem I see is that I need to measure the bottom of the part (or the top of the fixture without a part) to get the Z value of the bottom of the part. Loading a fixture alignment allows me to create a theoretical point at Z zero.
Link to comment
Share on other sites

Yep, that makes sense. I didn't think about that need, so in that case I think you are on the right path with a secondary alignment. I'm not sure if a Z feature with a search, a Z feature with a formula'd Z, or a formula'd Z offset in the secondary alignment would be the best option from there for what you are doing, but all of those should be viable methods
Link to comment
Share on other sites

I like the rule I was told once.

"If it doesn't go to the customer, don't measure it". Due to the need to get both sides of most of our parts we have ditched almost all the XY plane fixtures and make ZY plane vises instead. Previous programs at my facility loaded alignments from Fixtures and that was fine, until there was a form error problem with the part, and it didn't sit properly in said fixture. Part Based alignments only has improved measurement reliability greatly.

I've done similar, but without knowing the geometry it's hard to suggest. an exact path but:

1 Start Alignment, shared by all programs, that can handle the variations from part to part (I love doing this)

Make you're Start Alignment something simple, that can be made to work for all variants, set it to run every time. It does not have to be the same features, just as long as you build in enough clearance for it to measure any part that will be sharing. Each program will need the Start Alignment features in correctly with the correct offsets to the Base Alignment features for that program. Put enough Clearance/Retract/Search distances to measure any variant. Use PCM to control variables.

Notice the ID circle is in space? the program uses the shaft, as there is 3 variants of this part and they load in different orientations. By using the shaft for the Start Alignment only I can locate the part well enough, without having to parameterize the Z height of that circle. 3535_c195050037f6dbcf2835e39edf204d1e.png
3535_a83d4f3fd6a48b60cc00557c75699a5e.png
See this? Different part, Different Diameter, Different Z Height, Different Relationship to the Base Alignment (look at the trihedron) Same Start Alignment. 3535_aa3bd725faa7147c1557c4a63b31e5ed.png


In cases where there is an extreme differences in Z or X between variants or machine operations I:

Take a point on the face, large retract and search distances.
Post settings of the point
startAlignmentOffset_x = getActual("Pt. X Check - SA").x
Then use the X as a variable in the true Start Alignment Features. To Force that point to run every time regardless of anything else in the Presettings of the First Start Alignment feature simply put this:
getActual("Pt. X Check - SA").comment
That's alot, and I probably explained it poorly. Tom if you're interested in a method like that I can try and explain better, but that's a general idea.

Most importantly, create a program, with nothing but your Start Alignment features. Name the Base Alignment of that program EXACTLY the same as your Start Alignment. I use "XXPartNumberXX Shared(Start), teaching people that if they see "Shared" it means there's an external alignment program to run.

In some cases I have 60+ programs for part families that share the same single alignment.

After the Start Alignment, you have a proper, normal Base Alignment - whatever makes sense for your task. If you like this idea I can elaborate more, but I shouldn't post too detailed of photos of a current part on an open forum.
Link to comment
Share on other sites

Create an alignment on the fixture. Load the fixture alignment into your part program. Create a theoretical plane on the top of the fixture that the part sits on.
Now add a PCM check to make sure each subsequent part is level in the fixture to avoid any offset due to misloading.

Mark
Link to comment
Share on other sites

I am not sure if it's mentioned here, but.

You can load alignment instead of creating new alignment for program ( i think only base alignment )
Then you can recall stored alignment in program - if you make theoretical plane in recalled alignment, then you can evaluate your measurement with that T plane.
Link to comment
Share on other sites

Please sign in to view this quote.

Hi Mark, Can you add a few more details?

(1) Use this alignment via "Load Alignment" in BA window? Or, use Load Alignment from Resources > Utilities menu during program run

How do I get Z zero of fixture alignment to transfer to Z zero on the top of part? I would consider moving CAD origin to bottom and then create a secondary alignment on top of part.

Will I need to do a manual alignment on the part at any point? I am trying to avoid having to do any manual probing on part.


Forget PCM
Link to comment
Share on other sites

I believe I just figured this out. I created a program with a base alignment on the fixture. In the part program, I selected "Load a saved Base Alignment" in the BA window. I re-opened the BA window and selected "Change alignment", click Special button. Added and offset in the +Z direction. When I closed BA window, I was presented with the option to transform the nominals and I selected NO, which means the original CAD origin stayed in tact. Didn't need a secondary alignment.

Now, I just need to prove this works from scratch, i.e. adding a new part program in the future.


* * * * U P D A T E * * * * *


Didn't work on new part. Back to drawing board.
Link to comment
Share on other sites

Please sign in to view this quote.

I nearly allways doing it this way, we use standard-fixtures. After loading the base-alignment for the fixture, I create a secondary alignment for the offset of the part-alignment. After that I do (most min two, like looping base-alignment) alignment(s) on the part.
That saves me time when bringing the part from offline-seat on the mashine.

Greets Jens
  • Like! 1
Link to comment
Share on other sites

Please sign in to view this quote.

Greeting Jens.

I made my secondary alignment from the model. Do you perform the secondary alignment "manually" on the first run? I am not clear on how Calypso knows that the Z is "x" amount above the fixture.
Link to comment
Share on other sites

I haven't read all the responses, but what about using PCM with a para file containing all the Z variables?
Then you can add an operator prompt to choose a part number (or size) and based on that choice the
correct Z nominal value will populate the feature.

Something like this:

LN = getRecordHead("order")

clearCAD()
dir = getActualInspectionDir()

Part_Size = inquireList("Which size part would you like to run?", "Size_1", "Size_2")
selectCase Part_Size
case "Size_1"
readPCMFile(dir + "\1.PARA")
loadCADFile(dir+"\S1.sab")


case "Size_2"
readPCMFile(dir + "\2.PARA")
loadCADFile(dir+"\S2.sab")


endSelect

Then the para file

Size_1//

Z = 0.100
Link to comment
Share on other sites

Tom,

You are on the right track. You should not have to manually align the part, but I do recommend a CNC alignment if possible on every part.

The PCM is to verify that the current part is in the fixture correctly. I use A1 and A2 angle confirmation.
This PCM program will check an angled plane and verify its position before it runs the program. This PCM code is entered as a Pre-Setting in the program.

This part has a surface that has a 17.90 degree angle. We will check that first thing in the program to determine if the part is loaded correctly.

Note: the stepRS(0,150,0) line skips the next command and in this case moves the probe 0 in X, 150 in Y, and 0 in Z) allowing the operator to reposition the part.

getActual("Error Proof Plane Measure").z
A1 = abs(deg(getActual("Error Proof Plane Measure").a1)-17.9)
A2 = abs(deg(getActual("Error Proof Plane Measure").a2))

if A1>0.5 then
stepRS(0,150,50())
message(" Part is Loaded Incorrectly ",cr()," Reload Part and Reset Traffic Light ")
cncbreak()
endif
if A2>0.5 then
stepRS(0,150,50())
message(" Part is Loaded Incorrectly ",cr()," Reload Part and Reset Traffic Light ")
cncbreak()
endif


Mark
Link to comment
Share on other sites

Please sign in to view this quote.

Thank you for the detailed response.

I understand and appreciate the benefit of using PCM but end user does not have it. They may decide to get it after an incident.
Link to comment
Share on other sites

We had some parts that were checked from a fixture. Like you had suggested before the program was from the fixture up, then we used mini plans for each part number with the various Z heights.
Link to comment
Share on other sites

Solution has been resolved with the assistance of user Jens Kröcher. Much thanks to Jens.

1) Create cmm program to run base alignment of fixture. Z origin is portion of fixture where part sits.

2) Create part program. Translate and rotate model so Z origin is at bottom of part where it will sit on fixture.

3) Open base alignment window and select "Load a saved base alignment" and select the fixture(cnc) alignment from step 1.

4) Create secondary alignment using a offset in Z equal to the distance from the bottom of the part to the top of the part (or desired location of Z origin)

5) Create a secondary alignment, changing the alignment reference from base alignment to fixture offset alignment.

6) Assign all features (not including base alignment features) to secondary alignment created in step 5.

7) Theoretical feature for the bottom of the part remains at base alignment.

8) Run part using fixture(cnc) Note: this fixture uses an alignment tool to control clocking orientation Part program does not need any manual alignment from operator.
.
.

base alignment from fixture.jpgfixture offset alignment.jpgpart alignment.jpgfeature alignments.jpg

  • Thank you! 1
Link to comment
Share on other sites

  • 1 year later...

Hello CMM Community,

I was almost 2 years out of CMM practice, only with Optical system LOL!!!

I did not remember if is needed to include the fixture in the CAD model to create a Start Alignment based on it or we can create the features on the air with touch probe contacts. 

Link to comment
Share on other sites

Please sign in to view this quote.

I allways make my own CAD-models of the parts, mid-tolerance, and I allways incude the fixture, because most of our parts are very small, so I have to drive and probe near to the fixture. For start-/base-alignment you don´t need the fixture in CAD, but it is nice to have for offline programming and simulation.

  • Like! 1
Link to comment
Share on other sites

Please sign in to view this quote.

Perhaps you could create para files that calculate the height/length differences. 

I use an excel file named "Parameters.xls", it has hundreds of part numbers all of varying size, length, diameter etc. (Family of parts).

I read the excel file based on the part number required to run and it calculates where the probe should go to start a Base Alignment. Base Alignments are never in the same place along the X axis; to alleviate this, I use large approach and clearance values. At any time, depending on the operator a part can be loaded upwards of 2 inches away from the original X axis start point.

These parts sit orientated in the X axis (Cylindrical); the fixture is a 160° V (Its very wide).

The excel file has variables in the second row, these variables are assigned to features and or characteristics.

I have PCM Pre Settings and Post Settings, that manage part numbers and an interface (Written in .NET) for loading data from the Excel file to a para file.

 

Link to comment
Share on other sites

I have programed a lot of parts that have varying heights. I found it best to start with the smallest part because it is easier add to feature strategies if necessary than to have to decrease strategies rather you want to or not. I don't align to the fixture, I probe the part. I set the Z zero to the bottom of the part. When the first program is all done, I do a save as, name the program to the second part, simply change the Z height of the top plane, and what ever else is needed. I do rename the base alignment to the second part. I think it would be just as easy as what you are trying to do unless I am missing something. I have made one program for multiple parts with different heights before. I used a result element using result input instead of formula with dialog text something like "Input Nominal Height". Then in the feature I would right click on the Z nominal and add a formula to get actual from the result element. It worked but it is much better for me to have separate programs with the reports going where I want and not trying to explain something new to and operator. But then again I think I am missing something from your goal here. 

Link to comment
Share on other sites

 Share

×
×
  • Create New...