Jump to content

Error Recovery


---
 Share

Recommended Posts

I have came across a very useful function in another CMM software and wanted to see if there is anyway to make it work in Calypso.

in that software, I can create a recovery script (in program or external). Anytime there is a crash or error, I can call that script and recover probe to a safe position and then terminate the program.
that script will extract probe vector and other information about current stylus system/ probe and used them to move in the appropriate direction to safety.


I know, I can get the probe information and orchestrate the necessary moves in Calypso.

However, In Calypso, as soon as there is any error due to an unexpected contact, program errors out, light turns red and drive turns off and I don't get a chance to react.

Is there any setting that I can manipulate to change this behavior?

one option would be, instead of turning light red and shutting off the drive, to produce a prompt "execute recovery?" and if confirmed to execute the recovery and then terminate.

We are dealing with very tiny probes (0.200mm, 0.300mm) and slightest move in the wrong direction will result in broken probe when we are manually recovering.

I am open to any and all suggestions here
Link to comment
Share on other sites

---

Please sign in to view this quote.


Yes, we have PCM on all machines
most machines run very specific part family.

ideally I would want to have an master recovery program, but if i have to, i am willing to settle for unique program/script for each machine.

these CMMs have a set of known probes and run the same over all shape parts (different sizes)

most of these are in an automated environment and ideally, it would recover and assign the part as failed and keep going with next part, but this is another conversation for another time.

at this point, the first step would be the ability to avoid alarm/error/drive off at accidental touch
Link to comment
Share on other sites

---
You can get really deep in this with PCM. My CMM programs all start with safety touch points to verify correct part, correct operation, done with the larger probes used in the base alignment. With some creativity you can make it so the CMM will almost never red light in the first place.

General nudges:
-Turn up the search distance before and after nominal
-Use PCM on point features to verify loading/operation/etc
Code like this to check if a surface is where you expect it to be, or if it even hit the part at all(Notice the positionCMM() function is pulling variables - this point happens prior to the base alignment so I have to command it to move to a specific spot then cncBreak()
//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
-use PCM in conjunction with the material detection and missing bore functions (Don't forget to turn on "Continue at missing probing")

This feature happens sometime after the base alignment so endInspection() can be used to end the program. It retreats to a PCM controlled park position I use in the inspection_end_pcm.txt file.
if getActual("Circ. J Level Spline Hole 10").boreIsMissing then
	message("Incorrect orientation of oil holes, please verify how the part is loaded and try again")
	endInspection("NO_DATA_OUTPUT")
endif
Link to comment
Share on other sites

---
I also realized I didn't answer specifically recovery.

I have a separate Recovery program as I specifically did not want it running automatically... plus it would have to be separate to run after a red light.. The recovery program itself has nothing but a theoretical point, and 2/3 lines of PCM. (Not all machines have the changeStylusSystem()
setInspectionDrivingSpeed(50)
changeStylusSystem("Star Port 2")//Change this to the first system used on that CMM
positionCMM(50.0,-125.0,-50.0)//Match this to the park position for the CMM
3535_9069117dbc3b1ef5d8455d22476050b9.png
I have code (getPositionCMM()) in the inspection_start_pcm.txt file that checks the current position of the CMM and won't let a program start if it's not there. inspection_end_pcm.txt has code( positionCMM()) that makes the CMM retreat to a "park" position everytime a program finishes normally OR when the endInspection() function is activated in the program.

endInspection() will finish the current feature, including clearance moves, then will end the program normally.


So the recovery program will work anytime the probe is clear of the part, if you are having problems with probes getting stuck you need to fix that with programming, then PCM and other settings can help you with everything else.
Link to comment
Share on other sites

---

Please sign in to view this quote.

Very nice Michael. I have always employed similar routines for error proofing. Each project is/was different but something to the effect of the below. This one is a little unique as it uses some undocumented PCM (ssshhhh) to find get the location of the Ref sphere. Ref1X is then placed in the Xnom field of a space point and so on. The point is then probed where the Ref sphere should be located. If its present, it stops the operation.

if getRecordHead("operator") <> ("Master") then //change "<>" to "==" to skip error proofing for run offs.  Skips for Master User
if getRecordHead("dmesn") <> ("000000") then  //change "<>" to "==" to skip error proofing for run offs.  Skips for offline seat
	
Ref1X=(baseSystem().machine.machineControl.sphereNormalObject.spherePosition.x)
Ref1Y=(baseSystem().machine.machineControl.sphereNormalObject.spherePosition.y)
Ref1Z=(baseSystem().machine.machineControl.sphereNormalObject.spherePosition.z)+baseSystem().machine.machineControl.sphereNormalObject.sphereRadius

	measure("Point Ref Sphere PCM").z
		if getActual("Point Ref Sphere PCM").materialDetected == true then 
			positionCMM(30,-30,-30,"Z","X","Y")	
			message("REMOVE CAL SPHERE"+cr()+"Please Try Again")
			cncBreak()
			endif
	if abs(deg(getActual("START Plane Dat A Recall").a1)) > 0.40 then
		positionCMM(30,-30,-30,"Z","X","Y")	
		message("Part Not Fixtured Properly"+cr()+"Please Try Again")
		cncBreak()
	endif
	if abs(deg(getActual("START Plane Dat A Recall").a2)) > 0.40 then
		positionCMM(30,-30,-30,"Z","X","Y")	
		message("Part Not Fixtured Properly"+cr()+"Please Try Again")
		cncBreak()
	endif
endif
endif  //end error proofing checks section

Link to comment
Share on other sites

 Share

×
×
  • Create New...