Hello Chris,

You might investigate whether you can find a way to use motion's
adaptive-feed or feed-hold inputs to hold the material in place while
punching.  These work in real time.  If a motion is pending and you
deassert them, the machine will start to move at the next servo
cycle.

I wrote a small HAL component which has as inputs the current state of the "head-clear" pin and the "motion.in-position" pin from the motion controller and outputs to the feed-hold pin, in a way appropriate to the machine.

It seems to work right. I have only two issues with it:

1- It relies on the correct output of the motion.in-position pin (which I haven't checked yet on which thread it is updated) and therefore there must be a gcode command to stop blending between movements of the machine.

2- The waiting for a signal is "hidden" in the machine configuration, not on the GCode which potentially makes it harder to debug problems.

I'm sending the component, in case anyone is interested in checking it out (it's really simple, and I haven't finished documenting it).

Thanks.
--
Matheus Degiovani
Gigatron Software e Treinamentos Ltda.
(18) 3649-4045
MSN: math...@gigatron.com.br

--

Críticas ou Sugestões? Ligue para Ouvidoria Gigatron: (18) 3649-4048
component clearpunch "Enabling movement for punching presses";

description 
"""
Component for enabling machine movement only during 'head clear'
signals from a punching press.

""";

author "Matheus Degiovani";

license "GPL";

// Input Pins
pin in bit head_clear "Idicates when the head is at a safe position for 
movement";
pin in bit enable "When false, the stop-movement pin is set to false.";
pin in bit in_position "Whether the machine has reached the desired position 
for the next punch";


// Output Pins
pin out bit stop_movement "Whether to stop machine movement";


//variables
variable u32 latched_inpos;
variable u32 last_inpos;


//functions
function _ nofp; 

;;

#include "rtapi_math.h"


FUNCTION(_) {

    if (!enable) {
        stop_movement = false;
        return;
    }

    if (!head_clear) {
        stop_movement = true;
        latched_inpos = false;
        last_inpos = in_position;
        return;
    }

    if (!last_inpos && in_position) {
        latched_inpos = true;        
    }   

    if (latched_inpos) {
        stop_movement = true;
    } else {
        stop_movement = false;
    }

    last_inpos = in_position;
}
------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to