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