5 Axis Machinist What Is 3 Plus 2???

Category : 5 Axis

5 Axis Machinist What Is 3 Plus 2?

Here is a question. Does three plus two equal five?

“Of course it does you twat” I hear you say.

Well when you are talking about five axis machining three plus two does not make five. Sorry I’m starting to talk in riddles here.

Honestly I fuckin hate riddles, you know those stupid things you sometimes find on Facebook.

Before you know what’s happened you find yourself sucked in and actually trying to do the bloody things.

I mean maybe it beats the shit out of filling in your tax return but still a complete waste of brain power.

Three Plus Two as Opposed to Five

Anyway you have simultaneous five axis machining and you have three plus two. Lets deal with simultaneous five axis machining first.

This is all that clever shit you see on YouTube.

This is a SWARF cut Side Wall Axial Relief Feed (There’s one to impress your mates)

You really should get out more.

Anyway what you see above can only be done on a simultaneous five axis machine. This means that all the axis have to move together as if they were locked in a gear train.

5 Axis Machinist

5 Axis Machinist Three Plus Two

Now some machines have five axis but they can’t actually run the axis simultaneously. Now it’s not that they don’t have their shit together, it’s just that some mean bastard didn’t spend enough cash when they bought your machine.

Let’s get this clear they can all move together but they are not synchronized, kind of random. A bit like Strictly Come Dancing where they have some fat old celebrity that you know will get dumped after everybody’s took the piss out of them for a couple of weeks.

There are the normal XYZ boring axis, plus you have two more which are rotary axis.

Now the XYZ (three axis) are simultaneous, but the other two (known as the teenage axis because they do what the fuck they want and take no notice of anyone).

This means you can only send them to a position, lock them up and then do some machining.

In itself this is really, really useful because you can machine a part all in one setup. You just index the two rotary axis to each position.

This is probably the most common use of a five axis machine.

Types of Five Axis Machines

Table Table

This is the machine above. It has a two rotary axis mounted on the table. The trunnion which is the big bit swinging from side to side and the round table that rotates on top it.

Head Head

This is a head that swivels in two directions.

Head Table

Sorry I haven’t got one of these to show you. This is where the head swivels and the table rotates.

When you are programming a five axis machine, which is usually on a CAM system, the CNC code is still the same no matter what configuration you have. (Head head, table table, head table)

5 Axis Machinist, Retro Fit

Retro, don’t even go there. What’s all this buying new stuff that looks like it’s old?

I mean if you are buying something new surely you want it to look new?

It’s mad.

I mean how do you ever show off to the neighbors. They think you are buying second hand shit. Really, you just paid a small fortune for a fuckin TV that look’s forty years old before you even took it out of the box.

I mean do you get a warranty on this stuff? Or do they say “sorry mate it ran out in 1963”

Listen I remember some of this shit when it was new, it was crap then, so why would you want it now?

My mother used to have to beat the livin shit out of our telly just to make it change channels.

Let’s get back to some 5 axis stuff.

What I’m on about, before you side tracked me, is you can fit a fourth and fifth axis as an afterthought. You just nail them to your machine table and send out a few M codes and away you go.

They don’t actually do anything very exciting but you can do all the three plus two stuff shown above.

You can even pay out a kings’ ransom and get these fully simultaneous. Can’t say I would recommend that unless it’s a real high value machine you are going to keep forever.

Haas do some great add on 4th and 5th axis at a great price too (tell them David Garner said to buy them and I’ll get a massive commission).

It’s All Done With Smoke & Mirrors

Not really it’s just a shitty old M code.

Retro fitted axis can be fully interfaced with your control or the control can be made to output an M code to activate your axis.

Now the machine hasn’t got a clue what this M code does and it doesn’t give a flying shit. The machine just waits to get a reply saying it can carry on.

The 4th axis has a program and it will output a move each time it gets one of these signals from the machine. When it has done this move it will tell the machine to carry on by sending a signal back.

Why So Many 5 Axis Configurations

  1. Designers get bored
  2. Strength and rigidity.
  3. Access.
  4. Weight. Imagine trying to swing round a massive engine block. It would be far better static on the table with the machine dancing around it.

Centre Of Rotation

I’m not going to go deep into this in this article. Mainly because I have to feed the cat and I’m having the name of my favorite celebrity tattooed on my arse later this afternoon.

I’ll be brief.

  1. It matters.
  2. It really matters
  3. It really really matters.

If the center of rotation on each axis is wrong then none of your positions will be correct.

With three plus two you can use a different work offset for each presentation. Each one can then be adjusted independently.

With simultaneous 5 axis you have to work around the centre of rotation. Fortunately if you have a touch probe a lot of machines have a built in routine to automatically set this using a ball bearing.

Here is more information on adding a fourth axis

This is my video about all of the above, I saved it till last otherwise my lazy followers and the ones that can’t read, would just go straight to it.

5 Axis Machinist What Is 3 Plus 2?

 

 

 




Macro For Over 18 (Using Alias In a Macro)

Category : Macro

 

 

Macro programming can use a G code to access a 9000 series program.

Read this article if you don’t know about this.

 

In this example macro we are going to set G181 to access program 9010.

macro

 

We will create a new drilling cycle that can take into account the point of the drill in the drill depth.

The line below would call program 9010 from the G181

G181 A120. D16. R1. Z-20. F200.

It works the same as a G81 but with a drill point angle (A) and a drill diameter (D). It then goes on to use some simple trigonometry to calculate the drill point.

Believe me it has to be simple for me because as my mate used to say, “if brains were made of dynamite I would struggle to blow my your fuckin head off”

It feeds down to the Z depth then incrementally drills the extra bit for the drill point. Then it rapids back out.

G181 A120. D16. R1. Z-20. F200.

A (#1) = 120.
D (#7) = 16.
R (#18) = 1.
Z (#26) = -20.
F (#9) =200.

Remember the table below from the last article.

O09010 (Drill Point Macro)

G103 P1           (No Look Ahead)

(Letter A #1 = Drill Point Angle)
(Letter D #7 = Drill Diameter)
(Letter R #18 = Rapid Point)
(Letter Z #26 = Depth)
(Letter F #9 = Feedrate)

G00 Z#18           (Rapid To R Point)

G01 Z#26 F#9       (Feed to Z depth)

#100= #1 / 2                  (1/2 Drill Angle)
#100= TAN[ #100 ]     (Tan Of Half Drill Angle)

#101= #7 / 2                   (1/2 Drill Diameter)
#102= #101 / #100      (Calculate Extra Depth)

G91 Z – #102            (Extra Bit)
G90
G00 Z#18          (Rapid Back To R Point)

G103 P0           (Look Ahead On)
M99

Let me explain this macro line by line

O09010 (Drill Point Macro)

G103 P1 (No Look Ahead)

The G103 is so that the macro does not read in front and get confused, it will now only read block by block. A bit like knowing the end of a book, you wouldn’t be arsed to read the rest of it.

The control normally reads in front so it has some idea what is going to happen next.

Always include an explanation with your macro in case you forget how it works. You wrote this thing so you can’t blame the bloke on nights.

(A #1 = Drill Point Angle)
(D #7 = Drill Diameter)
(R #18 = Rapid Point)
(Z #26 = Depth)
(F #9 = Feedrate)

G00 Z#18 (Rapid To R Point)

G01 Z#26 F#9 (Feed to depth at 200mm per minute)

The calculation below halves the drill angle. You will note that the drill angle is letter A which corresponds to #1

#100= #1 / 2     (1/2 Drill Angle)

Below will get  the tangent of the angle and this ends up back in #100 
#100= TAN[ #100 ]       (Tan Of Half Drill Angle)

Calculation below halves the drill diameter and puts it in #101

#101= #7 / 2       (1/2 Drill Diameter)

Macro, The Trigonometry

This is simple trigonometry and the answer is the depth of the drill point (Y).
Macro

In the diagram above
X is #101    (Radius of drill)
A is #100    (1/2 drill point angle)
Y is #102    (the bit we need to know)

#102= #101 / #100        (Calculate Extra Depth)

G91 Z – #102        (Feed down the extra amount calculated above incrementally)
G90                      (Back to absolute)
G00 Z#18           (Rapid Back To R Point)

G103 P0         (Look Ahead Back On)
M99

Carry on If You Are Over 18

Earlier in the post I mention the “Grown Up World Of Macro”. That is because I often meet programmers who learn macro and use it just because they can. Oh and to confuse the shit out of the machine operators and other programmers.

You learnt a bit of macro.

So fuckin what no one is impressed.

You can actually do more harm than good. As I have said in these posts before no one gives a flying fuck if you mess up the machine. Well apart from your boss (you know that bloke with the fat arse, little cock, and a Porch 911).

Seriously (and I rarely am) if you want to write macros here’s what you need to do.

  1. Do you really need one or is it just your huge ego and you need to get a life?
  2. Maybe you need to get out more?
  3. Will it confuse the operator?
  4. Can anyone use it?
  5. Is it simple for the user?
  6. Is it fool proof?

Let’s Look At My G181

Do you really need one or is it just your huge ego?
I think it could be quite useful to be able to allow for the drill point.

Maybe you need to get out more?
Definitely.

Will it confuse the operator?
No it’s very similar to a G81

Can anyone use it?
Yes

Is it simple for the user?
Yes my mum loves it and she’s 96.

Is it fool proof?
No definitely not we need to talk about this

Fool Proof

What if you missed out the Z value?

What if you had a minus value in R and a plus value in Z?

Would it still try and work if you input ridiculous figures?

Any of the above would completely screw it up. You could say “I’ll tell the operator to make sure he follows my rules”.

OK so if you just bought a new television and you accidentally pressed 12356 as a channel number.

What if the television just went off, or the screen locked up or it exploded and burnt down your house.

You would complain wouldn’t you. Us Brits can ignore this because we never complain. We’d probably ring up and thank them for the opportunity to build a new house.

Anyway we all know that the telly wouldn’t do that. It would either ignore you and treat you like the dipstick that you are. Or it would just go to channel 999 which is it’s highest channel.

Now this is not because Mr Sony is inside your telly thinking what to do if you make a mistake like shoving the remote control up your arse.

Your television has logic. This means in every scenario it knows what to do. It’s like the Bear Grylls of televisions.

So Let’s Look At Improving This

In a macro you can use a conditional statement. It’s like my wife said to me you either change your underpants every week or you piss off back to your mothers.

It gives choices.

Let’s Add This Line

IF [ #18 LT 0.0 ] GOTO999

What this means is that if #18, which is the R value, is less than 0 the control will jump to N999.

This means if you put a minus figure in R it would be less than zero and trigger the jump to N999.

N999 #3000= 1 (R LESS THAN ZERO PRICK!!)

#3000 puts the machine into an alarm state. The comment in brackets will be the alarm message and it looks like this.

This is how the programme looks now.

%
O09010 (Drill Point Macro)

G103 P1 (No Look Ahead)

IF [ #18 LT 0.0 ] GOTO999

(Letter A #1 = Drill Point Angle)
(Letter D #7 = Drill Diameter)
(Letter R #18 = Rapid Point)
(Letter Z #26 = Depth)
(Letter F #9 = Feedrate)

G00 Z#18 (Rapid To R Point)

G01 Z#26 F#9

#100= #1 / 2 (1/2 Drill Angle)
#100= TAN[ #100 ] (Tan Of Half Drill Angle)

#101= #7 / 2 (1/2 Drill Diameter)
#102= #101 / #100 (Calculate Extra Depth)

G91 Z – #102 (Extra Bit)
G90
G00 Z#18 (Rapid Back To R Point)

N999 #3000= 1 (R LESS THAN ZERO PRICK!!)

G103 P0 (Look Ahead On)
M99
%

Now it doesn’t take much imagination to see that you could completely fool proof this macro.

Oh and you can have loads of fun with the childish comments and sexual innuendo.

Variable Zero

#0 is a unique variable because it means no value.

IF [ #18 EQ #0 ] GOTO998

If you put a statement like the one above it means if #18 is vacant (meaning it has no value).

Then the programme will jump to N998.

N998 #3000= 2 (SORRY MY FRIEND, R HAS NO VALUE)

This is a much politer alarm and it saves a kick in the bollocks from the machine programmer when he gets offended by your childish alarm comments.

Don’t confuse zero with no value. Zero is a value. Ask your clever mate.

Default Values In Your Macro

So now for the “no value” scenario. You could make your  programme jump to a line that gives a default value.

IF [ #18 EQ #0 ] GOTO123
GOTO124
N123 #18=1.
N124 

Take a moment to study the above code.

Come on get a grip do you understand it?

Now I’m from the old school of education. When I was a boy if you didn’t know the answer to the teacher’s question it was simple.

They beat the fuckin shit out of you.

And if you discount completely fucking up the planet and starting a lot of pointless wars, my generation have done a pretty good job thus far.

Anyway today I’m going to be patient.

Let me explain…..

If you  are offended by any of the above please go to this website(this bloke writes much better stuff than me)

IF [ #18 EQ #0 ] GOTO123
GOTO124
N123 #18=1.
N124 

It’s very easy really, the first line will jump to N123 and set #18 to 1 if #18 has no value.

If however, there is a value in #18, then the control ignores the GOTO123 and reads the next line which jumps to N124 and carries on as if nothing ever happened.

Belt and Braces Things You Can Do

Check all of the following, what happens if…………

  • Values to high
  • Values to low.
  • No value entered
  • Letter missed out

You can set alarms or default values if your conditions are not met.

It’s a bit like blackmail except for the bit where they have to leave a shit load of money in a phone box for you to pick up.

Things to Think About

Think of every dumb ass thing that your user could do with your macro.

Then make your macro respond in a adult way. So if he inputs daft information the macro sorts it out. It can use defaults or go into an alarm state with a message.

Keep the macro front end really simple, this is the bit the user sees and uses. For example my macro needs the radius of the drill for it’s calculation. You will note I ask the user to input the diameter.

Why?

Because it’s simple and easy for him and that’s what he will know. I can do all the work behind the scenes hidden away in my 9000 series programme.

The front end.

G181 A120. D16. R1. Z-20. F200.

This bit is all he needs to worry about I take care of everything else. It’s like an all inclusive holiday. All you needs to do is eat sleep and constantly get pissed on cheap booze.

I hope you have enjoyed reading this article.

Thanks for watching and reading

If you have been affected by any of the issues in this post or need CNC Counselling then contact me.

Siemens 828 840 Sinumerik Training

Or call us 

If you want to learn to programme CNC Milling Machines

Look no further Contact CNC Training Centre

 


G Code Alias M Code Alias (How to use them)

Category : Macro

G Code Alias. What is an alias Wikipedia?

Alias, it’s not just about James Bond

Alias, in the case of CNC Programming means you are using a G code or an M code to call a program.

For example you could set up G181 to call program O9010

G181 would be an alias for program O9010

These are special 9000 series programs and you set them in your parameters.

M Code Alias Fanuc Parameter 6080

G Code Alias Fanuc Parameter 6050

If you have a Haas machine it’s parameter 81 to 90 for M code alias.

It’s parameter 91 to 100 for G code alias.

So if you look above at parameter 91.

Then enter 181.

When you write G181 in a program or in MDI.

The control would go into program O9010

Therefore you can use a G code to access O9010 through to O9019. You can’t use any G code it has to be one that is not used.

 

It’s important to check that these 9000 programs are not used by things such as probing cycles. So be sure to check before altering.

The same thing applies with M codes (Programs 9000 to 9009).

You may be asking why you would want to do this. Well it means that you can fully automate your Macro.

You first of all place your macro code in one of these program numbers then when you want to use it you just use the G or M code you allocated to the program.

G Code Alias, M Code Alias, It Gets Way Better

Imagine you set 100 in parameter 81, when you issue an M100 the control will jump into program O9000

G Code Alias

This is very simple but you can see how exciting it can get. I didn’t sleep for a week when I first discovered this. Just make up your own M code to do any old shit you want.

In your parameters you can alter a setting so that 9000 programs can’t be viewed or edited. So no one gets to tinker with your precious code. Below is Haas but you can do it on any control.

Welcome to the grown up world of macro because now you can make an M code that an operator can freely use but never access or alter. So to him it’s just a regular M code.

Oh don’t forget to tell him what it does otherwise he’ll never be arsed to use it.

You may well ask why can you do this with M codes and G codes. Well with M codes that’s really all you can do.

Let me explain….

With a G Code Alias………

You can add parameters. You know like when you use a G81 drilling cycle.

G81 calls a program that drills holes. You control the depth and feed etc with parameters.

Once you call a G81 it knows all about drilling holes. Like when it gets to the bottom it has to get the hell out of there.

G81 Z-20. R1. F100

  • G81 calls the cycle
  • Z-20. is the depth
  • R1. is the point to rapid to
  • F100. is the feedrate

The Z the R and the F are the parameters that pass into the program.

With an M Code Alias………

None of the above. It’s just an M code. Very useful I must say but you can’t pass parameters to it.

Toolchange (Fanuc Controls)

Ever worked on a machine where you have to write extra code to stop the spindle and take the tool up to zero before you can tool change?

Well that’s what M6 does, just tool change.

What most machines do is use an alias for M6.

So it’s not really M6?

Nope…..

M6 uses an alias. So in your parameters you make M6 access a 9000 program. That way you can put any old bollocks in the 9000 program.

When you subsequently use M6 it goes into this program which contains everything you could ever want for a tool-change.

  • Stop spindle
  • Turn off coolant
  • Return Z to zero
  • Feed the dog
  • Change the tool

And all with just an M6.

If you have one of these old machines you could make your own alias.

G Code Alias Passing Parameters?

This is where it gets clever and it gets complicated.

But……

You have me to hold your hand.

OK so you set G181 to access program O9010.

G181 A50. C20. Z-10.

This G181 would pass the values of A, C and Z through to program 9010

9010 would then use the values to do it’s business.

Mmmmm how does that work?

These guys below are know as the macro variable gnomes and each one has his own letter and his own macro variable.

G Code Alias

If you think I’m joking then go into your programming department and ask them. Say you want to learn about the macro variable gnomes.

It took me ages to do those stupid fuckin gnomes. Then I realized it wasn’t even funny but I couldn’t bear to get rid of them.

Below is a table that shows the corresponding variable for each letter. Forget the fuckin gnomes, it’s just a failed experiment. Let it go.

What this means is that if you put a value in A it will register in #1 and if you put a value in Z it will register in #26.

Then in your 9000 series programme it can use those values. It’s like a secret way to get information into your macro programme.

First of all put 181 in parameter 91.

G Code Alias

 

This means that G181 would call programme O9010.

Lets create a drilling programme the same s G81  we will call it G181.

It’s no different to G81 but it will demonstrate the use of Alias.

In other words it’s completely fuckin useless but at least I’ll get my point across. Oh yes, and stop picking fault with every bloody thing I do

G181 Z-20. R1. F200.

The G181 above will call O9010 and pass the values for Z, R and F into it.

#26 (Z)
#18 (R)
#9  (F)

Remember The List

G Code Alias

This is how O9010 Looks

O9010 (My Drilling Cycle)
G0 Z#18 
G1 Z#26 F#9
G0 Z#18
M99

Explanation

G181 Z-20. R1. F200.

O9010 (My Drilling Cycle Linked to G181)
G0 Z#18
#18 is the value passed from the letter R
R had a value of 1 so #18 is assigned the value 1
The machine will rapid to Z1.

G1 Z#26 F#9
#26 is the value passed from Z
Z had a value of -20. therefore #26 is assigned the value -20
Machine will feed to Z-20.
#9 is the value passed from the letter F
F had a value of 200 so #9 is assigned the value of 200
Machine will use a feed-rate of 200 mm per minute.

G0 Z#18 
#18 is the value passed from the letter R.
R had a value of 1 so #18 is assigned the value 1
Machine will rapid back to Z1.

M99

Don’t you just love all this shit?

This is Only the Tip of The Iceberg

See this post for grown up Macro programming

Thanks for watching and reading

If you have been affected by any of the issues in this post or need CNC Counselling then contact me.

Siemens 828 840 Sinumerik Training

Or call us 

If you want to learn to programme CNC Milling Machines

Look no further Contact CNC Training Centre


Careers in CNC

View all current vacancies in CNC

Click here

Call David: 07834 858 407