Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    G1 Feedrate

    Scheduled Pinned Locked Moved Solved
    General Discussion
    4
    17
    1.8k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • dc42undefined
      dc42 administrators @DocTrucker
      last edited by dc42

      @DocTrucker said in G1 Feedrate:

      This implies that as well as the 'previous used' for each channel there is also a F store too?

      The only thing that is stored and relevant to this discussion is the most recently-seen G1 F parameter (on each channel).

      Duet WiFi hardware designer and firmware engineer
      Please do not ask me for Duet support via PM or email, use the forum
      http://www.escher3d.com, https://miscsolutions.wordpress.com

      DocTruckerundefined 1 Reply Last reply Reply Quote 0
      • DocTruckerundefined
        DocTrucker @dc42
        last edited by

        @dc42 does channel mean stepper channel number or axis label; X/Y/Z/U/V/W/A/B/C/D/E?

        Running 3 P3Steel with Duet 2. Duet 3 on the shelf looking for a suitable machine. One first generation Duet in a Logo/Turtle style robot!

        1 Reply Last reply Reply Quote 0
        • DocTruckerundefined
          DocTrucker
          last edited by DocTrucker

          So the following should be correct now?

          Feed rate set during linear motion:

          G1 X10 Y10 Z10 E2 F3000   # Move to (10,10,10) with a head feed rate of 3000mm/min, 
                                    # and extrude 2mm of filament at 346.41mm/min
          

          (Calculates feed rate for E to ensure it completes in sync with the linear motion.)

          Feed rate set on solo E command:

          G1 E2 F60                 # Feed rate of 60mm/min stored to F store &
                                    # Extrude 2mm of filament at a rate of 60mm/min
          G1 X10 Y10 Z10            # Feed rate of 60mm/min recalled from F store &
                                    # Move to (10,10,10) at a head movement rate of 60mm/min.
          

          My assumption is when an extrusion feed rate is set with a G1 command containing no linear axis motion the feed rate is applied as is to following linear motions?

          Feed rate set on solo E command:

          G1 E2 F60                 # Feed rate of 60mm/min stored to F store &
                                    # Extrude 2mm of filament at a rate of 60mm/min
          G1 X10 Y10 Z10 E2         # Feed rate of 60mm/min recalled from F store &
                                    # Move to (10,10,10) at a head movement rate of 60mm/min while
                                    # extruding 2mm of filament at a rate of 6.93mm/min 
          

          Feed rate set in solo and linear motion then recalled:

          G1 E2 F60                 # Feed rate of 60mm/min stored to F store &
                                    # Extrude 2mm of filament at a rate of 60mm/min
          G1 X10 Y10 Z10 F3000      # Feed rate of 3000mm/min stored to F store &
                                    # Move to (10,10,10) with a head feed rate of 3000mm/min
          G1 E2                     # Feed rate of 3000mm/min recalled from F store &
                                    # Extrude 2mm of filament with a feed rate of 3000mm/min.
          

          Running 3 P3Steel with Duet 2. Duet 3 on the shelf looking for a suitable machine. One first generation Duet in a Logo/Turtle style robot!

          dc42undefined 1 Reply Last reply Reply Quote 0
          • dc42undefined
            dc42 administrators @DocTrucker
            last edited by

            @DocTrucker said in G1 Feedrate:

            So the following should be correct now?
            Feed rate set during linear motion:

            Yes.

            It gets more complicated when you have rotational as well as linear axes.

            Duet WiFi hardware designer and firmware engineer
            Please do not ask me for Duet support via PM or email, use the forum
            http://www.escher3d.com, https://miscsolutions.wordpress.com

            DocTruckerundefined 1 Reply Last reply Reply Quote 0
            • DocTruckerundefined
              DocTrucker @dc42
              last edited by

              @dc42 cheers! I was just working on joining that up with the rotations. I think I understand what is going on now. Post to follow!

              Running 3 P3Steel with Duet 2. Duet 3 on the shelf looking for a suitable machine. One first generation Duet in a Logo/Turtle style robot!

              1 Reply Last reply Reply Quote 0
              • DocTruckerundefined
                DocTrucker
                last edited by

                In summary for the F value from the last G1 command is always stored as the value requested in the g-code, despite this meaning one of three different things; linear rate of displacement for 3D movement of [XYZ] or [UVW], single axis displacement of E, or rate of rotation for [A] [B] [C] or [D]. As @dc42 states always wise to repeat F feed rate when changing between motions of [XYZ], [UVW], [ABCD], or E axis to prevent very strange behaviours.

                As far as I under stand [XYZ] and [UVW] are two seperate co-ordinate systems that are largely treated as independent of each other, but whose motions will be co-ordinated if a G1 command includes one or more of [XYZ] and one or more of [UVW]. Both can be moved independently of each other. Distance travelled for [XYZ] or [UVW] is the square root of the sum of the square of distance travelled in each axis. E.g.: dist = (dx^2 + dy^2 + dz^2)^(1/2)

                [ABCD] are rotational axis, and moves on these axes are also treated as separate to the other co-ordinate systems. I'm assuming the rotation rate is applied to the axis with the greatest travel?

                [E] is an independent axis.

                In terms of the literal value of F:

                • While [XYZ] are present the F value relates to the motion of that head. All other motions [UVWABCDE] are timed to complete over the same time period as the [XYZ] motion.
                • If no [XYZ] is present the F value relates to the motion of the [UVW] head. [ABCDE] are timed to complete over the same time period as the [UVW] motion.
                • If no [XYZUVW] is present the F value relates to the angular motion of the [ABCD] joints. [E] is timed to complete over the same time period as the [ABCD] motion.
                • If no [XYZUVWABCD] is present the F value relates to the single axis motion of the [E] extrusion axis.

                Running 3 P3Steel with Duet 2. Duet 3 on the shelf looking for a suitable machine. One first generation Duet in a Logo/Turtle style robot!

                dc42undefined 1 Reply Last reply Reply Quote 1
                • dc42undefined
                  dc42 administrators @DocTrucker
                  last edited by

                  @DocTrucker said in G1 Feedrate:

                  As far as I under stand [XYZ] and [UVW] are two seperate co-ordinate systems that are largely treated as independent of each other, but whose motions will be co-ordinated if a G1 command includes one or more of [XYZ] and one or more of [UVW]. Both can be moved independently of each other. Distance travelled for [XYZ] or [UVW] is the square root of the sum of the square of distance travelled in each axis. E.g.: dist = (dx^2 + dy^2 + dz^2)^(1/2)
                  [ABCD] are rotational axis, and moves on these axes are also treated as separate to the other co-ordinate systems. I'm assuming the rotation rate is applied to the axis with the greatest travel?

                  It's not quite as simple as that. By default, UVW are treated as linear axes, and ABCD are treated as rotational axes. But in RRF 3.2 and later you can change that when you create them, using the M584 R parameter.

                  All linear axes are normally treated as belonging to the same coordinate system. So if you declare UVW as linear axes, and then send G1 X10 Y10 Z10 U10 V10 W10, that is treated as a move in 6-dimensional space and the feed rate applied to the speed in 6-dimensional space.

                  A further complication is that you can use the M584 S parameter to force all axes created in the command to be treated as linear for the purpose of feed rate calculations, or all treated as rotational in feed rate calculations. This was requested for OpenPnP.

                  Duet WiFi hardware designer and firmware engineer
                  Please do not ask me for Duet support via PM or email, use the forum
                  http://www.escher3d.com, https://miscsolutions.wordpress.com

                  DocTruckerundefined 1 Reply Last reply Reply Quote 1
                  • DocTruckerundefined
                    DocTrucker @dc42
                    last edited by DocTrucker

                    @dc42 ok, I am getting there slowly...

                    In real terms if you have a head and following system and you want a feed rate of 60mm/sec on the XYZ motion you may need to fudge the F value of 3600 if you are moving the UVW axis too?

                    We are getting close to the questions on my other post which specifically addresses the rotational axis. In a nutshell I am looking for an explanation of what differences are between a rotational axis and linear. You could for example take the U axis and define the limits as -360:360 and set the steps per mm so that G1 U1 moved the U axis by one degree. That approach seems great for rotational heads that can turn a fixed number of turns on one direction or another.

                    I'm guessing a true rotational axis as far as you are concerned has no limits in motion? In other words; positive value = anti clockwise motion, negative = clockwise, and absolute values are to the modulus 360?

                    Other thread: https://forum.duet3d.com/topic/21816/rotational-axis-abc-limits-behaviour

                    Running 3 P3Steel with Duet 2. Duet 3 on the shelf looking for a suitable machine. One first generation Duet in a Logo/Turtle style robot!

                    dc42undefined 1 Reply Last reply Reply Quote 0
                    • dc42undefined
                      dc42 administrators @DocTrucker
                      last edited by

                      @DocTrucker said in G1 Feedrate:

                      In real terms if you have a head and following system and you want a feed rate of 60mm/sec on the XYZ motion you may need to fudge the F value of 3600 if you are moving the UVW axis too?

                      Yes, if you are commanding X, Y, U and V in the GCode and you have declared them all as linear. No if you are only commanding X and Y, and using the M563 axis mapping feature to move U and V as well.

                      If you have no rotational axes, you could use the M584 S parameter to have UVW treated as rotational in the feed rate calculation, and hence not counted in the feed rate calculation when any of XYZ is moving.

                      Duet WiFi hardware designer and firmware engineer
                      Please do not ask me for Duet support via PM or email, use the forum
                      http://www.escher3d.com, https://miscsolutions.wordpress.com

                      DocTruckerundefined 1 Reply Last reply Reply Quote 0
                      • DocTruckerundefined
                        DocTrucker @dc42
                        last edited by

                        @dc42 thanks. I'll mark this one as solved. To better get my head around the differences between rotational and linear axis I will need to do some sketches and will extend the other thread that I linked above.

                        Running 3 P3Steel with Duet 2. Duet 3 on the shelf looking for a suitable machine. One first generation Duet in a Logo/Turtle style robot!

                        1 Reply Last reply Reply Quote 0
                        • JoergS5undefined JoergS5 referenced this topic
                        • JoergS5undefined JoergS5 referenced this topic
                        • First post
                          Last post
                        Unless otherwise noted, all forum content is licensed under CC-BY-SA