![]() |
|
![]() |
|
|
Thread Tools | Display Modes |
|
|
#1 |
|
Newbie
Join Date: Sep 2005
Location: Palm Beach Gardens, Fl.
Posts: 7
Rep Power: 0
![]() |
intro/and question
Greeting all –
I just now registered. I program (if you call it that) Coordinate Measuring Machines for a dental implant manufacturer in south Florida. I do other things too, under the umbrella of the quality department here. My background is in electro mechanical design. I have worked in manufacturing / engineering support roles for the bulk of my career, and have a fair amount of engineering experience for a wide range of subjects. I’m basically a designer turned programmer (thanks to outsourcing jobs off-shore). I enjoy music (I’m booking tickets for The Riverwalk Blues Festival as we speak.), play darts on Monday nights, like to day dream about being Emperor of the World for a day ( to fix it, of course ), work hard, and fill the rest of my time being daddy to my two beautiful daughters. I know, I’m as board writing this as you are reading it, so let me get to the point. What brings me here is this. One of the systems I program here is a real oddball. The OEM created a hybrid language in which I code instructions to what is basically a robot. The system is a TESA Scan 25 (a Swiss machine, distributed by Brown & Sharp.), and it runs on a language called Procal. The OEM created two applications for this system, one (Pro-Composer) is a lobotomized GUI programming interface to the system. This application allows the user to select functions from a menu, and “draw” a particular analysis of what is seen within the defined zones. i.e measurement from one feature to another. This application creates a file which can then be loaded and run from the second application. The other application provided is Pro-measure. In this application the user can view and edit the un-compiled instruction sequences from Pro-composer, as well as compile and execute them. Unfortunately, to get what we need out of these systems, we really need to edit the code. The language appears to have enough power and flexibility to blow up the world; and with this I have created “smart” applications, which do cool things when an inspection is in process. Here’s the grind: Neither the distributor, or the OEM is awfully forthcoming with support for this type of programming. They appear to have chosen to marketed this system as a monkey proof inspection system, and largely have ignored my questions about coding. I can hear you saying, “so, use the GUI interface”. Believe me, if I could, I would. The applications developed using this interface simply don’t run. Our parts are small, and have many features turned and ground on their surfaces. Editing the un-compiled code allows me to have the system orient the part, and dynamically position scan zones for the measurements: The GUI interfaces can’t, and applications created with this interface (on our parts) crash. Before I go on, I am in no way disparaging the system. It very powerful, accurate, and has function that leaves other inspection equipment in the dirt. I’ve been lead to believe that I’m on a fairly short list of folks who utilize Pro-measure as a programming interface, and I’m hoping someone of you knows something about Procal, or a similar language. I’m hoping to get a users group going, to share information. Would anyone like to contribute? r/ Brian |
|
|
|
|
|
#2 |
|
Expert Programmer
Join Date: May 2005
Location: East Lansing, MI
Posts: 663
Rep Power: 4
![]() |
I've never heard of Procal but hopefully someone here could've head of it. All i can say is welcome to the forums and good luck
|
|
|
|
|
|
#3 |
|
Programmer
Join Date: Sep 2005
Location: Požega, Croatia
Posts: 93
Rep Power: 3
![]() |
Welcome to forums!
![]()
__________________
1001 1101 1001 1110 0101 1102 ?! AAAAARRGGHHH _____________________ Free&Premium Web hosting reviews. Click here! Money making oasis. Run your own home based biz. |
|
|
|
|
|
#4 |
|
Programming Guru
![]() ![]() ![]() |
welcome
__________________
http://jasonpowers.net "There are a thousand hacking at the branches of evil to one who is striking at the root." |
|
|
|
|
|
#5 |
|
I eat cake for breakfast.
![]() ![]() ![]() ![]() Join Date: Jul 2004
Location: In my box.
Posts: 4,434
Rep Power: 9
![]() |
'Loo dar, and welcome.
|
|
|
|
|
|
#6 |
|
Newbie
|
Welcome to the forum. Procal? never heard of it.
Maybe if you post some code we may be able to recognize it.
__________________
War cannot be avoided until the physical cause for its recurrence is removed and this, in the last analysis, is the vast extent of the planet on which we live. ~ Nikola Tesla |
|
|
|
|
|
#7 |
|
Newbie
Join Date: Sep 2005
Location: Palm Beach Gardens, Fl.
Posts: 7
Rep Power: 0
![]() |
lol you really need a hobby, ooble lol normally i'd recommend a girlfriend.... let's up the meds first.
Last edited by McCabe; Sep 29th, 2005 at 1:32 PM. Reason: oops |
|
|
|
|
|
#8 |
|
Newbie
Join Date: Sep 2005
Location: Palm Beach Gardens, Fl.
Posts: 7
Rep Power: 0
![]() |
This typical of "pro-composer" generated code. ...I start with somthing like these and add stuff.
Mind you, the language has lots more functionality than is demonstrated here. {---------------- This Program was Compiled by Pro-Composer --------------} { Version - 2.30.1 } { Schematic - X:\MTEAPPS\example.sch } { Date - 9/29/2005 } { Time - 2:10:49 PM } { Serial ID - T25040306 } {-------------------------------------------------------------------------} Include:Library Define isplay("")Units:All("Inch") Call(OverScanDistance,0.0,0.0) Define:Meas(L01,"Length", 0.84970, 0.00100,-0.00100,1,0) Define:Meas(D01,"Ř Average", 0.12470, 0.00100,-0.00100,1,0) { Next scan provides data for: E01 E02 D01 } Call(SetScanCompRange,1) Call(Step, 0.00039) Define:Zone(1, 0.57531, 2.64853,-0.04409, 0.24504,-0.10000+0, 0.10000+0) Call(Scan:Zone,1) Call(FeatureStart,"Edge: Normal","E01-Normal") Call(SetScanCompRange,1) Declare:Global_Var(E01,1,1) Call(Step, 0.00039) Define:Zone(1, 0.57531, 1.40909, 0.10543, 0.24504,-0.10000+0, 0.10000+0) Evaluate(HelixAngle:= 0.00000) Call(Edge,1,EX[E01]) Evaluate(HelixAngle:=0) Call(FeatureEnd) { Set Reference Edge to E01 } Define _Origin(EX[E01])Call(FeatureStart,"Edge: Normal","E02-Normal") Call(SetScanCompRange,1) Declare:Global_Var(E02,1,2) Call(Step, 0.00039) Define:Zone(1, 0.43865, 1.23944,-0.04409, 0.05039,-0.10000+0, 0.10000+0) Evaluate(HelixAngle:= 0.00000) Call(Edge,1,EX[E02]) Evaluate(HelixAngle:=0) Call(FeatureEnd) Define:Feature_Type(L01,"Length: Length",0x000000,2) Compute:Meas(L01,ABS(EX[E01]-EX[E02])) Limits:Warning(L01,100,100) { Next scan provides data for: CL1 } { Set Reference Edge to E02 } Define _Origin(EX[E02])Call(SetScanCompRange,1) Call(Index,1) Call(Step,0, 1.00000) Define:Zone(1,-0.56993,-0.39646,-0.01618, 0.14130, 0.00000+0,360.00000+0) Call(OverScan,0,0) Call(scan:rz:zone,1) Call(OverScan,0,0) Call(Old tep)Call(FeatureStart,"Centre-Line: Dynamic Average","CL1-Dynamic Average") Call(SetScanCompRange,1) Call(Index,1) Define:Zone(1,-0.79166,-0.61131,-0.14114, 0.14016, 0.00000+0,360.00000+0) Define:Zone(2,-0.56993,-0.39647,-0.14114, 0.14130, 0.00000+0,360.00000+0) Declare:Global_Var(CL1,1,1) Call(OverScan,0,0) Call(Measure:RCCLA,1,2,CL1,360) Call(OverScan,0,0) Call(FeatureEnd) { Set Centre-Line to CL1 } Call(Set:RCCL,CL1) Call(FeatureStart,"Diameter: Average","D01-Ř Average") Call(SetScanCompRange,1) Call(Step, 0.00394) Define:Zone(1,-0.76174,-0.49686,-0.10213, 0.10165,-0.10000+0, 0.10000+0) Evaluate(HelixAngle:= 0.00000) Call(Dia,1,M[D01]) Evaluate(HelixAngle:=0) Call(FeatureEnd) Define:Feature_Type(D01,"Diameter: Average",0xff0000,0) Compute:Meas(D01,M[D01]) Limits:Warning(D01,100,100) Last edited by McCabe; Sep 29th, 2005 at 1:21 PM. Reason: oops |
|
|
|
|
|
#9 |
|
PFO Founder
![]() ![]() |
Welcome to the community
![]()
__________________
BIG K aka Kyle Programming Forums Kyle K Online Please do not PM or email me programming questions. Post them in the forums instead. |
|
|
|
![]() |
| Bookmarks |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|