Jump to content

Get Probe list for CMM...


---
 Share

Recommended Posts

has anybody found a way to get the list of all the Stylus systems and individual probes for a given CMM?

I've seen the solutions for getting the ones in a CMM program, but not an option to grab the names of all the ones that a CMM has available.

thanks!
Link to comment
Share on other sites


baseSystem().machine.machineAllProbeObjects


stylusSystemList = baseSystem().machine.machineAllProbeObjects.asList
for i = 1 to stylusSystemList.size
	display(getParameterNamed(stylusSystemList,i).confName)
next i
Link to comment
Share on other sites

  • 3 weeks later...

Please sign in to view this quote.

Yes because all I'm doing with this is creating a toleranced printout for qualification programs that looks the exact same as their program printouts, and can be tracked since that doesn't exist. I have it working from a list I manually type out but I am attempting to create some PCM code that makes the list automatically so I don't have to recreate it 33 times and always manually keep it up to date when we change stylus systems.

We have many different technologies here, with target Sigma values between 0.0003 and 0.001, sometimes on the same CMM in the case of Contura's with disc probes.

Quite often I come in to find the night shift has wasted hours trying to get a disc probe to 0.0003 because they forget that's never going to happen. Or they tried to get a 20 year old Eclipse with RDS and Renishaw TP20 to 0.005... etc

I get that in Europe you have to be far more educated to even look at a CMM but that's not the case in North America, Calypso really needs more of these "dummy" features.
Link to comment
Share on other sites

  • 2 years later...
---
If I still need to get a list of probe names, how to write the code? I put. Replacing confName with probeName is wrong
Link to comment
Share on other sites

---

Please sign in to view this quote.

Michael,

I totally agree, we need more Probe information access in Calypso. For example as I mentioned in a previous thread, if you are on a machine, try finding the qualification limit of any probe that is not the active stylus. I have done the same as you mention create a qualification program that has some pass/fail data in it, rather than just a blank page. It would be nice if PCM had access to stylus qualification limit values, so this report could update dynamically.
Have you found a way to do this yet ?

Thank you sir.

@PhillipKeller , any ideas ??

Chris
Link to comment
Share on other sites

---

Please sign in to view this quote.

I did. I don't love it though, it's more manual than I hoped. I had 2 options I considered, neither are in practice yet just on my own PC.

Option 1:
I have a standard calibration program, they calibrate normally. The end of that program generates a report that gives a snapshot of every single probe on the machine. It uses PCM to loop through the probe system name from a manually created list. Downside is then if a calibration is ran multiple times with only a few probes selected you get all the data for every probe anyway. Most of our machine's have multiple sphere positions so it's not possible to calibrate everything in 1 go.

Which led to:

Option 2:
A separate program that is run after they think they are done calibrating to essentially create a snapshot of the machine to go to the database. Downside is it relies on people following instructions...

*wishlist, haven't done this yet, no time*
Option 3: Make a smarter version of Option 1 that only loops through the probe systems that were selected in the run, that way it's only giving the database data from whatever was just calibrated instead of duplicate data from previous calibrations of a given probe. No idea how to do this yet though, I'm sure it's possible. I think I would use an inquireList() to make them choose which Stylus Systems they are calibrating, then use addCF() or addME() based on their selection... if those commands work with the Calibration Characteristics.

Slightly bitter it's even necessary. If the software would simply treat them like any other characteristics we could set tolerances, have the data go to the standard printouts and be done with it.

Edit to add a picture:
3535_4348610f704d22b22c33088aed4de329.png
Link to comment
Share on other sites

---
Michael,

Fantastic work as always.
So are you saying the only way you know how to get the calibration limits, is by reading all probes on the CMM ?

Yeah, I see how that could be a challenge to get only the ones you need. Not impossible, just quite a bit of extraneous work.

Keep us posted.

Thanks,

Chris

P.S. I have requested this in the My Voice Portal .. https://portal.zeiss.com/my-voice/softw ... f4c5ee557b
Link to comment
Share on other sites

---

Please sign in to view this quote.

I upvoted it.

I never did answer that one, but no, I didn't find a way to pull any of the limit values, I suspect it's hidden somewhere that you'd have to go reading the probe database like when you want to get a calibration time. I decided it wasn't worth chasing. We are automotive, nobody is going to die if somebody can't get an S value within the limit we set, so for us a nice report like I showed would be good enough. So we don't actually use the limit values, other than our QA Lab CMMs that have a set number of days.

For the calibration program I just set the limits in the tolerance of the result element... and if I go back to this I'll make them variables that I can change as required for different machines or different probes on the same machines.

We are hopefully getting PiWeb shortly, which means I'll be able to make it react to bad calibrations, or anything else I want so I really should get this figured out and in place.

I think if I was to set a limit tolerance I would do it like:

Custom Calibration report has a limit of 0.001mm for XXT, turns red if not met. But the limit would be another 25% or so above that so if somebody on nights is struggling and getting 0.001134 or so repeatedly I can teach them to put the machine back together let it get used and run, but the PiWeb database would record it and tell me to go investigate the machine in the morning

But if it was over the hard limit that we set, whatever that ends up being, then the machine would be down until it could be fixed.

Makes sense in my head anyway.

Edit: actually I'm pretty sure there is a getProbe() instance variable that disqualifies a given probe so then you wouldn't even need the software limit, you could set your own.
Link to comment
Share on other sites

---
Here are some fun things you can play around with too. The PCM here was just a "tinkering" session that have been modified since they were written so the notes/comments may not be totally accurate but I thought I'd share a few little tricks you can try. There are more elaborate ways to do similar actions but these are just snippets.

As always, use at your own risk.
//probe list
deleteFile("c:\temp\pickProbe.txt")
P_List="probe=inquireList("+chr(34)+"Select Probe to Evaluate"+chr(34)
for i = 1 to baseSystem().machine.machineAllProbeObjects.keys.size
P_List=P_List+","+chr(34)+getParameterNamed(baseSystem().machine.machineAllProbeObjects.keys.asList,i)+chr(34)
next i
P_List=P_List+")"
addToFile("c:\temp\pickProbe.txt",P_List)
runPCMFile("c:\temp\pickProbe.txt")
display(probe)

getRackPorts()

//gets used probe list, puts in text file
deleteFile("c:\temp\pickProbe"+getRecordHead("planid")+".txt")
P_List="probe=inquireList("+chr(34)+"Select Probe to Evaluate"+chr(34)
for i = 1 to settingGet("usedProbeConfigs").size
P_List=P_List+","+chr(34)+getParameterNamed(settingGet("usedProbeConfigs").asList,i)+chr(34)
next i
P_List=P_List+")"
addToFile("c:\temp\probechangeover"+getRecordHead("planid")+".txt" ,P_List)
runPCMFile("c:\temp\pickProbe.txt")
display(probe)

//gets probes in rack, puts in text file
repeat
deleteFile("c:\temp\proberack"+"_"+getRecordHead("planid")+".txt")
P_List="probe=inquireList("+chr(34)+"Select Probe to Evaluate"+chr(34)
for i = 1 to getRackPorts().size
P_List=P_List+","+chr(34)+getParameterNamed(getRackPorts().asList,i)+chr(34)
next i
P_List=P_List+")"
addToFile("c:\temp\proberack"+"_"+getRecordHead("planid")+".txt" ,P_List)
runPCMFile("c:\temp\proberack"+"_"+getRecordHead("planid")+".txt")
message(probe)
until (probe) == ""
display(probe)

usedprobes = settingGet("usedProbeConfigs")
if fileExists("C:\temp\Used_Probes" + "_" +getRecordHead("planid") + "_" + usedprobes +".txt") == false then 
deleteFile("C:\temp\Used_Probes" + "_" +getRecordHead("planid") +*+ ".txt")
addToFile(("C:\temp\Used_Probes" + "_" +getRecordHead("planid") + "_" + usedprobes +".txt"),usedprobes)
endif
//display(readListFile("c:\temp\UsedProbes"+"_"+getRecordHead("planid")+probe+".txt"))
//readListFile("c:\temp\UsedProbes"+"_"+getRecordHead("planid")+probe+".txt")

//gets used probe list, puts in text file
deleteFile("c:\temp\pickProbe.txt")
P_List="probe=inquireList("+chr(34)+"Select Probe to Evaluate"+chr(34)
for i = 1 to getRackPorts().size
P_List=P_List+","+chr(34)+getParameterNamed(getRackPorts().asList,i)+chr(34)
next i
P_List=P_List+")"
addToFile("c:\temp\pickProbe.txt",P_List)
runPCMFile("c:\temp\pickProbe.txt")
display(probe)
changeStylusSystem(probe)
Link to comment
Share on other sites

 Share

×
×
  • Create New...