G0 G54 X0 Y0 (Rapid to X0 Y0 using G54) X50. Y50. (Still rapid still G54) Z10. (Don’t panic I know you still want rapid and G54)
Zero Return
When you first turn on your CNC Machine you would normally reference or Zero Return all the axis. The machine then knows where it is.
All machines will have a position display. This position display will have one set of figures normally called “MACHINE“. This is the machines position from zero return. So when the machine is at zero return this will read.
X 0.000 Y 0.000 Z 0.000
The “MACHINE” position tells us how far we are from the machine zero. We don’t use this once we have set our datums.
This is the position we need to write into the work offset page to tell the control where each datum is (G54 to G59)
What we do when we are setting (G54 to G59) is enter this position in the work offset page.
When we subsequently call this G code the machine will use this position as it’s datum.
On the screen above if you programmed G0 G54 X0 Y0 the machine would move -75. in X and –145.5 in Y. This is it’s new zero position. Every subsequent command will work from this datum.
Now Let’s Set The Work Offsets
What we do when we are setting the machines datums or Work Offsets is we tell the machine where our datum is from Zero Return.
In the above case the datum is 806.25 away from X Zero Return and 147.1 away from Y Zero Return. These will both be minus figures.
What about Z you say?
Well yes we need to do that also. The Z will be the distance from Zero return to the top of the work-piece.
So in the above case the distance from the spindle nose to the top of the work-piece is 530.570. Again this will be a minus figure.
So there you have it your work offset in X Y and Z.
This is how it looks in the offset file on a Haas machine.
This is an imperial (inch) machine so this datum is 12.568 inches away from the X zero and 8.489 from the Y zero.
On the Fanuc control below it has values set in G54 G55 and G56. you could use any of these offsets.
Not all machines will have minus figures in these offsets as the zero return can be in a different place.
Mazak Work Offsets
Now if this were on a Mazak control it would be exactly the same if you were using the machine in ISO G Code type programming.
If you were using Mazatrol and not ISO this would be recorded in a WPC. No that’s not a Woman Police Constable.
Anyway it looks the same it’s just that they call them WPC 1 and WPC 2 etc.
WPS’s are set in the program as you go along. It’s the sort of “pay as you go” datum system.
Toshiba BMC 800 Work Offsets
On the Toshiba BMC 800 machine which uses the Tosnuc Control, H numbers are used for Work Offsets H901 to H999. Even the greediest programmer won’t run out of work offsets on this machine.
Is Six Enough?
Unfortunately on most Fanuc Controls you only get six offsets G54 to G59 this should be enough really. Anyway you can get what is called “Extended Offsets” as an option this gives you another 99.
These are called G54.1 P1, G54.1 P2, G54 P3 etc etc. You get the idea?
They work in exactly the same way as G54 to G59 you just stick in a P number.
G0 G54 X0 Y0 (Work offset G54)
G0 G54.1 P1 X0 Y0 (Work offset G54.1 P1)
Right Let’s Wrap This Up
So what we did is told the machine where G54 was in it’s own master “Machine Coordinate System”.
So now if we program
G0 G54 X0 Y0 the machine will rapid to the position that we set as the datum. All subsequent moves will be around this G54 Datum.
Imagine how difficult it would be if we had to keep adding all our figures onto the machine position. It’s just like when you have a manual machine with a Digital Readout (DRO).
You just clock up your datum position and Zero the display. Well that’s what this is doing on your CNC Machine.
The good news is you get to keep the position and there are six of them.
Toshiba BMC 800 Tosnuc 888 Control
Oh yea let’s come back to the Toshiba BMC 800 Tosnuc Control.
This is one of my favourite controls. Call me a geek but I get really excited about this kind of stuff. Below is the 888 control. (The 666 is a bit of a devil to program)
On this control you would just record the figures in H901. The program would read.
G57 H901 G0 X0 Y0
The G57 activates H numbered offsets and it needs to be on a separate line.
So Where’s This All Going?
Now then think about this.
Once this offset is in the machine it stays in no matter what. Like the curry you spilt down your white shirt when you were pissed on Saturday. “It’s going nowhere”.
So where do the other offsets come in.
Well. Imagine you set this job up and the boss came over and said “Jack, can you fit in an urgent job before you do that one”
(Please substitute your own name above)
Don’t panic no need to punch the boss or tell him to stick his job up his arse. No no it’s easy. You smile and say “No problem sir I’ll leave that job set up in G54 and I will use G55 for your new job”
Don’t Just Plonk It Anywhere
Something I forgot to tell you. Always set your parts up as near to one end of the table as you possibly can. Never in the middle of the table. That way you get to leave the part on the table and set up another job.
So you would just load up another vice or whatever and set the datum in G55.
Now when you program.
G0 G55 X0 Y0
The machine will use the new datum…. Easy what.
By The Way
Oh and obviously if you call out your old program, for that job the boss doesn’t want yet, it will use G54. Everything will work around the old datum.
There’s More
A tool change on a modern machine is amazingly fast like a fraction of a second.
But we don’t all have super fast tool changers and I have worked on big machines where a tool change can be two minutes!!
Well let’s compromise. Your machine is a bit of n old banger.
Actually these old Matsuura Machines with Yasnac Controls are awesome if you can get hold of one.
The tool change chip to chip is going to be about 17 seconds. Machines like the new Matsuura MX 520 tool change in just over a second. In my world that’s shit off a fuckin stick.
Lets Save Some Time
Imagine if we could get 17 parts on the machine table and set 17 datums. We pick up a spot drill. The tool change time is 17 seconds.
Ah but sunshine it’s gonna spot drill 17 parts so the tool change time really is only one second.
That’s 17 seconds divided by 17 parts. One second per part. It really is that simple.
It’s A Myth Size Really Does Matter
I had you fooled there just when you thought I was talking about Pizzas. I was talking about machines.
Look at the size of this Mazak Machining Centre it has the new Mazak Smooth Technology control.
Imagine you have an old machine but it has a huge table. Well if you fill the table with parts suddenly your slow tool changer does not matter.
Oh and about the slow rapid moves.
Doesn’t matter either.
The longest rapid moves are the ones to and from tool change. But we took care of them because one tool change does 17 parts.
From part to part there are only small rapid moves so we gain there too.
So our big old Tortoise can beat the Young Fast Hare.
Now The Bit You All Waited For
Work Offset G54 G55 G56
So these figures above would be entered into your work Offsets.
This is how it looks when it machines all three parts. No wasted moves and your making maximum use of each tool.
Another thing, notice how the drill starts at one end and instead of going all the way back. The next tool starts where the last one finished.
This won’t be possible on some machines but on most you can tool change wherever you want.
Lets Take A Look Under The Bonnet
The program looks something like this.
Just by putting the new work offset in front of the X and Y figures will make the coordinate system swap to the new work offset.
And…
Because the G code is modal it stays active until you call a different work offset.
Heidenhain
Found on a lot of Bridgeport Machines like the Interact 412, the Heidenhain Control can use the same method as above. You would have an offset table the same where all your offsets are stored.
Bridgeport Interact 412
Great little machines Bridgeport Interact 412 still loads of these in service.
These are then called out by numbers.
This would call out offset 1.
Heidenhain There’s Always a Simple Way
Just zero the display.
How easy is that?
Mmm don’t be confused. That really is all you do and your datum is set.
When you want a different datum you just use a datum shift command.
This would shift the datum by the above amount from your zero. And to change it back.
These can be put in Label commands so that they can be retrieved and used again.
Oh and you can have as many of these as you like.
So there you go from Heidenhain on a Bridgeport Machine to Matsuura MX520 with a Matsuura G-Tech 31i control. There are loads of different machines but the principle is always the same.
Understand one and you’ll easily understand them all.
M99 Plus Block Skip, M99 on a Fanuc, Haas or Mazatrol ISO control can be used to jump sections of code.
Learn to use this in conjunction with the block skip command to switch it off and on.
Now I know you are all thinking “Dave you’re wrong it’s the end of a sub-program”. (Please in the name of holy shit do not call me Dave.)
Well you are right and you are wrong.
Yes it means continue and is used at the end of a sub program.
But it also has another nifty use.
Imagine you want to skip a complete section of program in the case below it’s the Spot Drill.
Let’s See Some Crap Ways Of Doing This
(If you want to do this on a Toshiba Tosnuc 888 or similar control go to the end of the article)
In this example it’s a spot drill we want to miss out.
Standard Code
You could delete it and make two programmes (sounds like hard work and loads of errors). Not to metion wear on your finger tips. Truth is it’s just a shit way to do it.
Block Skip
The programme above contains BLOCK SKIPS sometimes called BLOCK DELETES.
When you switch on your BLOCK DELETE/BLOCK SKIP switch, each time a forward slash (/) is seen that block will not be processed and the control will move on to the next block.
On most Fanuc controls it’s B.D.T not to be confused with CBT (Cock and balls torture) please do not google this in company time.
It works ok but it is very time consuming. If you want to skip a big section of code you will have to write in loads of block skips.
Call me a lazy bastard but I definitely couldn’t be arsed with that.
Some controls even have two three and four block skips so you can switch on any combination of these switches, mmmm complicated. Good luck with that one.
Do You Have Adequate Life Insurance?
M99 CNC Code (Now let’s use it)
The next example is the easiest way.
You probably normally see an M99 at the end of a sub programme.
In the case below it tells the control to jump to N100 (M99 P100).
The P part is the N number you want to jump to.
M99 P600 (Jump to N600) M99 P6666 (Jumps to N6666)
M99
If you put the BLOCK SKIP/BLOCK DELETE on it will not jump the spot drill.
You would have a choice. If you temporarily want to skip a section of code.
Be careful what N Numbers you choose so as not to mix them up.
Maybe you broke all the taps and you don’t have anymore so you want to skip the tapping. In this case I’d just jump with M99 and then take it out before saving the program.
However, see the next Example.
For this last example you might have to think a bit. Call me finicky but I like the BLOCK SKIP/BLOCK DELETE as a default to be off.
Most machines now don’t have a mechanical switch for BLOCK DELETE/BLOCK SKIP so when you turn on the machine block skip will always be off.
That means the default would be to jump the code.
My way of looking at it, is that you would want the default to be running the whole program as normal.
So We Are Agreed
The default should really be the way the programme was originally done.
In the example below if the block skip is off, which it will be when you start up your machine.
The first thing it will do is jump over the bit that tells it to jump the code.
Meaning it runs as normal not jumping any tools.
The Clever Shit (M99 Plus Block Skip)
What’s This?
Now I know this is a bit confusing and maybe I didn’t explain it too well. Trust me it works.
What’s the matter with you lot just take some time to fuckin read it.
Sorry I’m losing my temper a bit here, the dog’s just pissed on the TV remote again. Just read through it a few times and the penny will drop.
To do this you must have the Macro Option if you don’t then this is where M99 comes in handy.
Best way to see if you have macro is to try using it in MDI.
In MDI Type in #1=6 if you have macro it will work if you don’t you’ll get an alarm and your machine will self destruct in 15 minutes.
Jumping Sections of Code on a Toshiba Tosnuc 888 or Similar
This is how you do it on a Toshiba (the blue bit).
Don’t forget it’s GO (that’s G and letter O) not G0 which is G and number zero (Rapid Command).
Don’t get your letter O’s and your number zeros mixed up.
/M99 P50/[GO,50] (JUMP TO N50) M99 P100 [GO,100] (JUMP TO N100) N50 N50 (ARRIVE HERE THE CODE THE CODE THE CODE ETC ETC ETC ETC N100 N100 (ARRIVE HERE)
Without Fancy Shit (Just jump some code)
M99 P100 [GO,100] (JUMP TO N100) THE CODE THE CODE THE CODE ETC ETC ETC ETC N100 N100 (ARRIVE HERE)
If you have macro you can do a similar thing on Mazak, Haas or Fanuc.
We all know that programming can be complicated. So let me explain to you how it all works. This article explains the real meaning of Modal and non modal G codes.
Modal means that once a command is issued it stays in the control.
How Can you Actually Use This?
If you issue a G0 or G00 command the machine is in rapid and you do not need to re-state it.
Rapid means all motors are flat out, like a teenager in a Ferrari.
Every move from then on will be a rapid move unless you tell it otherwise. The G code that changes it must be in the same group. For example G0 G1 G2 and G3 are all in the same group a bit like The Beatles used to be.
The other day I was talking to a “young person” who hadn’t even heard of the Beatles. I mean fuckin hell, am I really really old or are they doomed to be forgotten?
I noticed a common search in google is G80 G-code Fanuc.
CNC Machines use what we call canned cycles in a nutshell G80 cancels a canned cycle.
What is a canned Cycle?
To be honest I think it is a funny choice of words “Canned Cycle”.
My guess would be that all the information to drill a hole would be kept together in a “Tin Can” to use whenever you want.
I made this…….
First of all we program the cycle this is a G81:
G81 G98 Z-10. R1.5 F200. X55. Y55. F250.
The machine will move to the position X55. Y55. then it will rapid to 1.5mm above the part (this is the R1.5). It will then feed down to Z-10. at a feed-rate of 250 mm per minute F250.
Finally it will use rapid to come out of the hole.