Resetting after a power outage

I was working a project but didn’t want to run the laser overnight so I shut everything down except the Buildbotics controller. I left the laser at x,y zero but I also wrote down the absolute coordinates. Overnight we had a power outage so everything shut down. When I re-started, of course I had to rehome it. I figured out how to input the old absolute coordinates of my project’s zero (with the wheel icon for each access) and “set it” but I couldn’t figure out how to make the laser head actually go to those exact coordinates so I could re-home it and the correct spot and keep going. Is there a way do to that? If not, there really should be. This would save so much trouble if people want to take breaks during exceptionally long carves or if they have a power outage. It would ensure they can re-home at the exact correct spot and keep going. As it was, I could only get it to within .006 of the original spot. I am re-running it now and it may not make a huge difference on a laser project but I suspect it would make a huge difference on a carving.

In your case because you were set at 0,0 I believe you would have been fine not homing and just zeroing where it was. Homing gives the machine its knowledge of where things are in the world so it doesn’t run into itself. It is a nice to have. However… If a surge cause things to move a bit you would be off too…

As for being off after homing that is not surprising as it is slightly variable due to stall homing vs using higher end sensors. Limit switches also are prone to being slightly dynamic.

Sad that you had all the plans in place and the power outage bit you…

Hey Dave,

you can enter G-code commands into the command entry field of the MDI Tab (in the Tabbed Section). The machine will do what you want, commands one by one.

By the way, an excellent way to familiarize with the g-code commands by trying out what they do… :slight_smile:

I agree with BJ that in cases of power outage you should avoid to move the axes or to home the machine.

To resume at a point in a program is something the Onefinity Controller does not offer (more professional CNC Controllers do), but you can achieve this manually. You got to prepare a program that only has the “rest” of the program (know at which line in the program the machine was), but you must keep the modal settings at the beginning of your program or code block.

If I understand you right, you wrote down the positions. Did you write down the positions, absolute positions, and offsets for all axes?

What do you mean with “I left the laser at x,y zero but I also wrote down the absolute coordinates”, do you mean, the laser was at “workpiece origin”? And you know where this was because you have written down this position in machine coordinates? If so, it is easy to restore the situation.

Yes, after homing you first move the laser to the coordinates you want by entering the appropriate G-code ‘move’ command into the command entry field of the MDI Tab. E.g. if your position of the laser was a X at 150 mm and Y at 100 mm, and you are at home position, you enter ‘G0 X150 Y100’. G0 is “rapid move”, a laser will not fire during such a move. The Laser will then move to this position.

Then to set the workpiece coordinate system to be centered at this position you use the ‘G92 axes’ command. It sets the current position as the new workpiece zero. G92 is the command that is usually used after probing. For example if you probe Z with the touch probe, a ‘G92 Z15.4’ command is used because 15.4 mm is the thickness of the touch probe which is substracted this way. ‘G92 X0 Y0’ now will set the current position as the new workpiece zero (workpiece origin) for X and Y.

You could also leave the laser at machine origin (“homed”) and instead enter ‘G92 X-150 Y-100’, and then move to that workpiece origin by entering ‘G0 X0 Y0’.


best thing I can think of is to always set your zero with a pin gauge instead of a bit. You can also cut a slot in your spoil board as a permanent spot for your probe and always position your pieces relative to that.

example: mortise the probe block into your spoil board so that the corner is at absolute 1,1. then make your workpiece size a little larger to accommodate for that. If the probe block is in the exact same position and you zero with a pin gauge, theoretically you will get the exact same zero point and be able to repeat your toolpath, or pick up where it stopped (if you know how,. I do not)

1 Like

The laser head was at 0,0 (home) but on the screen the absolute positions were of course different because the project home is not the same as the machine home.
I am not very familiar with GCode instructions and there really isn’t anywhere to learn that, that I am aware of. I will try your suggestion next time if/when it happens again.

This was a laser operation, not carving, so not bit was used.

Thanks for that advice. I thought it always had to be homed in order for the program to run. It didn’t even occur to me to just try running the program without homing the machine. Learning every day!

the laser attaches to the same rig, so you can use a pin to set zero as long as the laser stays inside your work area, then offset your work piece accordingly.

establish a location that is always zero with the probe. it doesn’t matter whether you’re doing a carve or a laser project, you only use the pin to set zero. I don’t know about you, but I leave my router in when I do a laser job, just snap the laser in to the quick adapter.

1 Like

Hey Dave,

the terms used in CNC literature is machine origin (=machine home) / machine coordinates, and workpiece origin (=workpieze zero) / workpiece coordinates. Note that machine home is not always at the left front bottom. Many industrial machines have home at right rear top because there’s the tool magazine, in this case they use negative machine coordinates. Like the Onefinity with Z. Z home is not at bottom but at the topmost position wich is ‘0’ in machine coordinates , and the lowest Z position is -133 mm.

When you enter a linear move command (e.g. ‘G0 X100 Y150’), this is always related to the coordinate system that is currently in effect, which usually means the workpiece coordinate system that came with your g-code program. But you can also move in machine coordinates, in this case you prepend the move command with ‘G53’ (move in machine coordinates).

Buy a CNC and not learning g-code, eh? :wink: That is like buying a pizza stone oven and eat only frozen ready-baked pizza :slight_smile:

Just in case, you can

  • learn G-code with this book: Smid, Peter: CNC Programming Handbook, Industrial Press, South Norwalk, CT, USA, Third Edition 2008, ISBN 9780831133474.

  • find the entire G-code command reference here.


At the start i tried to avoid GCode but found that it isnt too tricky to understand. once i got over seeing the pages and pages of text you realise much of it is similar and that the start and some key change events are what usually matter. any old text editor will let you search for culprits in output that are usually generated, in my case, by poor setup in the CAM program. Enjoy.