Menu

#339 Unexpected destinations when changing plane within canned cycles

2.6
open
andypugh
None
1
2013-11-03
2013-11-01
andypugh
No

with sim axis-9axis
start, home, etc
G0 Z2
G98 G85 F10 R1 Z0
G18
G98 G85 F10 R1 X0

The final destination is Y2. Despite there being no Y2 command anywhere above.

Discussion

  • Matt Shaver

    Matt Shaver - 2013-11-02

    On Fri, 01 Nov 2013 22:28:08 +0000
    "andypugh" andypugh@users.sf.net wrote:

    with sim axis-9axis
    start, home, etc
    G0 Z2
    G98 G85 F10 R1 Z0
    G18
    G98 G85 F10 R1 X0

    The final destination is Y2. Despite there being no Y2 command
    anywhere above.

    I would say the problem is with the way G98 is being handled. When the
    plane is switched from XY to XZ, the "old Z position" (2.0 in this
    case) is used as the "old Y position" for the canned cycle return
    value in the second G85 cycle (which, by the way, should really be G98
    G85 F10 R1 Y0 since G18 selects the XZ plane. I would have expected
    you to get an error that says, "Y value unspecified in xz plane
    canned cycle".).

    At:

    http://linuxcnc.org/docs/devel/html/gcode/gcode.html#sec:G98-G99-Set

    it says:

    "The initial (G98) plane is reset any time cycle motion mode is
    abandoned, whether explicitly (G80) or implicitly (any motion code that
    is not a cycle). Switching among cycle modes (say G81 to G83) does NOT
    reset the initial plane."

    If you put in a G80 after the G85 block, and before switching planes,
    the behavior changes, but I don't think it's doing the right thing
    even then.

    Thanks,
    Matt

     
  • andypugh

    andypugh - 2013-11-02

    On 2 November 2013 01:46, Matt Shaver mshaver@users.sf.net wrote:

    G0 Z2
    G98 G85 F10 R1 Z0
    G18
    G98 G85 F10 R1 X0

    The final destination is Y2. Despite there being no Y2 command
    anywhere above.

    I would say the problem is with the way G98 is being handled. When the
    plane is switched from XY to XZ, the "old Z position" (2.0 in this
    case) is used as the "old Y position" for the canned cycle return
    value in the second G85 cycle (which, by the way, should really be G98
    G85 F10 R1 Y0 since G18 selects the XZ plane. I would have expected
    you to get an error that says, "Y value unspecified in xz plane
    canned cycle".).

    The behaviour is identical with G98 G85 F10 R1 Y0. A rapid to Y1, feed
    to Y0, feed to Y1, rapid to Y2.

    In the first example I assume that the X0 is taken as a destination
    coordinate in the XZ plane at which to perform the cycle.
    (And, indeed, Y0 X1 in the command finishes ax X1 Y2 Z2. )

    --
    atp
    If you can't fix it, you don't own it.
    http://www.ifixit.com/Manifesto

     
  • Matt Shaver

    Matt Shaver - 2013-11-02

    On Sat, 02 Nov 2013 20:55:57 +0000
    "andypugh" andypugh@users.sf.net wrote:

    On 2 November 2013 01:46, Matt Shaver mshaver@users.sf.net wrote:

    (which, by the way, should
    really be G98 G85 F10 R1 Y0 since G18 selects the XZ plane. I would
    have expected you to get an error that says, "Y value unspecified
    in xz plane canned cycle".).

    The behaviour is identical with G98 G85 F10 R1 Y0. A rapid to Y1, feed
    to Y0, feed to Y1, rapid to Y2.

    Yes it is, and I think you are correct that the behavior is wrong in
    either case.

    In the first example I assume that the X0 is taken as a destination
    coordinate in the XZ plane at which to perform the cycle.
    (And, indeed, Y0 X1 in the command finishes ax X1 Y2 Z2. )

    My point, in the parenthesized aside, was just that the canned cycle
    endpoint must be specified for the axis that is perpendicular to the
    active plane. So, when in G17 mode, the active plane is XY, and the
    destination endpoint is specified as Z<something>. If you leave out the
    Z word in the block, you'll get an error message like the one I quoted.
    I just figure that leaving out the Y word when G18 (XZ plane) is
    active, or leaving out the X word when G19 (YZ plane) is active, should
    produce a similar error.

    Is it, or should it be allowable to change the active plane while a
    canned cycle is active? I wonder what a Fanuc 0M would do with this
    code...

    Thanks,
    Matt

     
  • andypugh

    andypugh - 2013-11-03

    On 2 November 2013 23:47, Matt Shaver mshaver@users.sf.net wrote:

    On Sat, 02 Nov 2013 20:55:57 +0000

    My point, in the parenthesized aside, was just that the canned cycle
    endpoint must be specified for the axis that is perpendicular to the
    active plane. So, when in G17 mode, the active plane is XY, and the
    destination endpoint is specified as Z. If you leave out the
    Z word in the block, you'll get an error message like the one I quoted.
    I just figure that leaving out the Y word when G18 (XZ plane) is
    active, or leaving out the X word when G19 (YZ plane) is active, should
    produce a similar error.

    Once in a cycle you are allowed to leave out all but the destinations.
    In fact the following gives the same result too.

    G17
    G0 X0 Y0 Z2
    G98 G85 R1 Z0 F10
    G18
    X0

    And, for fun.

    G17
    G0 X0 Y0 Z2
    G98 G85 R1 Z0 F10
    G18
    Y0
    G19
    X0
    G17
    Z0

    Finishes at X2 Y2 Z2 despite the last several commands being X0 Y0 and Z0

    Is it, or should it be allowable to change the active plane while a
    canned cycle is active?

    I suspect not, I think there should perhaps be an implicit G80.

    --
    atp
    If you can't fix it, you don't own it.
    http://www.ifixit.com/Manifesto

     
  • Chris Radek

    Chris Radek - 2013-11-03

    Fanuc 10M manual (1984), II-14.1 (Note 2) says "Switch the drilling axis after cancelling a canned cycle."

    This manual doesn't reliably tell you what will cause an error message and what will just not work right [in another place, (Note 7), it says "The tool offset commands are ignored in canned cycle mode"], but either way I think this means we ought to give an error in the situation you've found.