1) First off, I'm having some axis woes. I discovered that when ShopCAM installed and setup the machine initially, they never bothered to calibrate steps per pulse for each axis, so everything was being cut half an inch too big. Using a dial indicator, I used the Axis Calibration tool on the Mach3 Settings screen to set the X, Y, and Z axis dead on, with a repeatability of +/- .0005". When I run a program, which I did one with a 1/2" diameter bit and then a different program with a 1/4" diameter bit, the Y axis adds exactly 1/16" of an inch to the part, the X axis cuts perfect. That's axis problem number one.
Make sure you dont have any scaling on the axis that is giving you problems.
2) Axis problem number two is what I would call Z axis drifting. To cut my part I specify the exact Z thickness of the part, and add .050 for breakthru, which is overkill, but the part still ends up with an onion skin once I get about 18" along the X axis. See the attached picture of a pocket that was cut where the bit should have been at the same Z depth the entire time, but it drifted. The other picture is of various cuts that were all specified in the code to be the exact same depth, but notice the variance, the further ones even lifting completely above the spoiler board.
Check to make sure your "Spoiler Board" is sitting correctly on the bed and that it is running true with regards to your axis. You could do this several ways but the easies would be to start at one end and move the cutter down to just under half an inch and then move the axis up slowly and slip a 1/2" block under, when the block just slips under stop jogging up and confirm that the block is a nice sliding fit. Then jog to another area of the table without moving the Z and see if the block slips under with the same fit. Repeat this all over your table and see how good it is.
I am not experienced with routers but I think the standard thing to do is when you place the sacraficial plate (spoiler board) on the bed for the first time you cut the surface all over to true it up to the machines axis.
3) I've unchecked the boxes relating to overwriting my G54, but if I shut off the machine for the night, it will make the G54 X0Y0Z0 match where ever the machine was sitting when it was shut off. Right now I just bring it to X0Y0Z0 before shutting it down. Is there another way to save the position? Also related is machine coordinates. Does the table not have exact machine coordinates that are fixed, always the same? I ask for two reasons. One the machine coordinates change each time the machine is shut down. And two, the other day, between running two parts, the exact same part, the table suddenly came up with a new value for G28 and instead of moving up and preparing itself to run the program, it dropped down to well below the table's surface, fortunately off the X and Y axis, so it was spinning in the air, but without a quick E-stop right then, it would have moved into cutting the actual table.
Does your machine have homing switches? The answer to this question will determine how you will proceed with this.
Hood