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

    RRF 3.5 beta 4 not respecting axis limits

    Scheduled Pinned Locked Moved
    Beta Firmware
    3
    8
    268
    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.
    • blt3dpundefined
      blt3dp
      last edited by

      Hi, have a Delta with Duet 3 MB6HC in SBC mode w/Raspberry Pi 4 running RRF 3.5 beta 4 and I noticed today that It's not respecting the machine limits.

      This is after it's been homed as well as G30, G32 has not been run

      This is my M665 command which sets the radius to 150mm. Doing a pure X or Y move lets me go beyond that 150mm

      M665 R179.423 L360.250 B150.000 H368.045

      Here's M450, M208 and M564

      37ada3e5-ed08-4a8b-81c7-7c85fbeaf8d8-image.png

      Also here's M122, it's printing right now.

      M122
      === Diagnostics ===
      RepRapFirmware for Duet 3 MB6HC version 3.5.0-beta.4 (2023-06-08 23:41:30) running on Duet 3 MB6HC v1.0 or earlier (SBC mode)
      Board ID: 08DGM-9T66A-G63SJ-6JTDL-3SD6P-TS0HA
      Used output buffers: 3 of 40 (40 max)
      === RTOS ===
      Static ram: 155012
      Dynamic ram: 80940 of which 2976 recycled
      Never used RAM 103536, free system stack 136 words
      Tasks: ACCEL(6,nWait,0.0%,263) SBC(2,rWait:,1.9%,422) HEAT(3,nWait,0.1%,323) Move(4,nWait,0.2%,224) CanReceiv(6,nWait,0.0%,941) CanSender(5,nWait,0.0%,335) CanClock(7,delaying,0.0%,343) TMC(4,nWait,18.6%,61) MAIN(2,running,79.2%,444) IDLE(0,ready,0.1%,30), total 100.0%
      Owned mutexes: HTTP(MAIN)
      === Platform ===
      Last reset 02:53:17 ago, cause: software
      Last software reset at 2023-08-02 21:05, reason: User, Expansion spinning, available RAM 107088, slot 2
      Software reset code 0x6012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a
      Error status: 0x04
      Aux0 errors 0,1,0
      MCU temperature: min 36.2, current 39.0, max 39.6
      Supply voltage: min 23.8, current 23.9, max 24.0, under voltage events: 0, over voltage events: 0, power good: yes
      12V rail voltage: min 12.2, current 12.2, max 12.3, under voltage events: 0
      Heap OK, handles allocated/used 99/1, heap memory allocated/used/recyclable 2048/28/4, gc cycles 0
      Events: 0 queued, 0 completed
      Driver 0: ok, SG min 0, mspos 986, reads 10489, writes 101 timeouts 0
      Driver 1: ok, SG min 0, mspos 972, reads 10489, writes 101 timeouts 0
      Driver 2: ok, SG min 0, mspos 932, reads 10489, writes 101 timeouts 0
      Driver 3: ok, SG min 0, mspos 754, reads 10569, writes 21 timeouts 0
      Driver 4: standstill, SG min n/a, mspos 8, reads 10579, writes 11 timeouts 0
      Driver 5: standstill, SG min n/a, mspos 8, reads 10579, writes 11 timeouts 0
      Date/time: 2023-08-02 23:58:43
      Slowest loop: 92.65ms; fastest: 0.06ms
      === Storage ===
      Free file entries: 20
      SD card 0 not detected, interface speed: 37.5MBytes/sec
      SD card longest read time 0.0ms, write time 0.0ms, max retries 0
      === Move ===
      DMs created 125, segments created 28, maxWait 4419377ms, bed compensation in use: none, height map offset 0.000, ebfmin 0.00, ebfmax 1.00
      next step interrupt due in 31 ticks, disabled
      === DDARing 0 ===
      Scheduled moves 8432, completed 8429, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 76], CDDA state 3
      === DDARing 1 ===
      Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
      === Heat ===
      Bed heaters 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0
      Heater 0 is on, I-accum = 0.0
      Heater 1 is on, I-accum = 0.5
      === GCodes ===
      Movement locks held by null, null
      HTTP* is doing "M122" in state(s) 0
      Telnet is idle in state(s) 0
      File* is doing "G1 X-55.341000 Y-132.442001 E0.010550" in state(s) 0
      USB is idle in state(s) 0
      Aux is idle in state(s) 0
      Trigger* is idle in state(s) 0
      Queue* is idle in state(s) 0
      LCD is idle in state(s) 0
      SBC is idle in state(s) 0
      Daemon is idle in state(s) 0
      Aux2 is idle in state(s) 0
      Autopause is idle in state(s) 0
      File2* is idle in state(s) 0
      Queue2 is idle in state(s) 0
      Q0 segments left 1, axes/extruders owned 0x80000003
      Code queue 0 is empty
      Q1 segments left 0, axes/extruders owned 0x0000000
      Code queue 1 is empty
      === Filament sensors ===
      Extruder 0 sensor: ok
      === CAN ===
      Messages queued 93566, received 0, lost 0, boc 0
      Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 51988/0/0
      Tx timeouts 0,0,51987,0,0,41577 last cancelled message type 30 dest 127
      === SBC interface ===
      Transfer state: 5, failed transfers: 0, checksum errors: 0
      RX/TX seq numbers: 19497/19497
      SPI underruns 0, overruns 0
      State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x25ce8
      Buffer RX/TX: 192/1704-0, open files: 0
      === Duet Control Server ===
      Duet Control Server version 3.5.0-beta.4 (2023-06-09 10:49:49)
      File /opt/dsf/sd/gcodes/frieza_base.gcode is selected, processing
      File:
      Buffered code: G1 X-55.341 Y-132.442 E.01055
      Buffered code: G1 X-15.511 Y143.707 E14.62679
      Buffered code: G1 X-15.052 Y143.737 E.02411
      Buffered code: G1 X-54.903 Y-132.56 E14.63462
      Buffered code: G1 X-54.476 Y-132.754 E.02459
      Buffered code: G1 X-14.592 Y143.767 E14.64649
      Buffered code: G1 X-14.132 Y143.797 E.02417
      Buffered code: G1 X-54.047 Y-132.938 E14.65783
      Buffered code: G1 X-53.613 Y-133.088 E.02407
      Buffered code: G1 X-13.671 Y143.836 E14.66784
      Buffered code: G1 X-13.208 Y143.89 E.02444
      Buffered code: G1 X-53.181 Y-133.251 E14.67933
      Buffered code: G1 X-52.939 Y-133.352 E.01375
      Buffered code: G1 X-52.756 Y-133.46 E.01114
      Buffered code: G1 X-12.745 Y143.944 E14.69326
      Buffered code: G1 X-12.282 Y143.998 E.02444
      Buffered code: G1 X-52.327 Y-133.639 E14.7056
      Buffered code: G1 X-52.133 Y-133.707 E.01078
      Buffered code: G1 X-51.898 Y-133.827 E.01383
      Buffered code: G1 X-11.82 Y144.046 E14.7181
      Buffered code: G1 X-11.359 Y144.086 E.02426
      Buffered code: G1 X-51.462 Y-133.96 E14.72726
      Buffered code: G1 X-51.027 Y-134.101 E.02397
      Buffered code: G1 X-10.89 Y144.178 E14.7396
      Buffered code: G1 X-10.804 Y144.201 E.00467
      Buffered code: G1 X-10.43 Y144.207 E.01961
      Buffered code: G1 X-50.599 Y-134.287 E14.751
      Buffered code: G1 X-50.417 Y-134.365 E.01038
      Buffered code: G1 X-50.164 Y-134.432 E.01372
      Buffered code: G1 X-9.974 Y144.215 E14.7591
      Buffered code: G1 X-9.517 Y144.223 E.02396
      Buffered code: G1 X-49.73 Y-134.576 E14.76715
      Buffered codes: 1536 bytes total
      Code buffer space: 2392
      Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0
      Full transfers per second: 46.00, max time between full transfers: 101.6ms, max pin wait times: 58.8ms/18.7ms
      Codes per second: 37.80
      Maximum length of RX/TX data transfers: 7344/2256
      

      Any ideas?

      My 3D Printing YouTube Channel
      Better Living Through 3D Printing

      Follow me on Instagram and Twitter
      Instagram
      Twitter

      JoergS5undefined 1 Reply Last reply Reply Quote 0
      • JoergS5undefined
        JoergS5 @blt3dp
        last edited by

        @blt3dp if you mean M208 limits are not respected, for Delta kinematics according to the last sentence of https://docs.duet3d.com/User_manual/Reference/Gcodes#m208-set-axis-max-travel only the Z min is followed.
        "The M208 minimum Z value applies to deltas. The M208 XY min/max and Z max values don't."

        M208 XYZ limits are defining a cubic print area, delta has a (roughly) cylindric print area, so it would not make sense. Instead, the arm properties are used for calculation which regions are reachable or not.

        (if you're interested in analyzing the firmware source code, those checks are in the LimitPosition function of the kinematics and the check is done before a move is executed).

        1 Reply Last reply Reply Quote 0
        • blt3dpundefined
          blt3dp
          last edited by

          Understood with M208,

          But isn't the B value in M665 supposed to be a safe printing limit? From center I would expect either gcode moves or manual moves to not be able to move any farther than that limit. Regardless if the delta radius and arm length physically allow it, if I'm limiting it to less than, it should respect that no?

          My 3D Printing YouTube Channel
          Better Living Through 3D Printing

          Follow me on Instagram and Twitter
          Instagram
          Twitter

          JoergS5undefined 2 Replies Last reply Reply Quote 0
          • JoergS5undefined
            JoergS5 @blt3dp
            last edited by

            @blt3dp I don't see code beyond 150 in your M122 buffered code.

            E.g. X 55, Y 133:
            distance is sqrt( x * x + y * y) = 144, so below 150.

            blt3dpundefined 1 Reply Last reply Reply Quote 0
            • JoergS5undefined
              JoergS5 @blt3dp
              last edited by

              @blt3dp there is something additional: 3D print mode allows partial printing if you want to move outside the limits. It will print to the edge, but should issue a warning. (CNC mode doesn't allow it, cancels the move and issues an error message.) This behaviour may differ between different kinematics, I don't know whether it is true for Delta.

              1 Reply Last reply Reply Quote 0
              • blt3dpundefined
                blt3dp @JoergS5
                last edited by

                @JoergS5

                True, that particular job took up much of the print bed but not enough to push it past the printable radius. I think my main concern is with manually moving the effector and crashing things hanging off the effector like fans into the belts and towers.

                I guess my point would be, say a company wanted to use Duets in their delta printers sold commercially to end users, yet wanted to prevent any scenario like I described above, shouldn’t that be possible?

                My 3D Printing YouTube Channel
                Better Living Through 3D Printing

                Follow me on Instagram and Twitter
                Instagram
                Twitter

                JoergS5undefined dc42undefined 2 Replies Last reply Reply Quote 0
                • JoergS5undefined
                  JoergS5 @blt3dp
                  last edited by

                  @blt3dp this is IMHO a different question: whether it is possible to block executing "dangerous" commands like G1 H2 or G92, maybe through a user interface which allows only a G-Code subset. This should be answered by someone else than me.

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

                    @blt3dp said in RRF 3.5 beta 4 not respecting axis limits:

                    I guess my point would be, say a company wanted to use Duets in their delta printers sold commercially to end users, yet wanted to prevent any scenario like I described above, shouldn’t that be possible?

                    Normal moves beyond the bed radius (M665 B parameter) will be prevented unless you use M564. G30 probing moves outside the bed radius are permitted because they are sometimes needed for delta calibration.

                    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

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