Time to revisit coolant mapping of M-codes in Linuxcnc
- smc.collins
- Offline
- Platinum Member
Less
More
- Posts: 681
- Thank you received: 118
18 Oct 2024 18:56 #312540
by smc.collins
Replied by smc.collins on topic Time to revisit coolant mapping of M-codes in Linuxcnc
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
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 or Create an account to join the conversation.
18 Oct 2024 19:48 #312546
by Aciera
Replied by Aciera on topic Time to revisit coolant mapping of M-codes in Linuxcnc
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) :
Attachments:
Please Log in or Create an account to join the conversation.
18 Oct 2024 19:50 #312547
by Aciera
Replied by Aciera on topic Time to revisit coolant mapping of M-codes in Linuxcnc
Nor should M61 .. M68 be remap-able
linuxcnc.org/docs/devel/html/remap/remap...ng_codes_s_m0_m1_m60
linuxcnc.org/docs/devel/html/remap/remap...ng_codes_s_m0_m1_m60
Please Log in or Create an account to join the conversation.
18 Oct 2024 20:08 - 19 Oct 2024 07:45 #312549
by Aciera
Replied by Aciera on topic Time to revisit coolant mapping of M-codes in Linuxcnc
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.
'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.
Last edit: 19 Oct 2024 07:45 by Aciera.
Please Log in or Create an account to join the conversation.
19 Oct 2024 10:29 - 19 Oct 2024 10:32 #312588
by Aciera
Replied by Aciera on topic Time to revisit coolant mapping of M-codes in Linuxcnc
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.
The patch looks like this:
This has been lightly tested. Maybe somebody finds this useful.
The patch looks like this:
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.
Last edit: 19 Oct 2024 10:32 by Aciera.
The following user(s) said Thank You: smc.collins
Please Log in or Create an account to join the conversation.
- smc.collins
- Offline
- Platinum Member
Less
More
- Posts: 681
- Thank you received: 118
21 Oct 2024 11:54 #312734
by smc.collins
Replied by smc.collins on topic Time to revisit coolant mapping of M-codes in Linuxcnc
remapping is certainly a valid option for sure.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) :
Please Log in or Create an account to join the conversation.
21 Oct 2024 12:35 #312739
by Aciera
Replied by Aciera on topic Time to revisit coolant mapping of M-codes in Linuxcnc
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.remapping is certainly a valid option for sure.
Please Log in or Create an account to join the conversation.
- smc.collins
- Offline
- Platinum Member
Less
More
- Posts: 681
- Thank you received: 118
24 Oct 2024 01:44 #313020
by smc.collins
Replied by smc.collins on topic Time to revisit coolant mapping of M-codes in Linuxcnc
Badass man, submit a pull request
Please Log in or Create an account to join the conversation.
- smc.collins
- Offline
- Platinum Member
Less
More
- Posts: 681
- Thank you received: 118
30 Oct 2024 14:22 #313487
by smc.collins
Replied by smc.collins on topic Time to revisit coolant mapping of M-codes in Linuxcnc
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
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 or Create an account to join the conversation.
Time to create page: 0.111 seconds