Hi,
using the <Stop> button is poor practice, Mach interprets that as an immediate stop and aborts all remaining moves
in the buffer. This often means loss of reference......you might in fact be pleased you can't <CycleStart> as the job would
resume but displaced from its correct start position wrecking your job!
The correct way to pause a job is <FeedHold>. Mach will execute the moves in the buffer and then stop. Note that Mach is
still engaged with the job, you cannot jog or MDI nor will any GUI movement occur, the motion planner is still commanded
by the Gcode file you are involved in, its just that the job is paused.....but still in control.
If however you <FeedHold> and then <Stop> the motion planner is released by the Gcode interpreter and the machine should
( and does on my machine) enter the 'idle' state and can thereafter be jogged, MDI'ed, or GUI moves be executed.
The fact that you can't do that means that the machine is hung up in some other state.....and that is a mystery.
May I suggest go to:
https://www.machsupport.com/forum/index.php?topic=40051.0Download (and maybe save) Mach4MachinesStates2.txt.
Now I suggest adding some code to the CycleStop() function that allows you to see what state Mach ends up in. It may not
solve the problem but may give you information about why its doing what its doing.
Open the screen editor and look at the events tab of the <Stop> button like the attached pic.
Note that when you hit the <Stop> button the function CycleStop() executes.
The function CycleStop() is defined in the screen load script. To display the screen load script look at the events tab
of the profile root like the pic attached. Veiw the screen load script by hitting the <...> button.
Scan down the screen load script until you find the CycleStop() function, on my installation about line 185.
---------------------------------------------------------------
-- Cycle Stop function.
---------------------------------------------------------------
function CycleStop()
mc.mcCntlCycleStop(inst);
mc.mcSpindleSetDirection(inst, 0);
local machineState=mc.mcCntlGetState(inst)
local machineStateName=mc.mcCntlGetStateName(inst,machineState)
wx.wxMessageBox(machineStateName)
mc.mcCntlSetLastError(inst, "Cycle Stopped");
end
Note that I have added a few lines of code that you wont find in your function:
local machineState=mc.mcCntlGetState(inst)
local machineStateName=mc.mcCntlGetStateName(inst,machineState)
wx.wxMessageBox(machineStateName)
I have added these lines simply as a diagnostic. Whenever you hit the <Stop> button hopefully the machine will stop and
a messagebox will appear showing Machs state, on my installation the state is 'idle' ie Mach is free to jog, MDI etc.
What does your installation do?
Craig