Need help with Mach3 if anyone can help

Hello everyone I am having a bit of a problem with work offsets with my Pro4896 and Mach3

Here are the specifics:

Machine: CNCRP PRO4896 Latest version (purchased about 2 months ago)
equipped with CNCRP Full Plug and Play Nema 34 Electronics Package (CRP800-00E-8)
equipped with Pepperl + Fuchs Proximity Sensor Kit (x and y axis only no limit switch on the z-axis)
equipped with bosch 1617 router (for now soon to change)

Control Software: Mach 3 (Latest version also purchased about 2 months ago)

Machine Computer: Windows XP Machine (old as dirty I imagine lol)

Okay So I am pretty new to cnc but am trying to learn

Here is my problem:

I turn on my machine
I hit the reference all home button (and home the machine x and y axis) (I dont have limit switch on my z-axis)
I then go to my offsets tab and Click G55 (the offset that I set up for this specific job I am working on)
I then click load Gcode (and load my gcode)
I then click go to zero (as a sanity check on my zero point)
I then get out my touch plate and place on the material
I then click auto zero tool button and zero the z-axis
I then remove the touch plate
I then click cycle start
and then the machine move in the x and y direction to were the code starts and then lowers the z just a little bit and starts cutting in the air???

The problem is that my machine is not using the z-zero that I specified when I auto zeroed the tool using the touch plate it is using the zero specified in the work offset

the problem is that I have to use 3 different tools on this job and so the z values are all different and further more being a bosch router when I insert the tool in the collet it is not always in the same spot I I have to reset my z height after each tool change

I dont understand why the auto zero tool function won’t override the work offset setting

is there any way to do this?

when I home the machine I am only homing the x and y axis so the machine doesn’t even know where the z-axis is at

how do I make this project work? all I want to do when I go into my G55 work offset and hit the go to zero button it just zero’s the x and y and lets me specify where the z zero is at

any help at all would be appreciated I am really struggling with this and need to get this job done


First of all,Telling your machine to goto the Z Zero position without homing the Z axis is a very scary thing to do. How would the machine have any idea where the Z axis is currenly located?

The auto zero routine should be setting the correct zero, but the code that sets the zero is user modifiable and it may not be doing what it should.

What code are you using to auto zero your Z axis? Can you post a copy?


you are correct I wish that the machine had a z-limit switch

but I really like you said just want to be able to set me z manually

Here is the code that I am using to auto zero the tool:

CurrentFeed = GetOemDRO(818) 'Get the current feedrate to return to later
CurrentAbsInc = GetOemLED(48) 'Get the current G90/G91 state
CurrentGmode = GetOemDRO(819) 'Get the current G0/G1 state

If GetOemLed (825)=0 Then 'Check to see if the probe is already grounded or faulty
DoOEMButton (1010) 'zero the Z axis so the probe move will start from here
Code “G4 P3” ’ this delay gives me time to get from computer to hold probe in place
Code “G90 G31Z-4. F4” 'probing move, can set the feed rate here as well as how far to move
While IsMoving() 'wait while it happens
ZProbePos = GetVar(2002) 'get the exact point the probe was hit
Code “G0 Z” &ZProbePos 'go back to that point, always a very small amount of overrun
While IsMoving ()
Call SetDro (2, .6225) ’ change .6225 to your plate thickness and then adjust for final accuracy
Sleep 200 'Pause for Dro to update.
Code “G1 Z1. F50” 'put the Z retract height you want here, must be greater than the touch plate thickness
While IsMoving ()
Code “(Z axis is now zeroed)” 'puts this message in the status bar
Code “F” &CurrentFeed 'Returns to prior feed rate
Code “(Z-Plate is grounded, check connection and try again)” 'this goes in the status bar if applicable
End If
If CurrentAbsInc = 0 Then 'if G91 was in effect before then return to it
Code “G91”
End If
If CurrentGMode = 0 Then 'if G0 was in effect before then return to it
Code “G0”
End If

Have you measured the exact thickness of your touch plate with a digital caliper?


Yes I have its set to .6225"?


I have been using the touch plate for quite awhile now and it has always worked great but the problem is that when I try using my new G55 work offset it won’t accept the auto tool zero position it tries to revert back to the work offset z value

mind you the z-value in the work offset that I specified was just a generic position as my machine does not even know where the z-axis is at because I don’t have a z-limit switch

The auto zero code you sent me looks correct, it should be setting your Z zero to whatever your probe is sitting on top of.

I have never tried using a work offset without having a home value for all three axis set. But I suspect that is causing the problem you are seeing.

Hmmm so do you have any thoughts on what I can do?

I mean even if I had a limit switch on my z-axis I could home the z-axis but when I set up my G55 work offset and zero the z-axis with the first tool in. It won’t make a difference because I have to change tools 2 times during the program and even the first tool will be in a different position because you just slip it into the collet and tighten it down

So it seems to me even if I have a limit switch on the z that would not make a difference

Would setting machine zero as well as work zero make the difference?


Hmm so what do you mean?

Where should I set machine (aka absolute zero) to?
right now I just have it turned off when homing the machine so it is in just some generic position

and really I can’t set the absolute z zero position to the zero of my work offset because usually a absolute zero is set off your home switches and you can’t move that

I am doing a little research on this…I’ll be back :slight_smile:

@AllenMassey - It is probably the lack of homing switches as you say, there has to be a way around this.

1 Like

If anyone can figure this out it will be Erik :slight_smile:

1 Like

If you zero your machine…X and Y with switches then go to the MDI screen and hit the Ref All Axis button, does that do what you want?

Then zero your Z with the plate.

I am not at my machine to test, so please be careful :slight_smile:


Hey erik I have not tried that ref all axis under the mdi tab I can try it really quick though

But so basically I just got off the phone with my machines manufacture and they where telling me to instead of using the different work offset (g54 g55 g56 etc) to just always work in g54 since I don’t have a limit switch on the z-axis

I can install a limit switch on the z-axis in the future if I want to the electronics are already capable

So here is 1 way that he told me to do it

Turn on machine
Home the machine (x and y axis disable the z-axis)
load gcode for project
then under the mdi tab manually enter x and y offset values from home position (ex. g0x8y5)
then once the machine is there zero the x and y axis under the mdi screen in the far right box
then also zero z right where it is at
then get out touch probe and install on the material
hit auto zero tool button
zero the tool
then hit cycle start and run the program

Doing it this way I just have to figure out the x and y offset values from home position 1 time and write them down and enter them when I initially start the job after the machine is first fired up and then I can just keep re-zeroing my z as I need to with tool changes and such

Alternatively I can
Open fusion 360
design my part
then when I am setting up my stock offset my model in the x and y the exact amount as to where my material is on my table from home position
then post process and take to machine
turn on my machine
home the machine
load gcode
then move machine to my stock manually
place touch plate on my stock
auto zero the tool on my touch plate
remove touch plate
and then hit cycle start and run the program

Does this make sense? I like the idea of the first option but I really thought this is what work offsets are for but maybe I can’t do that since I don’t have a auto tool changer and a z-axis limit switch

what you guys think?

I would install the Z-Axis limit switch and be done with it :slight_smile:

1 Like


So if I install a z-axis limit switch how does that magically fix the issue?

I mean if I home the machine to x, y, and z absolute zero

then set up my work offset G55 from that point

I still have to tell the G55 work offset a value for the z-axis

but my z-axis will be changing all of the time due to all sorts of things

So I still have to use my touch plate when starting the program and when changing tools during the program


Yes, you will still have to rezero the z-axis at the start and at each tool change…but you won’t have to type in the offset before each project based on a fixture/tool offset.


yeah but the problem is when I try to auto zero the tool now using the g55 work offset with the touch plate it doesn’t record that value when you run the program

how is a z-limit switch going to change that problem?

g55 is based on machine zero. try ref all button