- Posts: 245
- Thank you received: 0
Manual tool change + tool lengh touch off
10 years 2 months ago #79003
by clunc
Replied by clunc on topic Manual tool change + tool lengh touch off
@OrangeCat
I remember now that I was concerned that the spindle of the new machine has no vertical "stop" for cutters, unlike the router on the old machine, and wondered if that fact was a problem for your code.
I looked at (m6_)tool-change.ngc and believe that it is NOT memorizing Tool-length offsets for individual tools and recalling them later.
But I want to state my understanding:
If (m600_)tool-change-begin.ngc is called, the tool loaded with the very next M6 Tn command will be measured for reference, and successive tools--including the ORIGINAL tool from which the reference was calculated--will have offsets calculated for them, so that their tooltips will match precisely with that of reference.
And again:
If the tool used for reference is again called for and loaded by an M6 Tn, it need not be (re-)loaded at the perfect, reference position because an offset will be calculated to assure that its tip aligns with the reference position.
And finally:
That is to say, the tool used for reference will be treated like any other after its first-use.
Thank you.
I remember now that I was concerned that the spindle of the new machine has no vertical "stop" for cutters, unlike the router on the old machine, and wondered if that fact was a problem for your code.
I looked at (m6_)tool-change.ngc and believe that it is NOT memorizing Tool-length offsets for individual tools and recalling them later.
But I want to state my understanding:
If (m600_)tool-change-begin.ngc is called, the tool loaded with the very next M6 Tn command will be measured for reference, and successive tools--including the ORIGINAL tool from which the reference was calculated--will have offsets calculated for them, so that their tooltips will match precisely with that of reference.
And again:
If the tool used for reference is again called for and loaded by an M6 Tn, it need not be (re-)loaded at the perfect, reference position because an offset will be calculated to assure that its tip aligns with the reference position.
And finally:
That is to say, the tool used for reference will be treated like any other after its first-use.
Thank you.
Please Log in to join the conversation.
10 years 2 months ago #79009
by orangecat
Yes, that is correct. My machine also doesn't allow the tools to be re-inserted at the same vertical position.
Replied by orangecat on topic Manual tool change + tool lengh touch off
If the tool used for reference is again called for and loaded by an M6 Tn, it need not be (re-)loaded at the perfect, reference position because an offset will be calculated to assure that its tip aligns with the reference position.
Yes, that is correct. My machine also doesn't allow the tools to be re-inserted at the same vertical position.
Please Log in to join the conversation.
10 years 2 months ago #79020
by clunc
Replied by clunc on topic Manual tool change + tool lengh touch off
Possibly the only thing I have in common with you, and your skills.
Still. It's a start...
I'm going to try to insert a (MSG,) before the tool change reminding of the M6/M600 remaps.
Thank you for the re-ply. And for the scripts smarter than me.
Still. It's a start...
I'm going to try to insert a (MSG,) before the tool change reminding of the M6/M600 remaps.
Thank you for the re-ply. And for the scripts smarter than me.
Please Log in to join the conversation.
10 years 1 week ago #81856
by pommen
Replied by pommen on topic Manual tool change + tool lengh touch off
I'm loving the tool measurements from Orange Cat. I have been using it since this spring and have not run into any trouble that I didn't cause myself.
Has anyone been able to combine this routine together with the tool change dialog of Gmoccapy? I'm thinking it could be changed to fit, but I haven't had any luck with it so far.
/Peter
Has anyone been able to combine this routine together with the tool change dialog of Gmoccapy? I'm thinking it could be changed to fit, but I haven't had any luck with it so far.
/Peter
Please Log in to join the conversation.
- auto-mation-assist
- Offline
- Platinum Member
-
Less
More
- Posts: 425
- Thank you received: 0
10 years 1 week ago #81939
by auto-mation-assist
Replied by auto-mation-assist on topic Manual tool change + tool lengh touch off
I have been playing with this in gmoccapy and it seems to work in simulation as far as preview movement is concerned. One problem I'm having issues with to do further testing is that when the present mounted cutting tool tool has to be removed to manually exchange it with the new desired tool the "resume" dialog never pops up on the screen. There is no problem when there is no tool already mounted . In that case the code movement completes to the end.
So, after this pop up message: "Please remove the mounted tool and press OK when done". It never shows the resume popup dialog and the code appears to stay in pause mode.
I'm thinking that there may be a potential linking issue with the line I copied from the code if this is what should pop up the resume dialog:
(DEBUG, Change to tool #<_current_tool> with diameter #<ToolDiamMM>mm, #<ToolDiamIn>in then click Resume )
So, after this pop up message: "Please remove the mounted tool and press OK when done". It never shows the resume popup dialog and the code appears to stay in pause mode.
I'm thinking that there may be a potential linking issue with the line I copied from the code if this is what should pop up the resume dialog:
(DEBUG, Change to tool #<_current_tool> with diameter #<ToolDiamMM>mm, #<ToolDiamIn>in then click Resume )
Please Log in to join the conversation.
- auto-mation-assist
- Offline
- Platinum Member
-
Less
More
- Posts: 425
- Thank you received: 0
10 years 1 week ago #81940
by auto-mation-assist
Replied by auto-mation-assist on topic Manual tool change + tool lengh touch off
In my sim configuration I have:
RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
PARAMETER_FILE = sim.var
FEATURES=30
SUBROUTINE_PATH = /home/john/linuxcnc-dev/configs/sim/gmoccapy/macros:
REMAP=M6 modalgroup=6 ngc=tool-change
REMAP=M600 modalgroup=6 ngc=tool-job-begin
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000
TOOL_CHANGE_AT_G30 = 0
In hal
net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
---
Do I have to use prolog= epilog= ??
RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
PARAMETER_FILE = sim.var
FEATURES=30
SUBROUTINE_PATH = /home/john/linuxcnc-dev/configs/sim/gmoccapy/macros:
REMAP=M6 modalgroup=6 ngc=tool-change
REMAP=M600 modalgroup=6 ngc=tool-job-begin
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000
TOOL_CHANGE_AT_G30 = 0
In hal
net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
---
Do I have to use prolog= epilog= ??
Please Log in to join the conversation.
- auto-mation-assist
- Offline
- Platinum Member
-
Less
More
- Posts: 425
- Thank you received: 0
10 years 1 week ago #81944
by auto-mation-assist
Replied by auto-mation-assist on topic Manual tool change + tool lengh touch off
I misunderstand the "resume" that it actually is the "pause" button" in gmoccapy when running a gcode program. So when running a program it looks like the tool change function from the code in this thread appears to work ok.
What I was looking for is a dialog box that appears is when a M6 T3 command for example is entered in the midi when a T2 tool is already installed and has to be removed before the T3 tool could be loaded. The tool-change code pauses in such a case and there is now way to get it out of pause mode without a dialog pop up and a "ok" button to proceed after a manual tool change made by entering a tool change cmd from the midi.
These should be in the postgui file since they are also needed.
net tool-change gmoccapy.toolchange-change <= iocontrol.0.tool-change
net tool-changed gmoccapy.toolchange-changed <= iocontrol.0.tool-changed
net tool-prep-number gmoccapy.toolchange-number <= iocontrol.0.tool-prep-number
What I was looking for is a dialog box that appears is when a M6 T3 command for example is entered in the midi when a T2 tool is already installed and has to be removed before the T3 tool could be loaded. The tool-change code pauses in such a case and there is now way to get it out of pause mode without a dialog pop up and a "ok" button to proceed after a manual tool change made by entering a tool change cmd from the midi.
These should be in the postgui file since they are also needed.
net tool-change gmoccapy.toolchange-change <= iocontrol.0.tool-change
net tool-changed gmoccapy.toolchange-changed <= iocontrol.0.tool-changed
net tool-prep-number gmoccapy.toolchange-number <= iocontrol.0.tool-prep-number
Please Log in to join the conversation.
- auto-mation-assist
- Offline
- Platinum Member
-
Less
More
- Posts: 425
- Thank you received: 0
10 years 1 week ago #81946
by auto-mation-assist
Replied by auto-mation-assist on topic Manual tool change + tool lengh touch off
Here are some notes I wrote to myself so I wont get to confused in a year or so from now.
For tool change routine by "orangecat" for use in gmoccapy. Alows for automatic tool length measurement and tool changing from inside running gcode file. Can also be used manually.
M600 should near the header of every gcode file as mentioned in the file documentation.
To be Done: Need a dialog when M6 command is manually entered in midi when a existing tool is already installed
during tool change. Perhaps a gui panel for manual use?
Files needed: In /'user-name'/config/macro folder:
tool_change.ngc -- wrtten by "orangecat"
In macro folder open terminal and generate two symlinks
$ ln -s tool_change.ngc tool-job-begin.ngc
$ ln -s tool_change.ngc tool-change.ngc
In my temporary ini file I have:
RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
PARAMETER_FILE = sim.var
FEATURES=30
SUBROUTINE_PATH = /home/john/linuxcnc-dev/configs/sim/gmoccapy/macros:
#--- The below two lines are for tool change ---
REMAP=M6 modalgroup=6 ngc=tool-change
REMAP=M600 modalgroup=6 ngc=tool-job-begin
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000
#--- The below line is for tool change ---
TOOL_CHANGE_AT_G30 = 0
In my hal file I have:
net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
In my postgui hal file I have:
net tool-change gmoccapy.toolchange-change <= iocontrol.0.tool-change
net tool-changed gmoccapy.toolchange-changed <= iocontrol.0.tool-changed
net tool-prep-number gmoccapy.toolchange-number <= iocontrol.0.tool-prep-number
The hal and the postgui hal files could be combined in postgui.hal
For tool change routine by "orangecat" for use in gmoccapy. Alows for automatic tool length measurement and tool changing from inside running gcode file. Can also be used manually.
M600 should near the header of every gcode file as mentioned in the file documentation.
To be Done: Need a dialog when M6 command is manually entered in midi when a existing tool is already installed
during tool change. Perhaps a gui panel for manual use?
Files needed: In /'user-name'/config/macro folder:
tool_change.ngc -- wrtten by "orangecat"
In macro folder open terminal and generate two symlinks
$ ln -s tool_change.ngc tool-job-begin.ngc
$ ln -s tool_change.ngc tool-change.ngc
In my temporary ini file I have:
RS274NGC_STARTUP_CODE = G17 G20 G40 G43H0 G54 G64P0.005 G80 G90 G94 G97 M5 M9
PARAMETER_FILE = sim.var
FEATURES=30
SUBROUTINE_PATH = /home/john/linuxcnc-dev/configs/sim/gmoccapy/macros:
#--- The below two lines are for tool change ---
REMAP=M6 modalgroup=6 ngc=tool-change
REMAP=M600 modalgroup=6 ngc=tool-job-begin
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 100000
SERVO_PERIOD = 1000000
#--- The below line is for tool change ---
TOOL_CHANGE_AT_G30 = 0
In my hal file I have:
net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
In my postgui hal file I have:
net tool-change gmoccapy.toolchange-change <= iocontrol.0.tool-change
net tool-changed gmoccapy.toolchange-changed <= iocontrol.0.tool-changed
net tool-prep-number gmoccapy.toolchange-number <= iocontrol.0.tool-prep-number
The hal and the postgui hal files could be combined in postgui.hal
Please Log in to join the conversation.
- eFalegname
- Offline
- Elite Member
-
Less
More
- Posts: 247
- Thank you received: 0
9 years 11 months ago #82714
by eFalegname
Replied by eFalegname on topic Manual tool change + tool lengh touch off
Hy friends!
I try to optimize my manual tool change subroutine, I have tried changing the place of the M6 command several times but it always gives me error. Look at the video and you will realize that always before starting to mill the router goes to the tool change position resulting tedious and expensive in time matter, please aid me to avoid this unnecessary movement, any advice is welcome. Thanks
I try to optimize my manual tool change subroutine, I have tried changing the place of the M6 command several times but it always gives me error. Look at the video and you will realize that always before starting to mill the router goes to the tool change position resulting tedious and expensive in time matter, please aid me to avoid this unnecessary movement, any advice is welcome. Thanks
Code:
O<tool-change> SUB
( see: http://www.linuxcnc.org/index.php/english/forum/10-advanced-configuration/5596-manual-tool-change--tool-lengh-touch-off?start=30#48235 )
#<Tool>=#<_current_tool>
O100 IF [EXISTS[#<_ToolDidFirst>] EQ 0]
#<_ToolDidFirst> = 0
O100 ENDIF
O105 IF [#<_ToolDidFirst> EQ 0]
G49
O105 ENDIF
M6
M70
M9
M5
G49
G90
G94
G40
O200 IF [#<_ToolDidFirst> EQ 0]
(MSG, Caricare il primo utensile e premere Start)
M0
G53 G0 Z0
G53 G0 X#<_ini[TOOLSENSOR]X> Y#<_ini[TOOLSENSOR]Y>
G53 G1 F#<_ini[TOOLSENSOR]PROBEFASTFEED> Z#<_ini[TOOLSENSOR]Z>
G91 G54 G1 F#<_ini[TOOLSENSOR]PROBEFEED1>
O101 IF [#<_ini[TOOLSENSOR]MISTONDURINGPROBE> EQ 1 OR #<_ini[TOOLSENSOR]MISTONDURINGPROBE> EQ 2]
M[7 + #<_ini[TOOLSENSOR]MISTONDURINGPROBE> - 1]
O101 ENDIF
G38.2 Z[#<_ini[TOOLSENSOR]ZSEARCH> - #<_ini[TOOLSENSOR]Z>] F#<_ini[TOOLSENSOR]PROBEFEED1>
G0 Z#<_ini[TOOLSENSOR]PROBERETRACT>
G38.2 Z[#<_ini[TOOLSENSOR]PROBERETRACT>*-1.25] F#<_ini[TOOLSENSOR]PROBEFEED2>
M9
G90
#<_ToolZRef> = #5063
#<_ToolZLast> = #<_ToolZRef>
G53 G0 Z0
M72
#<_ToolDidFirst> = 1
O200 ELSEIF [#<_current_tool> EQ #<Tool>]
O200 ELSE
G53 G0 Z0
#<ToolDiamMM> = #5410
O102 IF [#<_current_tool> EQ 0 AND #<ToolDiamMM> EQ 0]
(MSG, Cambiare la fresa e premere Start )
O102 ELSE
(DEBUG, Mettere la fresa #<_current_tool> diametro #<ToolDiamMM>mm, poi premere Start )
O102 ENDIF
M0
G53 G0 X#<_ini[TOOLSENSOR]X> Y[#<_ini[TOOLSENSOR]Y>]
G53 G1 F#<_ini[TOOLSENSOR]PROBEFASTFEED> Z#<_ini[TOOLSENSOR]Z>
G91 G54 G1 F#<_ini[TOOLSENSOR]PROBEFEED1>
O103 IF [#<_ini[TOOLSENSOR]MISTONDURINGPROBE> EQ 1 OR #<_ini[TOOLSENSOR]MISTONDURINGPROBE> EQ 2]
M[7 + #<_ini[TOOLSENSOR]MISTONDURINGPROBE> - 1]
O103 ENDIF
G38.2 Z[[#<_ini[TOOLSENSOR]ZSEARCH>] - #<_ini[TOOLSENSOR]Z>] F[#<_ini[TOOLSENSOR]PROBEFEED1>]
G0 Z#<_ini[TOOLSENSOR]PROBERETRACT>
G38.2 Z[#<_ini[TOOLSENSOR]PROBERETRACT>*-1.25] F[#<_ini[TOOLSENSOR]PROBEFEED2>]
M9
G90
#<_ToolZ> = #5063
G53 G0 Z0
#<_ToolZLast> = #<_ToolZ>
M72
G43.1 Z[#<_ToolZ> - #<_ToolZRef>]
O200 ENDIF
M101
O<tool-change> ENDSUB
M2
Please Log in to join the conversation.
9 years 11 months ago #82797
by LukeH
Replied by LukeH on topic Manual tool change + tool lengh touch off
Firstly thanks "orangecat" for producing your sub-routine. It's very useful and I'm grateful for it.
I thought I would share my work in progress modifications to the sub-routine when used with Gmoccapy (another excellent contribution to the community). I have modified the sub-routine so that it works better with Gmoccapy and Fusion360 produced program that has a G43 Hn after every tool change.
This is the procedure;
1. Home all axis
2. MDI > m600 - signals next Tn M6 is reference
3. MDI > T1 M6 - moves to touch sensor and stores offset of T1 as reference tool (T1 for me is a touch probe that lights up when it makes contact)
4. Load program to machine
5. Touch off work piece X Y Z with T1
6. Run program
Each Tn M6 in the program pauses code, pops up message to change tool complete with description of tool. Runs the auto touch-off sub-routine, and then here is my main difference, it updates the tool table with a G10 L1 Pn Zn so that the G43 Hn in the program is used rather than applying the tool offset during the sub routine.
I know that I could have modified my post processor to remove the G43 Hn line that is generated but I wanted to avoid that in case I later change GUI and/or tool touch off routine.
I will happy share the modified files if anyone is interested.
Luke.
I thought I would share my work in progress modifications to the sub-routine when used with Gmoccapy (another excellent contribution to the community). I have modified the sub-routine so that it works better with Gmoccapy and Fusion360 produced program that has a G43 Hn after every tool change.
This is the procedure;
1. Home all axis
2. MDI > m600 - signals next Tn M6 is reference
3. MDI > T1 M6 - moves to touch sensor and stores offset of T1 as reference tool (T1 for me is a touch probe that lights up when it makes contact)
4. Load program to machine
5. Touch off work piece X Y Z with T1
6. Run program
Each Tn M6 in the program pauses code, pops up message to change tool complete with description of tool. Runs the auto touch-off sub-routine, and then here is my main difference, it updates the tool table with a G10 L1 Pn Zn so that the G43 Hn in the program is used rather than applying the tool offset during the sub routine.
I know that I could have modified my post processor to remove the G43 Hn line that is generated but I wanted to avoid that in case I later change GUI and/or tool touch off routine.
I will happy share the modified files if anyone is interested.
Luke.
Please Log in to join the conversation.
Time to create page: 0.776 seconds
