The Optional Stop newsletter
Home | More Issues | Contact Us
From our website:
Home
Products
Services
Resources
On-Line Classes
CD-Rom Courses
CNC Books
Software
CNC Jobs
CNC Schools
CNC Tips
Educator's Page
Tech Talk Forum
Back Issues

June 20, 2011

Dear Subscribers,

Welcome to issue number eighty-seven!

Recently we’ve been receiving so many suggestions and example programs related to custom macro that it would take several issues to catch up with them all.

I’ve decided to devote this issue of the optional stop to showing four interesting custom macros. And thanks to the people who submitted them!

I hope you enjoy it.  In the next issue, I’ll go back to the regular format.

Mike Lynch

IN THIS ISSUE
Product Corner: Updates to CNC curriculum materials – and two new curriculums!
Macro Maven: Improving the fixture offset recording custom macro
Macro Maven: Another custom macro to truncate decimal places
Macro Maven: A fixture offset calculator custom macro
Macro Maven: Three-point arc center macro
 

Product Corner: Updates to CNC curriculum materials – and two new curriculums!

All of the instructor materials for our eight curriculums are now provided on two CD-rom discs and available – free of charge – to any instructor who teaches CNC classes. These curriculums utilize student materials (manuals and possibly workbooks) that must be purchased from us. Curriculums include:

  • Machining Center Setup and Operation

  • Machining Center Programming

  • Machining Center Programming, Setup, and Operation

  • Turning Center Setup and Operation

  • Turning Center Programming

  • Turning Center Programming, Setup, and Operation

  • Getting More From Your CNC Machines

  • Parametric Programming For CNC Machine Tools

A startup presentation (invoked from the root folder of each disc) makes it easy to navigate all materials related to each curriculum – and includes promotional information to help you decide which curriculum is right for you and instructional information to help you learn how to teach with the curriculums.

As always, instructor materials for all curriculums include PowerPoint presentations. Most include lesson plans. And some curriculums include an instructor’s manual. The PowerPoint presentations for each curriculum include a startup slide and a presentation links slide for each lesson to make it easy to navigate the main topics. Lesson plans and other written materials are provided on the discs in the form of Adobe Acrobat (.pdf) files that you can view from your computer or print for a more portable reference.

For the setup and operation and programming curriculums, we now provide computer-based testing. An inexpensive testing program called Quiz Builder is used – and the source files for the test are provided (Quiz Builder sells for $199.00). This means you can modify and/or add test questions and select a reporting method that suits your needs. Note that we still maintain our current method of testing – test pages in the setup and operation and programming student manuals. And for programming, programming activities are not included in the computer based testing.

We’ve also added two curriculums for more advanced topics. The Getting More From Your CNC Machines curriculum will help you teach more advanced CNC classes. Lessons include basic premises, who are you, machine utilization must dictate personnel utilization, setup reduction principles, setup reduction techniques, cycle time reduction principles, and cycle time reduction techniques.
So if you are currently using our curriculums – and even if you’re not – if you are teaching CNC classes, be sure to request this free update. Simply send your request to lynch@cncci.com – and of course, include your name and company’s or school’s shipping address.

 

M01

Top of page

Macro Maven: Improving the fixture offset recording custom macro

Suggested by Alejandro Garcia of Extreme Machine, Inc.

In a previous issue of The Optional Stop newsletter, we published a custom macro to record the settings for fixture offsets one through six (G54 through G59). The custom macro actually creates a program that will allow the user to reset fixture offsets to their current values at some future date. It does so by outputting the commands through the communications port using a DPRNT command.

While this program is very helpful, we recently had a request for doing the same thing with the extended fixture offset option (when users have a total of 54 fixture offsets). What follows is the program that does this – outputting the standard fixture offsets (G54 though G59) as well as the additional 48 fixture offsets. And again, a program is created that – when reloaded and executed once – will reset all fixture offset registers to their current settings.

Two notes:

First, the program uses system variables to attain fixture offset settings. As you know, system variables vary from one Fanuc control model to another. This program is for a 16M control. You’ll have to determine which system variables are related to your control if it is not a 16M and modify the program accordingly.

Second, and in similar fashion, the L word of G10 (which is being used to reload fixture offsets) also varies from one Fanuc control model to another. You will have to determine which L word is related to the extended fixture offset option and modify the program accordingly.

  • O9069(OUTPUT ALL FIXTURE OFFSETS)

  • (*************)

  • (G54 THRU G59)

  • (THEN)

  • (G54.1P1 THRU G54.1P48)

  • (************)

  • #9=6.(SET NO. OF FIXTURE OFFSETS -- MAX VALUE=6)

  • #18=4.(SET NO. OF AXIS REGISTERS -- MAX VALUE=15)

  • #4=1.(INITIALIZE FIXTURE OFFSET COUNTER)

  • POPEN(OPEN THE OUTPUT PORT)

  • DPRNT[]

  • DPRNT[O1010]

  • DPRNT[]

  • DPRNT[M00]

  • WHILE[#4LE#9]DO1(WRITE A FIXTURE OFFSET PROGRAM)

  • #33=5200.+[#4*20.](SET FIXTURE OFFSET POINTER #)

  • #24=#[#33+1.](GET THE X-AXIS REGISTER DATA)

  • 25=#[#33+2.](GET THE Y-AXIS REGISTER DATA)

  • #26=#[#33+3.](GET THE Z-AXIS REGISTER DATA)

  • #2=#[#33+4.](GET THE B-AXIS REGISTER DATA)

  • DPRNT[G90*G10*L2*P#4[10]*X#24[34]*Y#25[34]*Z#26[34]*B#2[43]]

  • #4=#4+1.(INCREMENT FIXTURE OFFSET COUNTER)

  • END1

  •  

  • (OUTPUT G54.1P1 THRU P48 WO)

  •  

  • #9=48.(SET NO. OF FIXTURE OFFSETS -- MAX VALUE=48)

  • #18=4.(SET NO. OF AXIS REGISTERS -- MAX VALUE=15)

  • #4=0.

  • DPRNT[]

  • DPRNT[M00]

  • WHILE[#4LT#9]DO2(WRITE A FIXTURE OFFSET PROGRAM)

  • #33=7000.+[#4*20.](SET FIXTURE OFFSET POINTER #)

  • #24=#[#33+1.](GET THE X-AXIS REGISTER DATA)

  • #25=#[#33+2.](GET THE Y-AXIS REGISTER DATA)

  • #26=#[#33+3.](GET THE Z-AXIS REGISTER DATA)

  • #2=#[#33+4.](GET THE B-AXIS REGISTER DATA)

  • #5=#4+1

  • DPRNT[G90*G10*L20*P#5[20]*X#24[34]*Y#25[34]*Z#26[34]*B#2[43]]

  • #4=#4+1.

  • (INCREMENT FIXTURE OFFSET COUNTER)

  • END2

  • DPRNT[]

  • DPRNT[M30]

  • PCLOS(CLOSE THE OUTPUT PORT)

  • M30

 

M01

Top of page

Macro Maven: Another custom macro to truncate decimal places

By Tom Sorrentino

I was reading "The Optional Stop newsletter, Issue 85", particularly the "Macro Maven: Rounding or truncating to a specific number of decimal places" article.

This seems to be a long method of doing this task. Below is what I found that does the same functions, but in a simpler method (below SET V).
I've added features of input checking. See M set below for example. It will be read as M0.

  • O0100

  • #121=3.68256

  • G65 P1000 S#121 M-0.5 D3 V100

  • M30

The custom macro:

  • O1000

  • (---INPUT-CHECKS---)

  • #13=[FIX[ABS[#13]]]

  • (GET POSITIVE INTEGER OF M#13 REGARDLESS OF INPUT)

  • IF [#13EQ#0] THEN #3000=101

  • (M-NOT-DEFINED)

  • IF [#13LT0] OR [#13GE2] THEN #3000=102

  • (M-OUT-OF-RANGE)

  • #7=[FIX[ABS[#7]]]

  • (GET POSITIVE INTEGER OF D#7 REGARDLESS OF INPUT)

  • IF [#7EQ0] OR [#7EQ#0] THEN #3000=102

  • (D-NOT-DEFINED)

  • IF [#7LT1] OR [#7GE5] THEN #3000=103

  • (D-OUT-OF-RANGE)

  • #22=[FIX[ABS[#22]]]

  • (GET POSITIVE INTEGER OF V#22 REGARDLESS OF INPUT)

  • IF [#22EQ0] OR [#22EQ#0] THEN #3000=104

  • (V-NOT-DEFINED)

  • IF [#22LT100] OR [#22GE149] THEN #3000=105

  • (V-OUT-OF-RANGE)

  • (DETERMINE D VALUE)

  • IF [#7EQ1] THEN #102=10

  • (USE 10 FOR 0.X0000)

  • IF [#7EQ2] THEN #102=100

  • (USE 100 FOR 0.0X000)

  • IF [#7EQ3] THEN #102=1000

  • (USE 1000 FOR 0.00X00)

  • IF [#7EQ4] THEN #102=10000

  • (USE 10000 FOR 0.000X0)

  • (SET V)

  • IF [#13EQ0] THEN #[#22]=[FIX[#19*#102]/#102]

  • (ROUNDUP)

  • IF [#13EQ1] THEN #[#22]=[FUP[#19*#102]/#102]

  • (TRUNCATED)

  • GOTO 9999

  • (NOTES)

  • (S=VALUE TO BE ALTERED)

  • (M=0-TRUNCATED, M=1-ROUNDEDUP)

  • (D=DECIMAL PLACE TO WORK TO)

  • (V=VARIBLE TO PLACE RESULT)

  • (G65 P1000 S#121 M1.0 D2.0 V100.0)

  • N9999

  • M99

M01

Top of page

Macro Maven: A fixture offset calculator custom macro

By Brian Glick of Vermeer Corporation

Here is a macro I developed to allow operators to calculate their own fixture offsets right on the machine. The macro tracks any point on the work piece as it indexes on the rotary axis.

I have an Excel spreadsheet that does this (probably similar in function to the one offered on this site), but the operators have to go find one of the programmers so we can calculate their offsets for them. Meanwhile, the machine is sitting idle. Using this macro the operator can accomplish this without leaving the machine.
Macro instructions for the following example: After touching off the origin of the part on side B270 using work offset G54 you need to calculate the machine coordinates of that same point when the pallet is rotated to B290 using work offset G55.

1. Touch off the main origin that will be used to calculate all the other offsets and enter this value into the correct work offset. We will use G54 for an example.

2. Pull up the macro in Edit mode and enter the work offset number that you just used. This is the offset the macro will read from to perform the calculations. Follow the formatting instructions provided by the comments in the macro. #100 = 54.

3. Enter the B-axis angle that the machine is at when touching off the first work offset. #101=270.

4. Enter the work offset you want to write your new work offset to. #102 = 55.

5. Enter the B-axis angle for the offset you need to calculate. #103 = 290.

6. Reset to the beginning of the program and run the macro. It will read the values out of G54 and calculate them for B290 and write the new values into G55
Note: You can use offsets G54-G59 and G54.1 P1-P48 with this macro. I have it set up to calculate one offset at a time, but it would be possible to have it perform several. If you prefer that no one edited the macro you could remove the first four lines and have the operator enter the values directly into the variables on the macro variable page. This macro requires that variables #530 and #531 are set to equal the machine coordinates for the center of rotation on the X and Z respectively. These two variables are located in the macro itself. Do not change them on the macro variable page or the program will overwrite them. These values will be different from machine to machine so do not copy the macro from one machine to another without changing these variables in the body of the macro.

Abbreviations:

OP = Original position

NP = New position

C.O.R = Center of rotation

  • O8111 (FIXTURE OFFSET CALCULATOR)

  • (OPERATOR EDITS THE NEXT FOUR VARIABLES)

  • (G54=54., G55=55.,ETC.)

  • (G54.1 P1=1., P2=2., ETC.)

  • #100=54. (ENTER ORIGINAL WORK OFFSET)

  • #101=270. (ENTER ORIGINAL B AXIS VALUE)

  • #102=55. (ENTER NEW WORK OFFSET)

  • #103=290. (ENTER NEW B AXIS VALUE)

  • (DO NOT EDIT BELOW THIS LINE)

  • (CENTER OF ROTATION VALUES—MACHINE SPECIFIC)

  • #530=-20.67 (X VALUE CENTER OF ROTATION FOR MACHINE)

  • #531=-40.565 (Z VALUE CENTER OF ROTATION FOR MACHINE)

  • IF[#101NEFUP[#101]] GOTO100 (Checks to make sure B value is a whole number)

  • IF[#103NEFUP[#103]] GOTO100 (Checks to make sure B value is a whole number)

  • IF[#100LT1.] GOTO110 (Checks to make sure offset value is not less than one)

  • IF[#102LT1.] GOTO110 (Checks to make sure offset value is not less than one)

  • IF[#100GT59.] GOTO110 (Checks to make sure offset value is not greater than 59)

  • IF[#102GT59.] GOTO110 (Checks to make sure offset value is not greater than 59)

  • IF[#101GT359.] GOTO120 (Checks to make sure B value is not greater than 359)

  • IF[#102GT359.] GOTO120 (Checks to make sure B value is not greater than 359)

  • N5

  • (DETERMINE WORK OFFSET TO READ FROM)

  • (DETERMINE SYSTEM VARIABLES FOR G54-G59)

  • IF[#100LT54.] GOTO10

  • #104=#100-54. (SETS #104 TO G54=0, G55=1...)

  • #105=20.*#104

  • #106=#[5221.+#105]

  • #107=#[5222.+#105]

  • #108=#[5223.+#105]

  • GOTO15

  • N10

  • (DETERMINE SYSTEM VARIABLE FOR G54.1 P1-48)

  • #104=#100-1. (SETS #104 TO G54.1 P1=0, P2=1, P3=2...)

  • #105=20.*#104

  • #106=#[7001.+#105]

  • #107=#[7002.+#105]

  • #108=#[7003.+#105]

  • N15 (CALCULATE X POSITION FROM C.O.R.)

  • IF[#106LT#530] GOTO20

  • #110=[#106-#530]*[-1.]

  • GOTO25

  • N20

  • #110=#530-#106

  • N25 (CALCULATE Z POSITION FROM C.O.R.)

  • IF[#108LT#531] GOTO30

  • #111=#108-#531

  • GOTO35

  • N30

  • #111=[#531-#108]*[-1.]

  • N35 (CALCULATE RADIUS OF ROTATION--C.O.R. TO O.P.)

  • #112=SQRT[[#110*#110]+[#111*#111]]

  • (FIND ANGLE OF ABOVE LINE FROM 0 DEG.)

  • #113=ACOS[#110/#112]

  • (IF Z POSITION IS NEGATIVE FROM C.O.R. SUBTRACT)

  • (ANGLE FROM 360 DEGREES)

  • IF[#111LT0] GOTO40

  • #114=#113

  • GOTO45

  • N40

  • #114=360.-#113

  • N45

  • #115=#103-#101 (DEGREES TRAVELED ON B AXIS)

  • #116=#114-#115 (ADD DEGREES TO ANGLE FROM ABOVE)

  • IF[#116LT0] GOTO50 (IF ANGLE IS NEGATIVE ADD 360 DEG TO IT)

  • #117=#116

  • GOTO55

  • N50

  • #117=360.+#116

  • N55

  • #118=#112*COS[#117] (B.C. X LOCATION FOR NEW POSITION)

  • #119=#112*SIN[#117] (B.C. Z LOCATION FOR NEW POSITION)

  • #120=#530-#118 (SHIFT X LOCATION BASED ON COORDINATES FOR C.O.R.)

  • #121=#531+#119 (SHIFT Z LOCATION BASED ON COORDINATES FOR C.O.R.)

  • N60

  • (DETERMINE WORK OFFSET TO WRITE NEW OFFSETS TO)

  • (DETERMINE SYSTEM VARIABLES FOR G54-G59)

  • IF[#102LT54.] GOTO70

  • #124=#102-54. (SETS #124 TO G54=0, G55=1...)

  • #125=20.*#124

  • #126=5221.+#125

  • #127=5222.+#125

  • #128=5223.+#125

  • GOTO75

  • N70

  • (DETERMINE SYSTEM VARIABLE FOR G54.1 P1-48)

  • #124=#102-1. (SETS #124 TO G54.1 P1=0, P2=1, P3=2...)

  • #125=20.*#124

  • #126=7001.+#125

  • #127=7002.+#125

  • #128=7003.+#125

  • N75 (WRITE OFFSET)

  • #[#126]=#120

  • #[#127]=#107

  • #[#128]=#121

  • GOTO999

  • (ALARMS)

  • N100#3000=100(B_AXIS_INCREM)

  • N110#3000=110(WORK_OFFSET_OUT_RANGE)

  • 120#3000=120(B_AXIS_OUT_RANGE)

  • N999 M30

M01

Top of page

Macro Maven: Three-point arc center macro

By Brian Glick of Vermeer Corporation

This is a macro I wrote to be able to find the center of an arc from three points. This gives 3-point touch off capability to machines that did not come with this feature – even if your machine doesn’t have a touch probe. A simple edge finder can be used. Basically what this does is allows the machine operator to touch three separate points on an arc (with the edge finder) and the custom macro will automatically write the machine coordinates representing the center of the arc into the specified work offset.

The macro uses the ACOS function which not all controllers support, so the first thing you need to determine is whether this function works on your machine. To do this, go into MDI and enter the following equation #100=ACOS[.5] and hit cycle start. If the controller supports this function it will return a value of 60 in variable #100 and you are in business; if not, it will most likely alarm out with “MACRO FORMAT ERROR”. We have a Fanuc 16MB that will read it and 16MA that will not.

If your machine does not support ACOS (arc cosine), you will have to modify the custom macro. Remember, ACOS renders the angle from the cosine function. All machines with custom macro do support the ATAN (arc tangent) function – which renders the angle from the tangent (side opposite divided by the side adjacent). While it will require more calculations, you should be able to modify the custom macro to use the ATAN function to get the data you need.
To use this program follow these instructions:

1. Load program and enter the work offset you want to use on the first line where #140=?. Follow the format instructions provided in the comments.

2. Load edge finder into spindle. (Light up point finder works best)

3. Put in Memory mode and press cycle start

4. Program stops on M0

5. Put control into Handle mode and touch first point on arc.

6. While keeping edge finder in place go back to Memory mode and press cycle start. The current position of the machine will be recorded and the program will stop on the next M0.

7. Repeat steps 5 and 6 for the second and third points.

8. The macro will write the coordinates to the center of the arc into the offset specified at the beginning of the program

This macro works on the basis of creating lines between the adjacent points found in the steps above. For example: a line connecting point 1 and point 2 and a line connecting point 2 and point 3. These lines are then bisected and the intersection of the bisecting lines is the center of the arc. Sounds easy, but there is a lot of trigonometry going on to find all the needed information.

You can also use the macro to measure the radius of the arc. The radius value from the center of the arc to the center of the tool is entered into variable #532 and then all you need to do is add the radius of the edge finder to this value if touching off the ID of an arc, or subtract it if touching the OD. This will give you an accurate measurement of the arc. Very helpful if you have a partial radius or something that is difficult to measure normally.

NOTE: Any points on the arc will work. You can touch 3 places close together or far apart. The further apart the more accurate you will be, but you can pretty much use this on any arc that is big enough to touch in three places. I would suggest touching the points in order CW or CCW although it seems to work if mixed up in any order. The program checks the radius of each point and if it falls out of a specified tolerance (I have it set at .005” but I have not seen any difference more than .0005”) in relation to each other the macro alarms out. This macro can write to offsets G54-G59 and G54.1 P1-P48.

I have added comments to the various lines to show what is going on in the body of the macro. Here are the definitions for some of my abbreviations.

P1 = 1st point

P2 = 2nd point

P3 = 3rd point

M1 = midpoint of line p1 – p2

M2 = midpoint of line p2 – p3

C1 = center of arc

  • O8110 (3 POINT ARC CENTER)

  • #140=54. (OPERATOR ENTER OFFSET)

  • (G54=54., G55=55.,ETC.)

  • (G54.1 P1=1., P2=2., ETC.)

  • IF[#140LT1.] GOTO501

  • IF[#140LT54] GOTO10

  • #141=#140-54. (SETS #141 TO G54=0, G55=1...)

  • GOTO15

  • N10

  • #141=#140-1. (SETS #141 TO G54.1 P1=0, P2=1, P3=2...)

  • N15

  • M0 (TOUCH 1ST POINT)

  • N16 (P1)

  • #100=#5021 (STORE MACHINE ABS POSITION)

  • #101=#5022

  • M0 (TOUCH 2ND POINT)

  • N17 (P2)

  • #102=#5021 (STORE MACHINE ABS POSITION)

  • #103=#5022

  • M0 (TOUCH 3RD POINT)

  • N18 (P3)

  • #104=#5021 (STORE MACHINE ABS POSITION)

  • #105=#5022

  • #106=[#100+#102]/2. (M1 X VALUE)

  • #107=[#101+#103]/2. (M1 Y VALUE)

  • #108=[#102+#104]/2. (M2 X VALUE)

  • #109=[#103+#105]/2. (M2 Y VALUE)

  • #1=ABS[#100-#102]

  • #2=ABS[#101-#103]

  • #110=SQRT[[#1*#1]+[#2*#2]] (P1-P2 LENGTH)

  • #1=ABS[#102-#104]

  • #2=ABS[#103-#105]

  • #111=SQRT[[#1*#1]+[#2*#2]] (P2-P3 LENGTH)

  • #112=#110/2. (M1-P2 LENGTH)

  • #113=#111/2. (P2-M2 LENGTH)

  • #1=ABS[#106-#108]

  • #2=ABS[#107-#109]

  • #114=SQRT[[#1*#1]+[#2*#2]] (M1-M2 LENGTH)

  • (FIGURE ANGLES OF SSS TRIANGLE MADE BY M1, P2, M2)

  • (LAW OF COSINES)

  • #1=[[#113*#113]+[#112*#112]-[#114*#114]]/[2.*#113*#112]

  • #115=ACOS[#1] (1ST ANGLE--P2)

  • #2=[[#112*#112]+[#114*#114]-[#113*#113]]/[2.*#112*#114]

  • #116=ACOS[#2] (2ND ANGLE--M1)

  • #117=[180.-#115]-#116 (3RD ANDGLE--M2)

  • (FIGURE ADJACENT ASA TRIANGLE MADE BY M1, M2, C1)

  • (LAW OF SINES)

  • #118=90.-#116 (1ST ANGLE M1)

  • #119=90.-#117 (2ND ANGLE M2)

  • #120=[180.-#118]-#119 (3RD ANGLE C1)

  • #121=[#114*[SIN[#119]]]/SIN[#120] (M1-C1 LENGTH)

  • #122=[#121*[SIN[#118]]]/SIN[#119] (M2-C1 LENGTH)

  • #1=ABS[#100-#106]

  • #2=ABS[#101-#107]

  • #123=ATAN[#1]/[#2] (FIND ANGLE M1-P1 FROM Y AXIS)

  • (DETERMINE WHICH QUADRANT VECTOR M1-P1 IS AIMING FOR)

  • (TO DETERMINE THE CORRECT ANGLE FROM 0 DEG--X POSITIVE AXIS)

  • (QUADRANTS ARE NOT NUMBERED IN STANDARD FORMAT)

  • (X+Y+ IS 1, X-Y+ IS 3, X-Y- IS 4, X+Y- IS 2)

  • IF[#100LT#106] GOTO30

  • #5=1.

  • GOTO35

  • N30#5=3.

  • N35

  • IF[#101LT#107] GOTO40

  • #5=#5

  • GOTO45

  • N40#5=#5+1.

  • N45

  • IF[#5EQ3.] GOTO50

  • IF[#5EQ4.] GOTO55

  • IF[#5EQ2.] GOTO60

  • IF[#5EQ1.] GOTO65

  • N50

  • #124=90.+#123

  • GOTO100

  • N55

  • #124=270.-#123

  • GOTO100

  • N60

  • #124=270.+#123

  • GOTO100

  • N65

  • #124=90.-#123

  • (M1-C1 LINE NEEDS ROTATED CW OR CCW TO GET CORRECT

  • ANGLE FROM 0 DEG)

  • N100

  • #7=-90. (ROTATES CW FIRST)

  • #33=0 (FLAG)

  • GOTO170

  • N165#7=90. (ROTATES CCW)

  • #33=1 (FLAG)

  • N170

  • #125=#124+#7 (UPDATES ANGLE)

  • #126=#121*COS[#125] (X B.C. LOCATION OF C1 BASED OFF RADIUS M1-C1 AND ANGLE #125 M1=0,0)

  • #127=#126+#106 (SHIFTS CENTER OF B.C. ON THE X TO CORRECT VALUE OF M1 AND GIVES CORRECT X VALUE FOR C1)

  • #128=#121*SIN[#125] (Y B.C. LOCATION OF C1 BASED OFF RADIUS M1-C1 AND ANGLE #125 M1=0,0)

  • #129=#128+#107 (SHIFTS CENTER OF B.C. ON THE Y TO CORRECT VALUE OF M1 AND GIVES CORRECT Y VALUE FOR C1)

  • #1=ABS[#100-#127]

  • #2=ABS[#101-#129]

  • #130=SQRT[[#1*#1]+[#2*#2]] (DETERMINE RADIUS OF CIRCLE FROM C1 TO P1)

  • #1=ABS[#102-#127]

  • #2=ABS[#103-#129]

  • #131=SQRT[[#1*#1]+[#2*#2]] (DETERMINE RADIUS OF CIRCLE FROM C1 TO P2)

  • #1=ABS[#104-#127]

  • #2=ABS[#105-#129]

  • #132=SQRT[[#1*#1]+[#2*#2]] (DETERMINE RADIUS OF CIRCLE FROM C1 TO P3)

  • (CHECKS TO MAKE SURE THREE RADIUS VALUES ARE THE SAME WITHIN .005 TOLERANCE)

  • (IF NOT IT GOES BACK AND FLIPS THE M1-C1 LINE THE OTHER WAY  AND THEN GOES THRU THE CHECKS AGAIN.)

  • IF[[ABS[#130-#131]]GT.005] GOTO300

  • IF[[ABS[#130-#132]]GT.005] GOTO300

  • IF[[ABS[#131-#131]]GT.005] GOTO300

  • #530=#132 (STORES RADIUS)

  • N200

  • GOTO400

  • N300

  • IF[#33EQ0] GOTO165 (READS FLAG TO SEE IF IT HAS CHECKED ANGLE BOTH WAYS IF SO IT GOES TO ALARM)

  • GOTO500

  • N400

  • (DETERMINE SYSTEM VARIABLES FOR G54-G59)

  • IF[#140LT54.] GOTO450

  • #135=20.*#141

  • #136=5221.+#135

  • #137=5222.+#135

  • #[#136]=#127 (WRITE OFFSET)

  • #[#137]=#129

  • GOTO999

  • N450

  • (DETERMINE SYSTEM VARIABLE FOR G54.1 P1-48)

  • #135=20.*#141

  • #136=7001.+#135

  • #137=7002.+#135

  • #[#136]=#127 (WRITE OFFSET)

  • #[#137]=#129

  • GOTO999

  • N500 #3000=100(ERROR)

  • N501 #3000=101(OFFSET-ERROR)

  • N900

  • N999

  • M30


M01

 

Top of page

 
 
 
 
 
 
Machining center training materials
 
Parametric programming ad

The Optional Stop newsletter is published quarterly by CNC Concepts, Inc. and is distributed free of charge to people subscribing to our (email) distribution list and to those downloading it from our website (www.cncci.com). Information is aimed at CNC users and instructors teaching live CNC classes. All techniques given in this newsletter are intended to help CNC people. However, CNC Concepts, Inc. can accept no responsibility for the use or misuse of the techniques given.

To subscribe: Simply email us (newsletter@cncci.com) and let us know you'd like to be added to our distribution list.

To unsubscribe: Respond to this email, typing REMOVE in the subject. Please accept our apologies if we have disturbed you.

ThirtyThirty hotel
Powered by Best Free Counters