Time to revisit coolant mapping of M-codes in Linuxcnc

More
2 years 1 week ago #312540 by smc.collins
At some point the problem is going to be so annoying someone's going to do it, mostly looks like a lot of boiler plate.

I'm thinking using the m7 Pxxxxx format makes the most sense. I'll look into all the options and see if i can resolve on of them

Please Log in to join the conversation.

More
2 years 1 week ago #312546 by Aciera
I cannot test this right now but looking at this makes me wonder if it could actually be this easy to add 'M7' and 'M8' to the list of remap-able Mcodes (considering that according to the documentation 'M9' should not be a remap-able Mcode somebody already seems to have done or at least tried to do something like this)  :

 

Attachment not found

Please Log in to join the conversation.

More
2 years 1 week ago #312547 by Aciera

Please Log in to join the conversation.

More
2 years 1 week ago #312549 by Aciera
Found the relevant commit, looks like the change would need to be done here (also)
'src/emc/rs274ngc/rs274ngc_interp.hh':

github.com/LinuxCNC/linuxcnc/commit/d731...f8b87d773bc7868288b2

I'll try tomorrow.

[edit]

- Seems this section of the code has been moved to the one in interp_remap.cc I posted above
- And yes this seems to work just fine, although it does not allow a call to the built in M code as for the other built in Mcode remaps.

Please Log in to join the conversation.

More
2 years 1 week ago #312588 by Aciera
After a bit more effort it seems to work now with recursive calls as well. I modified 'configs/sim/axis/remap/extend-builtins/extend-builtins.ini ' in current master as an example for remapping the built in 'M7', 'M8' and 'M9' to be callable with an optional P word and recursively calling the built in Mcodes.

 

Attachment not found



The patch looks like this:

Code:
diff --git a/configs/sim/axis/remap/extend-builtins/extend-builtins.ini b/configs/sim/axis/remap/extend-builtins/extend-builtins.ini index 9f6cee2749..09d3c67ce8 100644 --- a/configs/sim/axis/remap/extend-builtins/extend-builtins.ini +++ b/configs/sim/axis/remap/extend-builtins/extend-builtins.ini @@ -68,6 +68,9 @@ REMAP= M0 modalgroup=4 ngc=extend_m0  REMAP= M1 modalgroup=4 ngc=extend_m1  REMAP= M60 modalgroup=4 ngc=extend_m60   +REMAP = M7  modalgroup=8 argspec=p ngc=extend_m7 +REMAP = M8  modalgroup=8 argspec=p ngc=extend_m8 +REMAP = M9  modalgroup=8 argspec=p ngc=extend_m9  # this is important - read common_nc_subs/reset_state.ngc  ON_ABORT_COMMAND= O <reset_state> call   diff --git a/src/emc/rs274ngc/interp_convert.cc b/src/emc/rs274ngc/interp_convert.cc index 4864cc5407..fba0d66d6b 100644 --- a/src/emc/rs274ngc/interp_convert.cc +++ b/src/emc/rs274ngc/interp_convert.cc @@ -4068,7 +4068,9 @@ int Interp::convert_m(block_pointer block,       //!< pointer to a block of RS27        CHP(restore_settings(&_setup, _setup.call_level));    }   -  if (is_user_defined_m_code(block, settings, 8) && ONCE_M(8)) { +  if (is_user_defined_m_code(block, settings, 8) && +      STEP_REMAPPED_IN_BLOCK(block, STEP_M_8) && +      ONCE_M(8))  {       return convert_remapped_code(block, settings, STEP_M_8, 'm',                     block->m_modes[8]);    } else if ((block->m_modes[8] == 7) && ONCE_M(8)){ diff --git a/src/emc/rs274ngc/interp_remap.cc b/src/emc/rs274ngc/interp_remap.cc index 947fac5cfc..3e4069e0e8 100644 --- a/src/emc/rs274ngc/interp_remap.cc +++ b/src/emc/rs274ngc/interp_remap.cc @@ -42,6 +42,8 @@ bool Interp::is_m_code_remappable(int m_code)              m_code == 0 ||              m_code == 1 ||              m_code == 6 || +            m_code == 7 || +            m_code == 8 ||              m_code == 9 ||              m_code == 60 ||              m_code == 61 || diff --git a/src/emc/rs274ngc/rs274ngc_pre.cc b/src/emc/rs274ngc/rs274ngc_pre.cc index 492a72876b..87efe1f718 100644 --- a/src/emc/rs274ngc/rs274ngc_pre.cc +++ b/src/emc/rs274ngc/rs274ngc_pre.cc @@ -693,9 +693,18 @@ int Interp::find_remappings(block_pointer block, setup_pointer settings)      block->remappings.insert(STEP_M_7);        // User defined M-Codes in group 8 -    if (is_user_defined_m_code(block, settings, 8)) -    block->remappings.insert(STEP_M_8); - +    if (is_user_defined_m_code(block, settings, 8)) { +        if (((block->m_modes[8] == 7) && remap_in_progress("M7")) || +        ((block->m_modes[8] == 8) && remap_in_progress("M8")) || +        ((block->m_modes[8] == 9) && remap_in_progress("M9"))){ +        // recursive behavior +        CONTROLLING_BLOCK(*settings).builtin_used = true; +        } else { +        // non-recursive (ie the built in) behavior +        block->remappings.insert(STEP_M_8); +        } +    } +          // User defined M-Codes in group 9      if (is_user_defined_m_code(block, settings, 9))      block->remappings.insert(STEP_M_9);

This has been lightly tested. Maybe somebody finds this useful.

Please Log in to join the conversation.

More
2 years 1 week ago #312734 by smc.collins

I cannot test this right now but looking at this makes me wonder if it could actually be this easy to add 'M7' and 'M8' to the list of remap-able Mcodes (considering that according to the documentation 'M9' should not be a remap-able Mcode somebody already seems to have done or at least tried to do something like this)  :

 

Attachment not found

remapping is certainly a valid option for sure. 

Please Log in to join the conversation.

More
2 years 1 week ago #312739 by Aciera

remapping is certainly a valid option for sure.

Then you may want to try the patch I posted above. If you want dedicated halpins, rather than use motion.digital-out-xx pins, you could create a python hal component that creates the pins as you want them and then use a python remap that writes directly to the python comp instead of the ngc remap setting the motion.digital-out-xx pins.

Please Log in to join the conversation.

More
2 years 1 week ago #313020 by smc.collins
Badass man, submit a pull request

Please Log in to join the conversation.

More
2 years 1 day ago #313487 by smc.collins
I'll have to dig into Python, I've never worked with it directly. 


Yes, my goal would be mappable io pins via mx px gcode convention.


I already wrote a coolant control hal component, might be time to start adding to it

Please Log in to join the conversation.

Time to create page: 0.112 seconds
Powered by Kunena Forum