Jump to content

Calypso Automation


---
 Share

Recommended Posts

I am writing a third-party application with the hopes of providing some automation to our machines running PC-DMIS and Calypso. PC-DMIS is very open to Basic/VB.Net interfacing but I'm not seeing the same from the Calypso side. I read that Zeiss provides an automation option allowing access to an AAI interface. Is this something that I would need, or does anybody here have any other experience with automating Calypso?

Thank you.
Link to comment
Share on other sites

How long is a sausage?

What exactly do you wish to automate? Sequence of executions? Varietys? How many different protocols shall comunicate? Any pre- or post-processing needed? UDP or TCP, a reqirement of standardisation, one or two way communication?

Its impossible to answer your question....
Link to comment
Share on other sites

Eric,

I am simply trying to create an interface similar to Inspect, made by Hexagon. Something that will let me launch either PC-DMIS or Calypso and let the user select a measurement routine, run the routine, and show the results. Networking is not necessary. It seems to me that PC-DMIS is much more self-explanatory when it comes to automation and I didn't know if something extra (licensing) was required to communicate with Calypso.
Link to comment
Share on other sites

I worked with FACS quite a bit in the past and it is the bridge you need. The best thing to do is call your regional distributor and ask to be put into contact with someone from the Projects group for quote.
Link to comment
Share on other sites

Perfect,

I was gathering that from the help files/Zeiss site, just wanted to make sure. I put in a request earlier today and will wait to hear from them.

Thank you Richard
Link to comment
Share on other sites

Feel free to correct me if I'm wrong.

Why does he need FACS?

As far as I know, without really dig in to it, the communication is done via Automatisation Application Interface and CMM-OS. And as long as you know what port you are using you shuld be able connect and communicate with stuff like telnet. And then be able to send, if my memory serves me right (getting older, above 30 now..) "OPEN(path/to/program)", wait for ok reply, then "START(path/to/program)". (maybe you need to specify the reciver) Isnt FACS just a interface so the customer doesn't need to use command lines?

So I can't see why FACS is needed? How ever, I took a look at Hexagons "Inspect" and if you dont need a lot of real time status crap I don't even think that aai is required. Atleast not to make a nice looking interface to choose cmm, programs and show results, heck even make your own result presentation. You will need pcm tough.

I'll show you and old interface I did that's not in use anymore when I'm back at work tomorrow. The reason it's not in use isn't cause it doesnt work, we just recived new, higher demands on a lot of parts (old aero stuff) it it was easier to create something new then implement that in to the old.

How ever, to make it support both peecrap-dmis and calypso. Thats something, and I usually find Zeiss unwilling to answer "wierd" questions. So protocol support won't be easy obtained 😃 I do have some notes of stuff I picked up here and there over the years so I'll give you all the support I can if you have any specific questions. Stuff like this is fun!
Link to comment
Share on other sites

Eric,

I'll keep an eye out for your reply tomorrow. I am taking a look through some of zeiss interop files to see if anything is possible without another license (although we don't have pcm...) as I would assume a simple connection and manipulation shouldn't need extra licensing. I will also wait to see what Zeiss says in case they have some strange protection in place.

As far as PC-DMIS incorporation goes, the support is already there for automation on that end. The only issue would be interaction between the two which would really just be assuring correct probe information while transferring and maybe going through an I++ port for communication on PCD side. At least I hope.

Any information you have that's easily accessible to you is great. I agree, it is fun.
Link to comment
Share on other sites

FACS doesn't require PCM and as far as licensing goes, it is a product that Zeiss charges money for. You have to have access to AAI so a change to your license will be required. There is also a hardware component to FACS. A SIPOS will need to be installed in your controller by a service tech. This allows you to set up a "safety position". When the CMM completes a measurement run, a command to move to the safety position is read and when the CMM gets there, a signal to the robot is sent and the robot can now reach into the measurement volume, remove the part and place the next part into the fixture. When the robot completes this, another signal is sent and the program begins again. That's one version. There are several variations on that theme. Some with robots loading parts, others where actual human beings do the loading. As I stated earlier, contact Zeiss and they will provide a quote for a setup that will suit your needs. Now, is it possible to rig up some kind of home brew, black magic, tarot card reading configuration. Absolutely it is. Google Rube Goldberg to begin your research.
Link to comment
Share on other sites

Richard,

I'm not trying to step on Zeiss' toes with this. The automation level that I am talking about is much more mild than it may have sounded. We are not looking for any robots, we're not that flooded with inspection. I am still going to hear back from Zeiss and see what they say.

I am mainly just looking to work from the software side with basic software control (no hardware control on my end). Calypso will manage every aspect of the hardware. The inspiration for this comes from the fact that we are running PCD and Calypso on one CMM. There are some issues with this when it comes to switching software. I'm simply looking to eliminate human interaction when switching. We've gone through more than one probe head due to improper switching.

If Calypso access is completely locked down without FACS/AAI, then I'll have to pitch it to the company (depending on the quote, move on).

Thank you for your knowledgeable response. I would like to see a Zeiss robot setup.
Link to comment
Share on other sites

Ah,, ok,, sorry, my bad. Automation means a lot of different things to a lot of different people. One CMM running PC Dmis and Calypso. Supported by neither would be my guess. That's a tough situation. The cave man approach would be Calypso on one PC and CMM-OS with I++ and PC-Dmis on another computer with a A/B switch in between the computers and the controller.
Link to comment
Share on other sites

This controlled pretty much everything that operators needed to to. So the interactions with calypso where slim to none.
Here's a couple of pics from different stages, I cant go further in to the system since it will crash without a actual cmm if you go deeper.


For legal purposes I have changed the look of it slightly, the backgrounds used in this pictures where never used in the reality. 😉

114_1d91f5e4995f52f59a418976dbe125f2.png
114_e736406f1015e391cf3c807ff63a1667.png
Link to comment
Share on other sites

Eric,

That looks very sleek. I hope to design something similar to that that will allow access into some of the programs installed.

Question for you: I am getting a "cannot create ActiveX component" exception when trying to create an instance of Calypso. IT has completely locked down our ability to enter the registry, so I cannot see the full name of the Calypso interface. All I have is CalypsoInterface.Calypso. Is the reg entry something different? I have registered the dll and I do not see anything Calypso in the component services.
Link to comment
Share on other sites

Eric,

I am interested in hearing how you connected and manipulated Calypso. Did you just control the window itself? I cannot access Calypso methods through the CalypsoInterface.dll. I took a look through the help files and they created this interface to simply verify that Calypso was connected and to transfer particular measurement results to other programs. I mistook this for the ability to access the internal functions of the program.
Link to comment
Share on other sites

Ah, yes that's a interesting topic. I won't be able to explain in detail here, since it will take me the whole day to break it down. And I haven't touched that project for quite some time. So I don't even remember the details.

But here is a brief description on the concept as I remember it:

Calypso controlled it self, thru pcm. I loaded a placeholder plan that continuously looked for a trigger file in a endless loop.
Once that file exists, and containing info about what program to run, part serial no, order no, etc, etc, the placeholder program terminated it self, loaded the new plan, and executed it. Once the loaded program was finished, it reversed the process. Terminated it self, loaded the placeholder program and executed it. Placing it in the endless waiting loop for instructions.
Sound really simple when I describe it like that, but... 🙄
If I where to do it all over again I would not do it that way today tough. I would have opt for aai. Why? Cause it would be so much simpler, and probably cheaper in the end. I spent more then a couple of hours to get it to operate flawlessly as you might understand. But the point is, it can be done, theoretically you could add a robot to this as well.

If you wondering about any particular part of it I can take a look at it when I get some time over.

Another idea that just comes to mind is autorun. Maybe you can create your own arn file from an external program. That might be easier.

And regarding the CalypsoInterface, I played with that a couple of years ago, but it refused to work. So I asked my Zeiss rep, who asked the Germans, and the answer I got where something in line with: "The customer should use systemCall()". And that answer had nothing to do with my question at all, so I just broke a keyboard and moved on. I actually don't think it works any more at all.
Link to comment
Share on other sites

  • 1 month later...
Not sure if this is what your looking for. I was not the original author on this but have modified as needed. Uses the auto run interface just rewrites parameters to an .arn file (Auto Run file) every time and when operator account is opened that .arn file is the default.
there are different IF statements for different alignments. the code for the IF statements was stripped from .arn files that I setup manually through the auto run interface.
it's wrote in VBA inside a spreadsheet.

************************************************************************************

Private Sub CommandButton1_Click()

If ComboBox1.Value = "" Then
MsgBox ("Please Choose a Program")

Else

Dim Calypso, FilePath, Program, PRGParms, ReleasedPRGDir, WIDir, Align As String
Dim FSO As FileSystemObject
Dim FSOFile As TextStream

FilePath = "S:\Zeiss_CMM\AutoRunDir\AUTO.arn"
Calypso = "C:\Users\Public\Desktop\CALYPSO 2018.lnk"

Calypso = "cmd /c " & """" & Calypso & """"
ReleasedPRGDir = "S:\Zeiss_CMM\Programs\"
WIDir = "S:\Zeiss_CMM\Work Instructions\"
With ComboBox1
Program = .List(.ListIndex, 0)
Align = .List(.ListIndex, 1)
End With


Set FSO = New FileSystemObject
Set FSOFile = FSO.OpenTextFile(FilePath, ForWriting, True)

FSOFile.WriteLine ("/ Auto-Run document")
FSOFile.WriteLine ("/ Last changed by 'AUTO' ( " & Date & " )")
FSOFile.WriteLine ("")
FSOFile.WriteLine ("")
FSOFile.WriteLine ("[DESK NAME :" & Program & " " & Align & "]")
If Align = "Gang2X4" Then
FSOFile.WriteLine ("[PALETTE NAME :" & Program & "]")
Else
FSOFile.WriteLine ("[INSPECTION NAME :" & Program & "]")
End If
FSOFile.WriteLine ("[BOUNDS :'549.0' '309.0' '275.0' '254.0' ]")
'FSOFile.WriteLine ("[PATH :\inspections\releasedprograms\" & Program & "]")
FSOFile.WriteLine ("[PATH :S:\Zeiss_CMM\Programs\" & Program & "]")
Link to comment
Share on other sites

Simulating keystrokes is something you use at home, when you wish to send a repeated message over let's say messenger to a friend.

I highly recommend that no task, important or not, use sendkeys if it part of automatisation. It has more potential ways of breaking down then there is fish in the ocean.

Just my humble opinion.
Link to comment
Share on other sites

  • 3 weeks later...
Hello Jacob,
in our company we have to manage > 5 000 Calypso programs on 10 MMT Zeiss machines
and every day , we have program created modified delete .....
with autorun , we found that it was not possible to manage them
so we investigate to have an application which allow end user
- find the correct Calypso program
- Start Calypso with selected program
--
with any other application, you can have an API / VBA Macro which allow to run File / Open
BUT with Calypso , to do so "Start Calypso with selected program"
we have to get a specific license FACS Automation Barcode , to be able to run
C:\Program Files (x86)\Zeiss\CALYPSO 6.0\Tools\StartCalypso\StartCalypso.exe
--
we do not find an other solution (without additional licensse)
Link to comment
Share on other sites

Xavier,

Your information coincides with what I was told by Richard Helle. I have tried some experimenting and, especially without PCM, I am beginning to believe FACS is necessary for what I would like to do with Calypso.

Thank you.
Link to comment
Share on other sites

  • 5 months later...
Hello everybody,

I'm quite new to automation and Zeiss family, so excuse my ignorance in advance.

I'm trying to learn PCM and eventually create my own software. I first started with vbscript from the official manual (page 788).
The error I get is this:
Unknown runtime error: 'CreateObject'
It raised when it tries to instantiate Calypso
Set MyCalypso = CreateObject("CalypsoInterface.Calypso")
Notice that CalypsoInterface.dll is successfully registered.

Version:
Calypso 2014, ServicePack 5
5.8.20 [12.08.2015]
on Windows 7

An additional question. Can I use TCP to connect to Calypso? If so, do you know where can I find documentation or an example?

Thanks

create obj.PNG

Link to comment
Share on other sites

John,

Look through your help files. I followed the same assumption that CalypsoInterface.dll would allow me to communicate with Calypso (COM) but after many hours I discovered that the .dll file can really only be used to determine whether Calypso is running or not, and to transfer measurement results to a secondary application. It cannot be used for complete control (i.e. CreateObject).

As Richard Helle and Xavier have noted, you really need a FACS/AAI license to automate. Or, you can be crafty as Eric Moberg is and run, through PCM, a sort of endless loop that is running a temp program and constantly searching for another program in it's directory. Your secondary application would then copy the desired program into the directory. PCM would terminate temp program, load the other. When done, it would terminate and return to temp program. Your app would remove your desired program from directory.

Rinse and repeat. Although I've never done this and have no access to PCM, I'd like to hear whether you succeed or not.
Link to comment
Share on other sites

Thank you very much for your time to reply.

Please sign in to view this quote.

Actually it can. It is from the official documentation.
'=================== ' Create an Object '===========
Set MyCalypso = CreateObject("CalypsoInterface.Calypso")
'=================== ' Settings '===================
MyCalypso.HostName = "localhost"
MyCalypso.TimeOutConnect = 10
MyCalypso.TimeOut = 10
MyCalypso.Port = 9998
'=================== ' Connect to Calypso '=========
If MyCalypso.ConnectCalypso <> 7 Then
	err = MyCalypso.ErrNo
	errTxt = MyCalypso.ErrName
	MsgBox( "No connection to Calypso")
	MsgBox( err & " " & errTxt)
	WScript.Quit[1]
End If
'=================================================== 
'Get a few Actual and Nominal Values
'===================================================
Set myVector = MyCalypso.GetActualXYZ("PointTop")
	if MyCalypso.ErrNo <> 0 Then
		MsgBox("Error with: GetActualXYZ")
	Else
		X = myVector.X 
		Y = myVector.Y
		Z = myVector.Z
		MsgBox ( "X-Actual Pos of PointTop : " & X)
		MsgBox ( "Y-Actual Pos of PointTop : " & Y)
		MsgBox ( "Z-Actual Pos of PointTop : " & Z)
	End If
Set myVector = MyCalypso.GetXYZ("PointTop")
XN = myVector.X
YN = myVector.Y
ZN = myVector.Z
RA = MyCalypso.GetActualRadius("CylFroCe")
RN = MyCalypso.GetRadius("CylFroCe")
Set myVector = MyCalypso.GetActualLineDirection("Line")
XA = myVector.X
YA = myVector.Y
ZA = myVector.Z
Set myVector = MyCalypso.GetLineDirection("Line")
XN = myVector.X
YN = myVector.Y
ZN = myVector.Z
'===================== ' Get Control Features '=====
DA = MyCalypso.GetCFActual("Diameter_CylFroCe")
DN = MyCalypso.GetCFNominal("Diameter_CylFroCe")
BR = MyCalypso.GetCFInTolerance("Diameter_CylFroCe")
SBR = MyCalypso.GetCFType("Diameter_CylFroCe")
'==================== ' Close Connection '==========
If MyCalypso.CloseCalypso = 0 Then
	MsgBox( "Connection closed")
Else
	MsgBox ( "Could not close the connection to Calypso")
End If
WScript.Quit[1]
When I run it localy it can create instance of CalypsoInterface.Calypso. There is no connection and the error number is 7. That means that
err = MyCalypso.ErrNo
contains value

Screenshots are from my test environment. If I can make it work to production will be my first step.

no con.PNGerr 7.PNG

Link to comment
Share on other sites

 Share

×
×
  • Create New...