Steve Stallings wrote:
> One of the many problems with Jog under Pause is
> that a pause can interrupt a partial move.
>    
Neglecting specially-shaped cutters (keyway, T-slot), and also 
neglecting niceties like tangent arc entries to arc moves (probably 
impossible since EMC doesn't know what the part is), this isn't a huge 
issue.  Linear moves are trivial to continue from where they were left 
off, and arc moves aren't terribly hard ("simply" save the center point 
and radius, and you can figure out where in the arc the program was 
stopped.  It's not necessary to go to exactly that spot, and in fact it 
would be nice to have an option of backtracking along the move a little 
anyway)
> Run From Here can get you back to the beginning
> of the interrupted move.
>    
This is probably the best thing to do in most cases anyway, the notable 
exceptions being loooooong moves (boring!) or canned cycles.
> How hard would it be to have EMC figure out how
> to break the interrupted move into two pieces so
> that it could bring you back to the splice point?
>    
Or close to the splice point - easy.  In fact, I think there's a 
variable in the motion controller that goes from 0 to 1 as a move is 
executed - it lets the motion controller know how far it has to go in 
this move.  (I don't know the specifics, I just recall that there's a 
variable for that)
> Could this be successfully managed even if the
> interrupted move was in a subroutine?
>    
Depends on where you do the interrupting.  The motion controller sees a 
bunch of motions in the queue, not a loop or subroutine.  It does arcs 
and lines, and manages blending between them (as well as accel/vel 
constraints and such).  A subroutine or loop just results in more than 
one motion being put in the queue.  Note that variable values, loop 
conditions, etc. are all irrelevant at the motion controller level - all 
the motion parameters are just numbers at this level.
> If it could be done, it should be a way to allow
> tool offsets to be altered during the pause.
>    
It seems a lot of people either didn't fully read John's email, or 
didn't fully understand the implications of it.  (I'm just responding to 
Steve because this happens to be the last email I read - nothing 
personal :) )

Offsets are applied in the interpreter, and the already-offset motions 
are queued for the motion controller to execute.  If you change the tool 
offset, the queue has to be discarded and re-filled with a new set of 
offset motions.  Executing G-code can change the interpreter state, e.g. 
by changing variable values (or coordinate offsets, G90/91 motion modes 
...).  This increases the complexity of re-running code quite a lot, 
since we would need a way of returning the interpreter to the state it 
was in when the executing motion was queued.  That's not an easy problem.

- Steve




------------------------------------------------------------------------------

_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to