Jump to content

Execute the "CNC End Park Position" at the start of a program


---
 Share

Recommended Posts

Hello everyone,

Here is my problem:

Some of my programs require manual probing of the start alignment.
I would like to have a function that changes and brings the right stylus close to the part automatically at the program launch.
(The mountings parts are placed against a square on the marble, so the parts are always almost in the same place).

I believe that Calypso doesn't allow an automatic change and move before the manual probing of the start alignment ?...

I'm used to configuring the "CNC End Park Position" function to take the stylus from the start of the program and bring it close to the part.
This is useful when measuring the same part several times, but it's not convenient when alternating between different parts...

So, I'd like to execute this function at the beginning of the program.

I was thinking of a command line in PCM, but I can't find the right syntax.

Does anyone know if this function is executable via PCM ? (I've already asked the Zeiss hotline, but they couldn't help me...)

Thank you in advance for your help !
Link to comment
Share on other sites

Hello Damien,

Maybe you could try with this PCM code in the presettings:

changeStylusSystem("CZReferenztaster")
positionCMM(100,-100,-50)
Just set the right name of the probe you need.

...et bonne journée à toi ! 🤣
Link to comment
Share on other sites

Hello Sébastien,

Changing the stylus should work.

However, I'd like the CMM to move in part alignment and not in machine alignment (which is not the "positionCMM" command).
Is it possible to choose the alignment for moving the CMM ?

6144_f048904a15a34750961211ea3bc558e1.png
Link to comment
Share on other sites

It sounds like you're looking for positionRS() which will move in a named Coordinate System - it's a standard syntax you can find in the PCM help manual. The PCM manual is actually quite good for helping you learn compared to others.

However, I'm not certain how that will behave at the very beginning of a program prior to the base alignment being completed.
Link to comment
Share on other sites

Please sign in to view this quote.

Placing the PCM in the inspection plan "Pre-Settings" will execute before the BaseAlignment. You can also put it in the file "inspection_start_pcm.txt" or for a later execution place in "inspection_post_start_pcm.txt"

I use this often for "error proofing" routines that are run prior to the StartAlignment and BaseAlignment to verify parts are loaded properly in fixtures prior to an automation/production inspection run.
Link to comment
Share on other sites

Please sign in to view this quote.

Oh yes I know about the .txt files, I put them to great use to control the CMMs in ways that Zeiss really should have standard...

I specifically meant I'm not sure how the positionRS() function will actually behave if he's trying to have it move in a coordinate system that hasn't actually been measured yet in the program.
Link to comment
Share on other sites

Please sign in to view this quote.

I use this often for "error proofing" routines that are run prior to the StartAlignment and BaseAlignment to verify parts are loaded properly in fixtures prior to an automation/production inspection run.
[/quote]

Jeff, can you go into a little more detail on this? Even with Poka-yoke fixturing and detailed instructions, we still have too many crashes due to parts being loaded incorrectly.
Link to comment
Share on other sites

This is a set of 6 points used to verify that a part is loaded in the fixture, the fixture is fully clamped and the part is loaded properly. Using the 'measure()' command forces the measurement prior to BaseAlignment. Older versions of CALYPSO may not require this command but some newer versions without SP do.

Points noted here are simple Space Points measured under the Base Alignment system. They could be measured under cmmSystem but that is not necessary. They may or may not be used in the BaseAlignment. Measuring here first, will satisfy their run requirement in the Start or Base Alignment run order. For instance, the "MachinedSTART#" points are used in the StartAlignment and this PCM is executed fully prior to the routine for measuring the StartAlignment.

The getRunMode() checks to verify that simulation mode is not active as .materialDetected==false does not work in simulation.
//Error Proofing - skip if simulation - make true to skip error checking at machine
if getRunMode("simulation") == false then 
	
	measure("Back Clamp Point1").x
	if getActual("Back Clamp Point1").materialDetected == false 
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Back Clamp Is Not Fully Engaged"+cr()+"Please Try Again")
		cncBreak()
		endif

	if getActual("Back Clamp Point1").x >= 252.00 then 
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Back Clamp Is Not Fully Engaged"+cr()+"Please Try Again")
		cncBreak()
		endif

	measure("Front Clamp Point1").x
	if getActual("Front Clamp Point1").materialDetected == true then
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Front Clamp Is Not Fully Engaged"+cr()+"Please Try Again")
		cncBreak()
		endif

	measure("Front Clamp Point2").y
	if getActual("Front Clamp Point2").materialDetected == false 
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Front Clamp Is Not Engaged"+cr()+"Please Try Again")
		cncBreak()
		endif

	if abs(getActual("Front Clamp Point2").y) >= 410.00 then 
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Front Clamp Is Not Fully Engaged"+cr()+"Please Try Again")
		cncBreak()
		endif

	measure("Front Clamp Point3").y
	if (abs(getActual("Front Clamp Point3").y) - abs(getActual("Front Clamp Point2").y)) >= 24.75 then
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Front Clamp Is Not Fully Engaged"+cr()+"Please Try Again")
		cncBreak()
		endif 

	measure("Machined Point START2").x
	if getActual("Machined Point START2").materialDetected == false then 
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Part Not Detected"+cr()+"Please Try Again")
		cncBreak()
		endif

	measure("Machined Point START1").x
	if getActual("Machined Point START1").materialDetected == false then 
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Part Not Detected"+cr()+"Please Try Again")
		cncBreak()
		endif

if abs(getActual("Line Dat -AA- MachineAlign").a1) >= 0.1 then
		positionCMM(40,-40,-40,"Z","X","Y")	
		//changeStylusSystem("MasterProbe")
		//changeStylusNo(1)
		message("Part Not Fixtured Straight"+cr()+"Please Try Again")
		cncBreak()
		endif
	
endif //end simulation skip
Link to comment
Share on other sites

Please sign in to view this quote.

If I'm thinking about this correctly, those points will also try to run in the event of a manual run yes?

How do you deal with that?

I do something very similar with:

(Variables all load directly, or indirectly from inspection_start_pcm.txt)
//Pt. Start Check - SA
if (abs(getActual("Pt. Start Check - SA").coordPolRadius - getNominal("Pt. Start Check - SA").coordPolRadius) > startCheckRadTol) or (not(getActual("Pt. Start Check - SA").materialDetected)) then
	setInspectionDrivingSpeed(80)	
	positionCMM(xPos,yPos,zPos)
	message("Wrong part loaded, or part is not loaded correctly"+cr()+ "				Reload part and try again")
	cncBreak()
endif
But, since I force these points to run every single time they also run during a manual run. Since I don't want to teach others how to temporarily disable the code I create separate alignment programs specifically for manual runs only with no code or test points. Which does work and is very easy to teach. One alignment program may update the Start Alignment for 50+ programs.

Curious if you have a more elegant solution since you're using PCM in a very similar way.
Link to comment
Share on other sites

I have also put in a Prompt Dialog that asks for a password to enable manual probing. I use a Master user at 1 criteria `if cmmUser("Master") then`
Or use specific mini-plans that disable the error proofing routine. Or load the alignment separately as you say. The sky is the limit with PCM
Link to comment
Share on other sites

  • 2 weeks later...

Please sign in to view this quote.

Thanks Jeffrey Penrod, I've solved my mystery...

I've tried both tips :
  • 1. Write an "inspection_start_pcm.txt" text file.
It works on the offline computer, but not on the online computer !! (the CMM one)

Below is the file I wrote :
changeStylusSystem("Kugel D2")
positionRS(0,200,10,baseSystem(),"1_-Z")
  • 2. Paste the PCM code in the inspection plan "Presetting"
It works for both computers !


=================================================================================================================

Please sign in to view this quote.

Michael Schultze, I fully understand that it can't work on the first run.
I always launch the first run manually.
Then I create the alignment I use to make an automatic start. (the one of the square against which I place my mounting parts)

In the same way, I paste the disabled PCM code in the inspection plan "Presetting". And then I re-activate it after completing the first measurement.
Link to comment
Share on other sites

  • 3 weeks later...
I typically use a prompt for a password to disable the error proofing for a single run. This is input in place of a bar-code scanned input, when the password is entered, the prompt reappears for the bar-code. "Scan bar-code or input password for safety bypass".

I've also used mini-plan specific conditions that will bypass. `if getRunID() = value then`
Link to comment
Share on other sites

 Share

×
×
  • Create New...