Power failure and resurrection on a CNC machine
-
@infiniteloop Erm, my file looks like this...
; RestoreSpindleSpeed.g ; Spindle speed saved from running "0:/gcodes/Calibration Toolpath.gcode" CNC file ; set up the global variable abort_process so we can abort further execution of resurrect.g: if {!exists(global.abort_process)}
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
I just noted a difference between your resurrect-prologue.g and the template I sent you - here's my version:
if {global.abort_process == true}
and here's your corresponding line:
if global.abort_process == true
You see the difference?
-
@infiniteloop I do, yes. I tried it at that, but changed it back to using the squiggly brackets, as it made no difference.
They're currently in place, as per your version.
; resurrect-prologue.g M98 P"RestoreSpindleSpeed.g" if {global.abort_process == true} abort ; abort terminates this and all other macros in the call chain, so 'rien ne va plus' ; Continuation has been approved, so here we go:" M98 P"homeall.g" ; homes all axes before restarting the job {1}
I don't know why there are two {1} showing at the end of the file, though. There's only 1 in the actual file!
Where is the global.abort_process declared, or is it a ssytem variable?
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
Erm, my file looks like this...
That's a radically abbreviated version…
Either, your SaveSpindleSpeed.g has been truncated so that it just generates 4 lines of output, or we see the result of too little power left after pulling the plug.
[Edit] First, please check your copy of SaveSpindleSpeed.g carefully against the posted version. If both are equal, call SaveSpindleSpeed.g from the console:
- throws it an error?
- looks the resulting RestoreSpindleSpeed.g like the one I posted above?
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
I don't know why there are two {1} showing at the end of the file
I'm not quite sure, either, but I think they indicate empty lines.
-
@infiniteloop said in Power failure and resurrection on a CNC machine:
but I think they indicate empty lines.
Maybe you're right about the powerloss, then, or (sorry for asking again) the global.abort_process variable hasn't been declared?
-
@nightowl999 I've added some hints to my post above. Please try them …
-
@infiniteloop It says
the file's not found, but it's deffo there in my \sys folder!Error: in file macro line 28 column 26: meta command: control character in string
OK, there was a " missing on the last line...
-
@infiniteloop Now the file looks like this:
; RestoreSpindleSpeed.g ; Spindle speed saved from running "null" CNC file ; set up the global variable abort_process so we can abort further execution of resurrect.g: if {!exists(global.abort_process)} global abort_process = true else set global.abort_process = true ; now comes the dialog: M291 S3 R"Resurrect:" P"Continue with <null>?" ; we will only arrive here if the dialog was closed with OK: set global.abort_process = false M3 S0 ;EOF
I'll have another go at the power fail test...
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
Now the file looks like this:
That's perfect. Before pulling the plug again, you should call resurrect-prologue.g from the console to see if you still get an error. Note, however, that your router might execute the homing moves if the construct works as expected.
-
Same problem. Only half a RestoreSpindleSpeed.g file...
-
OK, so I called resurret-prologue.g which gave a prompt to carry on. I clicked OK and the homing sequence completed.
Then i got these errors:
31/05/2022, 12:19:04 M292 Error: Bad command: {1} 31/05/2022, 12:19:04 m98 P"resurrect-prologue.g" Error: Bad command: {1}
EDIT: I've deleted the {1}
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
Same problem. Only half a RestoreSpindleSpeed.g file...
So we've localised this problem: rapid power loss …
In the meantime, please test with a RestoreSpindleSpeed.g which you generate from the command line
M98 P"SaveSpindleSpeed.g"
Proceed as suggested in my last post. Feel free to edit the S parameter of
M3
if want your spindle to turn -
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
Then i got these errors:
That are these empty line marks who seem to be generated when I put my stuff into the code (black) box.
Simply remove all occurrences of {1}… I just see: you did that already while I was writing -
@nightowl999 said in Power failure and resurrection on a CNC machine:
Shall I try the ultimate test?
Without enough power to safely complete macro execution at power off, what is the definition of "ultimate"?
-
@infiniteloop As everything is hunky dory, the "ultimate" test would be to see if everything does work. If not, a UPS might be in order
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
a UPS might be in order
Do you have a separated 5V rail (with its own PSU) just to power the Duet?
-
@infiniteloop Nope. It's just my 24V PSU
I wouldn't know how to do that, but it's only the Duet that's powered from the 24V, as the spindle has it's own power supply.
Still, the "ultimate" test failed at the same point, so I'm going to need to look at the 5V - or UPS - option!
But surely, if the power fails, it fails. What use is a 5V supply if it's on the same mains circuit?
-
@nightowl999 said in Power failure and resurrection on a CNC machine:
Nope. It's just my 24V PSU
If you put your UPS on that, the Duet won't notice the loss of mains power: Without a voltage drop, M911 won't be executed … until the UPS runs out of juice. But then, you face the same situation as now.