You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1243bd4
Browse filesBrowse the repository at this point in the historyBrowse files
interp: G92, G10 L20, G43 and M6 wait for the G49 that cancels G43.4
Under the kinematics G43.4 or G43.5 switches to, the current point is the tool tip, with the tool length along the tilted tool. G92 made that point the coordinates given and kept the offset after the G49, where the same numbers name another point: the spindle nose, or wherever the tilt put the length. G10 L20 did the same into a coordinate system. M6 changed the tool under the tip the program follows, so the point moved with the new length. A plain G43 changed the length and ended G43.4's hold on the kinematics, so G92 then passed with the machine still tilted on them and G49 no longer switched back. All of them ran without a word.
Fanuc refuses G92 and G43 in tool centre point control (PS5421, not in its list of G codes allowed under G43.4/G43.5), Siemens refuses PRESETON on axes under a transformation (17600), and Heidenhain resets M128/TCPM before a TOOL CALL. G92, G92.1, G92.2, G92.3, G10 L20 and M6 are now refused while the switch G43.4 or G43.5 made is in effect, with a message to cancel it with G49 first; G43 is refused with a message to change the length with G43.4 H (G43.5 H under G43.5). G43.1 and G43.2 change the values of the offset in effect, the only way to give an offset across the tool, and keep the switch. G10 L2, G52 and G54 to G59.3 stay: they read no position, and Siemens and Heidenhain allow their frames and datum shifts under TCP (Fanuc refuses G52 and G54 to G59 too, tied to its own TCP coordinate handling). The rule follows the switch G43.4 made, not the kinematics type: once G12.1 or G13.1 has selected a kinematics the program has taken it over, and a hexapod or robot running G43 on its primary type keeps its codes; on a machine without switchable kinematics G43.4 is a plain G43 and nothing changes. Under a tilted work plane G92 and G10 were already refused and G52 shifts the plane.
convert_g92_is_applied's result was stored and never checked, so every refusal of G92.1, G92.2 and G92.3 was dropped and the code did nothing without saying so: under cutter radius compensation and under a tilted work plane as well as here. It is checked now.
tests/kins-switch: under G43.4, G92 X1, G92.1, G92.2, G92.3, T1 M6, G43 H1 and G10 L20 are each refused with the message; G43.4 H1, G10 L2, G52 and G55 pass, and after G43.1 or G43.2 G92 is still refused; under G43.5 G92, M6 and G43 are refused; after G49, and under G43 on a type G12.1 selected, G92, G92.1, M6 and G10 L20 pass. Each refusal aborts and the test's abort routine selects G13.1, so G43.4 is programmed again before each one. Without the change 12 checks fail; 12 of 12 runs pass and 12 of 12 fail as expected without it, at 6 copies in parallel with 4 busy loops, and 3 of 3 pass and fail likewise with 3 copies and a busy loop all on one CPU.
@@ -1862,8 +1864,7 @@ compensation in the module's working kinematics. The switch happens
1862
1864
first and the offset applies after it, as if the two had been written
1863
1865
on consecutive lines. 'G49' is the matching cancel: it clears the
1864
1866
offset and switches back to the machine frame kinematics, what 'G13.1'
1865
-
selects, as long as the offset in effect is still 'G43.4''s and no 'G12.1'
1866
-
or 'G13.1' has selected a kinematics since.
1867
+
selects, as long as no 'G12.1' or 'G13.1' has selected a kinematics since.
1867
1868
1868
1869
The H word, the offset itself and the parameters it lands in are
1869
1870
'G43''s. Which kinematics is the working one is declared by the module
@@ -1892,6 +1893,19 @@ frame sets `MACHINE_MOVES_IN_MACHINE_FRAME` in the `[RS274NGC]` section of the
1892
1893
INI file, as the five axis sims shipped with LinuxCNC do; see
1893
1894
<<gcode:g53,G53>>.
1894
1895
1896
+
While the switch 'G43.4' made is in effect, '<<gcode:g92,G92>>', 'G92.1',
1897
+
'G92.2', 'G92.3', '<<gcode:g10-l20,G10 L20>>' and '<<mcode:m6,M6>>' are
1898
+
refused until 'G49' cancels it. The current point is then the tool tip,
1899
+
with the tool length along the tilted tool: offsets a 'G92' or 'G10 L20'
1900
+
takes from it stay after 'G49', where the same numbers name another point,
1901
+
and a tool change moves the point with the tool length. A new tool length
1902
+
from the tool table is 'G43.4 H-': a plain 'G43' is refused, since it would
1903
+
end the switch with the machine left on the working kinematics, while
1904
+
'G43.1' and 'G43.2' change the values of the offset in effect and keep the
1905
+
switch. Once
1906
+
'G12.1' or 'G13.1' has selected a kinematics, and on a machine without
1907
+
switchable kinematics, these codes work as usual.
1908
+
1895
1909
It is an error if:
1896
1910
1897
1911
* the kinematics module is switchable but declares no primary
@@ -3705,7 +3719,11 @@ on the action of `G92`.
3705
3719
If this is the case, the offset is replaced with a new
3706
3720
offset that makes the current point become the specified value.
3707
3721
3708
-
It is an error if all axis words are omitted.
3722
+
It is an error if:
3723
+
3724
+
* all axis words are omitted, or
3725
+
* '<<gcode:g43.4,G43.4>>' or 'G43.5' is in effect; cancel it with 'G49'
3726
+
first.
3709
3727
3710
3728
LinuxCNC stores the G92 offsets and reuses them on the next run of a
3711
3729
program. To prevent this, one can program a `G92.1` (to erase them), or
@@ -3725,6 +3743,8 @@ See the <<sec:overview-parameters,Parameters>> section for more information.
3725
3743
* 'G92.1' - turn off G92 offsets and reset <<sub:numbered-parameters,parameters>> 5211 - 5219 to zero.
3726
3744
* 'G92.2' - turn off G92 offsets but keep <<sub:numbered-parameters,parameters>> 5211 - 5219 available.
3727
3745
3746
+
Like 'G92', both are an error while '<<gcode:g43.4,G43.4>>' or 'G43.5' is in effect.
3747
+
3728
3748
[NOTE]
3729
3749
G92.1 only clears G92 offsets, to change G53-G59.3 coordinate system offsets in G-code use either <<gcode:g10-l2,G10 L2>> or <<gcode:g10-l20,G10 L20>>.
3730
3750
@@ -3741,6 +3761,8 @@ The parameter values will be saved when the first program exits and restored whe
3741
3761
Use `G92.3` near the beginning of the second program.
3742
3762
That will restore the offsets saved in the first program.
3743
3763
3764
+
Like 'G92', 'G92.3' is an error while '<<gcode:g43.4,G43.4>>' or 'G43.5' is in effect.
0 commit comments