- GCode and Part Programs
- G&M Codes
- G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
15 Nov 2021 16:44 - 15 Nov 2021 21:55 #226589
by +Jan+
G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis was created by +Jan+
I have a small problem with dynamic tool length measurement with G43.1.
I call via remap a macro on this basis:
My adapted macro looks like this
My Z axis has the following specification
[AXIS_Z]
MAX_VELOCITY = 100.0
MAX_ACCELERATION = 700.0
MIN_LIMIT = -300.0
MAX_LIMIT = 0.01
My workflow is as follows.
1. tool measurement via the macro above
2. define Z0 (for the tests I set it far away from machine limits)
3. start program
If I now start a program I get the message, "Program Exceeds machine maximum on axis Z.". As far as I could understand, the error occurs when the machine is moved to different Z heights in the program run.
For example, this code works here:
G21 (Units: Metric)
G40 G90
F1
M6 T9 ( Cutter, 6 mm)
G0 Z10
G0 X0 Y0
G01 Z10 F2000 (same height)
G01 X20 Y20
G01 X0 Y0
G0 Z10
M05 M30
This one as well:
G21 (Units: Metric)
G40 G90
F1
M6 T9 (Cutter, 6 mm)
G0 Z0
G0 X0 Y0
G01 Z0 F2000 (same height)
G01 X20 Y20
G01 X0 Y0
G0 Z0
M05 M30
This however not only with the above mentioned error message:
G21 (Units: Metric)
G40 G90
F1
M6 T9 (Cutter, 6 mm)
G0 Z0
G0 X0 Y0
G01 Z10 F2000 (different height)
G01 X20 Y20
G01 X0 Y0
G0 Z0
M05 M30
If I then click on "Run anyway", the program runs through to the end of the cycle without any problems. However, since I have to click the message away every time and thus cannot use my external hardware start button, I would like to solve the problem. Does anyone have a troubleshooting approach?
Best wishes
Jan
I call via remap a macro on this basis:
My adapted macro looks like this
o<messen_eng> sub
M64P10
#1700=1200 (Tool change X position)
#1701=0 (Tool change Y position)
#1702=-1 (Tool change Z position)
#1800=-100 (Position safe Z/Starting point for G38.2 move)
#1801=1279.125 (position probe X)
#1802=2498 (position probe Y)
#1900=#<_coord_system> (Store coordinate system only G54 till G59)
o500 if [#<_current_tool> EQ #<_selected_tool>]
;(debug, Tool already in spindle)
o500 else
M5
G54
G90 G0
G53 Z#1702 (Go to tool change Z position)
G53 X#1700 Y#1701 (Go to tool change XY position)
M6 T#<_selected_tool>
#4999=#5400. (save actually loaded tool... for another macro)
G43.1 Z0 (TLO reset)
G53 X#1801 Y#1802 (Go to probe position)
G53 Z#1800 (Go to save Z position)
G91
G38.2 Z-197.5 F850 (probing fast)
G1 Z2.0 F150 (go up a bit)
G38.2 Z-2.25 F25 (probing slow)
#2000=[#5063+#5223] (Switching point+zero Offset)
#2001=[#2000-#2002+#2003](new - diff + old)
#2002=[#2000] (Save old switch point)
#2003=[#2001] (Save old offset)
G1 Z5.0 F500 (go up away from sensor)
G90 G0
G43.1 Z#2001 (TLO set)
G53 Z#1800 (Go to save Z position)
G53 Z#1702 (Go to tool change Z position)
#1803=1 (State tool already measured)
;(debug, Differenz ist: #2001)
(Restore old zero (only G54 to G59)
o100 if[#1900 EQ 540]
G54
o100 endif
o101 if[#1900 EQ 550]
G55
o101 endif
o102 if[#1900 EQ 560]
G56
o102 endif
o103 if[#1900 EQ 570]
G57
o103 endif
o104 if[#1900 EQ 580]
G58
o104 endif
o500 endif
M65P10
o<messen_eng> endsub
M2
My Z axis has the following specification
[AXIS_Z]
MAX_VELOCITY = 100.0
MAX_ACCELERATION = 700.0
MIN_LIMIT = -300.0
MAX_LIMIT = 0.01
My workflow is as follows.
1. tool measurement via the macro above
2. define Z0 (for the tests I set it far away from machine limits)
3. start program
If I now start a program I get the message, "Program Exceeds machine maximum on axis Z.". As far as I could understand, the error occurs when the machine is moved to different Z heights in the program run.
For example, this code works here:
G21 (Units: Metric)
G40 G90
F1
M6 T9 ( Cutter, 6 mm)
G0 Z10
G0 X0 Y0
G01 Z10 F2000 (same height)
G01 X20 Y20
G01 X0 Y0
G0 Z10
M05 M30
This one as well:
G21 (Units: Metric)
G40 G90
F1
M6 T9 (Cutter, 6 mm)
G0 Z0
G0 X0 Y0
G01 Z0 F2000 (same height)
G01 X20 Y20
G01 X0 Y0
G0 Z0
M05 M30
This however not only with the above mentioned error message:
G21 (Units: Metric)
G40 G90
F1
M6 T9 (Cutter, 6 mm)
G0 Z0
G0 X0 Y0
G01 Z10 F2000 (different height)
G01 X20 Y20
G01 X0 Y0
G0 Z0
M05 M30
If I then click on "Run anyway", the program runs through to the end of the cycle without any problems. However, since I have to click the message away every time and thus cannot use my external hardware start button, I would like to solve the problem. Does anyone have a troubleshooting approach?
Best wishes
Jan
Attachments:
Last edit: 15 Nov 2021 21:55 by +Jan+.
Please Log in or Create an account to join the conversation.
16 Nov 2021 18:33 - 16 Nov 2021 18:33 #226670
by andypugh
Replied by andypugh on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
I think that the problem here might be that probing always fails in the preview.
Judicious use of
Might fix the problem.
Judicious use of
O100 IF [#<_task> EQ 0]
simulate probe
O100 ELSE
actually probe
O100 ENDIF
Might fix the problem.
Last edit: 16 Nov 2021 18:33 by andypugh.
Please Log in or Create an account to join the conversation.
17 Nov 2021 14:26 - 17 Nov 2021 14:26 #226736
by +Jan+
Replied by +Jan+ on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
I'm afraid that I'm not judicious enough to implement that accordingly .
Can you please describe the workaround in more detail?
Thanks in advance
Jan
Can you please describe the workaround in more detail?
Thanks in advance
Jan
Last edit: 17 Nov 2021 14:26 by +Jan+.
Please Log in or Create an account to join the conversation.
17 Nov 2021 14:37 #226737
by andypugh
Replied by andypugh on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
It's hard to know without context.
One thing to look at... What does your code do if the probe fails to find the sensor?
One thing to look at... What does your code do if the probe fails to find the sensor?
Please Log in or Create an account to join the conversation.
17 Nov 2021 14:45 #226739
by andypugh
Replied by andypugh on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
Looking at the preview interpreter:
github.com/LinuxCNC/linuxcnc/blob/master...sai/saicanon.cc#L397
It looks like the tool point moves to 0.254mm short of the programmed probe end position, but does not set the "probe success" parameter flag.
The issue that you are seeing is likely to be that the calculated result in preview mode appears to be a very short tool, one with a tip somewhere inside the headstock.
Maybe just skip the whole probe routine if #<_task> EQ 0 ?
github.com/LinuxCNC/linuxcnc/blob/master...sai/saicanon.cc#L397
It looks like the tool point moves to 0.254mm short of the programmed probe end position, but does not set the "probe success" parameter flag.
The issue that you are seeing is likely to be that the calculated result in preview mode appears to be a very short tool, one with a tip somewhere inside the headstock.
Maybe just skip the whole probe routine if #<_task> EQ 0 ?
Please Log in or Create an account to join the conversation.
17 Nov 2021 14:47 #226740
by andypugh
The following user(s) said Thank You: +Jan+
Please Log in or Create an account to join the conversation.
17 Nov 2021 23:06 #226805
by +Jan+
Replied by +Jan+ on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
I have now added an If query at the beginning of the tool length measurement as it is implemented for example at Gmoccapy:
Is this implemented correctly?
Unfortunately the problem persists and I don't get a debug message when refreshing the preview.
Best wishes
Jan
o<messen_eng> sub
o100 if [#<_task> EQ 0]
(debug, Task is zero)
o100 return [999]
o100 endif
M64P10
#1700=1200 (Tool change X position)
#1701=0 (Tool change Y position)
#1702=-1 (Tool change Z position)
#1800=-100 (position sicheres Z)
#1801=1279.125 (position probe X)
#1802=2498 (position probe Y)
#1900=#<_coord_system> (Store coordinate system only G54 till G59)
o500 if [#<_current_tool> EQ #<_selected_tool>]
;(debug, Tool already in spindle)
o500 else
M5
G54
G90 G0
G53 Z#1702 (Go to tool change Z position)
G53 X#1700 Y#1701 (Go to tool change XY position)
M6 T#<_selected_tool>
#4999=#5400
G43.1 Z0 (TLO reset)
G53 X#1801 Y#1802 (Go to probe position)
G53 Z#1800 (Go to save Z position)
G91
G38.2 Z-197.5 F850 (probing fast)
G1 Z2.0 F150 (go up a bit)
G38.2 Z-2.25 F25 (probing slow)
#2000=[#5063+#5223] (Switching point+zero Offset)
#2001=[#2000-#2002+#2003](new - diff + old)
#2002=[#2000] (Save old switch point)
#2003=[#2001] (Save old offset)
G1 Z5.0 F500 (go up away from sensor)
G90 G0
G43.1 Z#2001 (TLO set)
G53 Z#1800 (Go to save Z position)
G53 Z#1702 (Go to tool change Z position)
#1803=1 (State tool already measured)
;(debug, Differenz ist: #2001)
(Restore old zero (only G54 to G59)
o200 if[#1900 EQ 540]
G54
o200 endif
o201 if[#1900 EQ 550]
G55
o201 endif
o202 if[#1900 EQ 560]
G56
o202 endif
o203 if[#1900 EQ 570]
G57
o203 endif
o204 if[#1900 EQ 580]
G58
o204 endif
o500 endif
M65P10
o<messen_eng> endsub
M2
Is this implemented correctly?
Unfortunately the problem persists and I don't get a debug message when refreshing the preview.
Best wishes
Jan
Please Log in or Create an account to join the conversation.
17 Nov 2021 23:53 #226809
by andypugh
Replied by andypugh on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
I think that the o100 in front of the return is wrong.
Please Log in or Create an account to join the conversation.
18 Nov 2021 03:29 #226822
by JohnnyCNC
Replied by JohnnyCNC on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
Last year I did a remap based on the same one you based yours on. I used the the QTDragon GUI, 3DProbe, eBay tool setter, and TTS tooling. My remap handles both fixed length tools and variable length tools. Variable length tools get automatically measured right after the tool change and fixed length tool use the length listed in the tool table. I remember getting that error while working through my remap but I don't recall the exact cause. You may find some clues by looking at my remap. You can find it
posted here
John
John
Please Log in or Create an account to join the conversation.
- d2inventory
- Offline
- Senior Member
Less
More
- Posts: 42
- Thank you received: 10
18 Nov 2021 11:04 - 18 Nov 2021 14:58 #226853
by d2inventory
this is how you exit the subroutine.
btw, can you reproduce your error in a SIM config? I wasn't able to.
I managed to reproduce it and the above if clause fixed the issue as andy suggested.
Also if you're using a button type of touch probe you should debounce it, mine bounces for a few milliseconds so I used a 5ms debounce.
linuxcnc.org/docs/html/hal/rtcomps.html#_debounce
Replied by d2inventory on topic G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
o100 if [#<_task> EQ 0]
(debug, Task is zero)
o<messen_eng> return
o100 endif
this is how you exit the subroutine.
I managed to reproduce it and the above if clause fixed the issue as andy suggested.
Also if you're using a button type of touch probe you should debounce it, mine bounces for a few milliseconds so I used a 5ms debounce.
linuxcnc.org/docs/html/hal/rtcomps.html#_debounce
Last edit: 18 Nov 2021 14:58 by d2inventory.
Please Log in or Create an account to join the conversation.
- GCode and Part Programs
- G&M Codes
- G43.1 Dynamic Tool Length Measurement - Program Exceeds machine maximum on axis
Time to create page: 0.111 seconds