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

    Issues with dwell timing and 1xd boards

    Scheduled Pinned Locked Moved
    General Discussion
    3
    12
    408
    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.
    • kj3dundefined
      kj3d @droftarts
      last edited by

      @droftarts

      Thanks for looking.

      ; General preferences
      M575 P1 S1 B57600 ; enable support for PanelDue
      G90 ; send absolute coordinates...
      M83 ; ...but relative extruder moves

      ; Wait a moment for the CAN expansion boards to start
      G4 S2

      ; Network

      M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP
      M586 P0 S1 ; enable HTTP
      M586 P1 S0 ; disable FTP
      M586 P2 S0 ; disable Telnet

      ; Drives
      M569 P24.0 S1 ; X
      M569 P31.0 S1 ; Y(first Y)
      M569 P32.0 S0 ; (second Y)
      M569 P23.0 S0 ; Z
      M569 P21.0 S1 ; First Extruder
      M569 P22.0 S1 ; Second Extruder
      M569 P10.0 S0 ; U(V lift 1)
      M569 P11.0 S0 ; V (V lift 2)
      M569 P12.0 S0 ; W (V lift 3)
      M569 P13.0 S0 ; A (V lift 4)

      M569.1 P10.0 T2 C2048 R100 I0 D0
      M569.1 P11.0 T2 C2048 R100 I0 D0
      M569.1 P12.0 T2 C2048 R100 I0 D0
      M569.1 P13.0 T2 C2048 R100 I0 D0
      M569.1 P24.0 T2 C1000 R200 I0 D0 A0.0 V0

      M569.7 P10.0 C"out1"
      M569.7 P11.0 C"out1"
      M569.7 P12.0 C"out1"
      M569.7 P13.0 C"out1"

      M564 H0

      M584 X24.0 Y31.0:32.0 Z23.0 E21.0:22.0 U10.0:11.0:12.0:13.0 ; set drive mapping
      M350 X16 Y16 Z32 E16:16 U16 I1 ; configure microstepping with interpolation
      M92 X160 Y519.64 Z13072 E684.00:684.00 U640 ; set steps per mm
      M566 X200.00 Y100.00 Z400 E684.00:684.00 U600 ; set maximum instantaneous speed changes (mm/min)
      M203 X20000.00 Y200000.00 Z800 E7200.00:7200.00 U1000 ; set maximum speeds (mm/min)0
      M201 X200.00 Y1000.00 Z500 E3000:3000.00 U500 ; set accelerations (mm/s^2)
      M906 Z1000 I30 ; set motor currents (mA) and motor idle factor in per cent
      M906 X2000 I60
      ;M906 Y5000 I60
      M906 E1300 I10
      M906 U5000 I10

      M84 S60

      ; Axis Limits
      M208 X0 Y0 Z0 U0 S1 ; set axis minima
      M208 X1050 Y1200 Z200 U1150 S0 ; set axis maxima

      ; Endstops
      M574 X0 S1 P"24.io0.in"
      M574 Y0 S1 P"31.io0.in+32.io0.in"
      M574 Z2 S1 P"23.io0.in"
      M574 U0 S1 P"10.io0.in+11.io0.in+12.io0.in+13.io0.in"

      ; Z-Probe
      M950 S0 C"21.io0.out" ; create servo pin 0 for BLTouch
      M558 P9 C"21.io0.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds
      G31 P500 X0 Y0 Z2.5 ; set Z probe trigger value, offset and trigger height
      M557 X15:215 Y15:195 S20 ; define mesh grid
      M950 S0 C"21.io0.out" ; create servo pin 0 for BLTouch
      M558 P9 C"21.io0.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds
      G31 P500 X0 Y0 Z2.5 ; set Z probe trigger value, offset and trigger height
      M557 X15:215 Y15:195 S20 ; define mesh grid

      ; Heaters
      M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
      M950 H0 C"out1" T0 ; create bed heater output on out1 and map it to sensor 0
      M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit
      M140 H0 ; map heated bed to heater 0
      M143 H0 S120 ; set temperature limit for heater 0 to 120C
      M308 S1 P"21.temp0" Y"thermistor" T500000 B4723 C1.196220e-7 ; configure sensor 1 as thermistor on pin 121.temp0
      M950 H1 C"21.out0" T1 ; create nozzle heater output on 21.out0 and map it to sensor 1
      M307 H1 R2.802 K0.427:0.000 D9.65 E1.35 S1.00 B0 V24.1
      M143 H1 S350 ; set temperature limit for heater 1 to 350C
      M308 S2 P"22.temp0" Y"thermistor" T500000 B4723 C1.196220e-7 ; configure sensor 2 as thermistor on pin 22.temp0
      M950 H2 C"22.out0" T2 ; create nozzle heater output on 22.out0 and map it to sensor 2
      M307 H2 R2.864 K0.486:0.000 D8.37 E1.35 S1.00 B0 V24.2
      M143 H2 S350 ; set temperature limit for heater 2 to 350C

      ; Fans
      M950 F0 C"21.out2" Q500 ; create fan 0 on pin 121.out1 and set its frequency
      M106 P0 S1 H1 T35 ; set fan 0 value. Thermostatic control is turned on
      M950 F1 C"22.out2" Q500 ; create fan 1 on pin 122.out1 and set its frequency
      M106 P1 S1 H2 T35 ; set fan 1 value. Thermostatic control is turned on

      M950 F3 C"23.out0" Q500 ; create fan 3 on pin 23.out0 and set its frequency
      M950 F4 C"24.out0" Q500 ; create fan 4 on pin 24.out0 and set its frequency
      M950 F5 C"31.out0" Q500 ; create fan 5 on pin 31.out0 and set its frequency
      M950 F6 C"32.out0" Q500 ; create fan 6 on pin 32.out0 and set its frequency
      M950 F8 C"10.out0" Q500 ; create fan 10 on pin 10.out0 and set its frequency (V Lift)
      M950 F9 C"11.out0" Q500 ; create fan 11 on pin 11.out0 and set its frequency
      M950 F10 C"12.out0" Q500 ; create fan 12 on pin 12.out0 and set its frequency
      M950 F11 C"13.out0" Q500 ; create fan 13 on pin 13.out0 and set its frequency

      M106 P3 S255
      M106 P4 S255

      M106 P8 S255
      M106 P9 S255
      M106 P10 S255
      M106 P11 S255

      ;MCU Fan
      M950 F7 C"!out4+out4.tach" A"MCU" Q500
      M308 S3 Y"mcu-temp" P"0.dummy" A"MB MCU"
      M106 P7 H7 T33:45 L0.3

      ;MCU Temp Z
      M308 S4 Y"mcu-temp" P"23.dummy" A"Z"

      ;MCU Temp X Canbus
      M308 S5 Y"mcu-temp" P"24.dummy" A"X"

      ;MCU Temp Y1 fan Canbus 31
      M308 S8 Y"mcu-temp" P"31.dummy" A"Y1"
      M106 P5 H5 T20:50 L0.3

      ;MCU Fan Canbus 32
      M308 S9 Y"mcu-temp" P"32.dummy" A"Y2"
      M106 P6 H6 T20:50 L0.3

      ;MCU Temp V Canbus
      M308 S10 Y"mcu-temp" P"10.dummy" A"V10"
      M308 S11 Y"mcu-temp" P"11.dummy" A"V11"
      M308 S12 Y"mcu-temp" P"12.dummy" A"V12"
      M308 S13 Y"mcu-temp" P"13.dummy" A"V13"

      ; Tools
      M563 P0 S"Main" D0 H1 F0 ; define tool 0
      G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
      G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
      M563 P1 S"Support" D1 H2 F0 ; define tool 1
      G10 P1 X0 Y0 Z0 ; set tool 1 axis offsets
      G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C

      ; Custom settings T0 Autoload and unload
      M950 J1 C"^!21.io2.in" ; define logical input for filament auto load
      M581 P1 T2 S0 R0 ;define trigger for filament auto load triggers trigger2.g
      M950 J2 C"^!21.io3.in" ; define logical input for filament unload
      M581 P2 T3 S0 R0 ; define trigger for filament auto load triggers trigger3.g

      ; Custom settings T1 Autoload and unload
      M950 J3 C"^!22.io2.in" ; define logical input for filament auto load
      M581 P3 T4 S0 R0 ;define trigger for filament auto load triggers trigger4.g
      M950 J4 C"^!22.io3.in" ; define logical input for filament unload
      M581 P4 T5 S0 R0 ; define trigger for filament auto load triggers trigger5.g

      1 Reply Last reply Reply Quote 0
      • kj3dundefined
        kj3d @droftarts
        last edited by

        @droftarts

        M115

        FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6HC FIRMWARE_VERSION: 3.5.0-rc.1 ELECTRONICS: Duet 3 MB6HC v1.01 FIRMWARE_DATE: 2023-08-31 16:19:24

        M115 B31
        Duet EXP1XD firmware version 3.5.0-rc.1 (2023-08-31 16:26:49)

        M115 B32
        Duet EXP1XD firmware version 3.5.0-rc.1 (2023-08-31 16:26:49)

        1 Reply Last reply Reply Quote 0
        • kj3dundefined
          kj3d @droftarts
          last edited by

          @droftarts

          M122
          === Diagnostics ===
          RepRapFirmware for Duet 3 MB6HC version 3.5.0-rc.1 (2023-08-31 16:19:24) running on Duet 3 MB6HC v1.01 (standalone mode)
          Board ID: 08DJM-956BA-NA3TJ-6JKDG-3SS6M-TUBAV
          Used output buffers: 3 of 40 (22 max)
          === RTOS ===
          Static ram: 154852
          Dynamic ram: 122464 of which 0 recycled
          Never used RAM 65676, free system stack 148 words
          Tasks: NETWORK(1,ready,38.4%,155) ETHERNET(5,nWait,0.1%,319) HEAT(3,nWait,0.0%,325) Move(4,nWait,0.0%,216) CanReceiv(6,nWait,0.2%,794) CanSender(5,nWait,0.0%,330) CanClock(7,delaying,0.0%,349) TMC(4,nWait,8.3%,59) MAIN(1,running,52.9%,444) IDLE(0,ready,0.0%,30), total 100.0%
          Owned mutexes:
          === Platform ===
          Last reset 00:10:41 ago, cause: power up
          Last software reset at 2023-12-04 17:11, reason: User, Gcodes spinning, available RAM 65652, slot 2
          Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a
          Error status: 0x00
          Aux0 errors 0,0,0
          MCU temperature: min 18.5, current 29.4, max 29.4
          Supply voltage: min 24.1, current 24.1, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes
          12V rail voltage: min 12.0, current 12.0, max 12.1, under voltage events: 0
          Heap OK, handles allocated/used 99/0, heap memory allocated/used/recyclable 2048/4/4, gc cycles 0
          Events: 0 queued, 0 completed
          Driver 0: standstill, SG min n/a, mspos 8, reads 13165, writes 11 timeouts 0
          Driver 1: standstill, SG min n/a, mspos 8, reads 13166, writes 11 timeouts 0
          Driver 2: standstill, SG min n/a, mspos 8, reads 13166, writes 11 timeouts 0
          Driver 3: standstill, SG min n/a, mspos 8, reads 13166, writes 11 timeouts 0
          Driver 4: standstill, SG min n/a, mspos 8, reads 13166, writes 11 timeouts 0
          Driver 5: standstill, SG min n/a, mspos 8, reads 13166, writes 11 timeouts 0
          Date/time: 2023-12-04 17:30:53
          Slowest loop: 13.67ms; fastest: 0.08ms
          === Storage ===
          Free file entries: 20
          SD card 0 detected, interface speed: 25.0MBytes/sec
          SD card longest read time 2.9ms, write time 0.0ms, max retries 0
          === Move ===
          DMs created 125, segments created 6, maxWait 545988ms, bed compensation in use: none, height map offset 0.000, ebfmin 0.00, ebfmax 0.00
          no step interrupt scheduled
          Moves shaped first try 0, on retry 0, too short 0, wrong shape 0, maybepossible 0
          === DDARing 0 ===
          Scheduled moves 17, completed 17, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 1], CDDA state -1
          === 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
          === GCodes ===
          Movement locks held by null, null
          HTTP is idle in state(s) 0
          Telnet is idle in state(s) 0
          File is idle 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 0, axes/extruders owned 0x0000001
          Code queue 0 is empty
          Q1 segments left 0, axes/extruders owned 0x0000000
          Code queue 1 is empty
          === CAN ===
          Messages queued 5953, received 107668, lost 0, boc 0
          Longest wait 13ms for reply type 6018, peak Tx sync delay 101, free buffers 50 (min 48), ts 3209/3208/0
          Tx timeouts 0,0,0,0,0,0
          === Network ===
          Slowest loop: 13.02ms; fastest: 0.03ms
          Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0)
          HTTP sessions: 1 of 8
          = Ethernet =
          Interface state: active
          Error counts: 0 0 0 1 0 0
          Socket states: 5 2 2 2 2 0 0 0
          === Multicast handler ===
          Responder is inactive, messages received 0, responses 0

          kj3dundefined 1 Reply Last reply Reply Quote 0
          • kj3dundefined
            kj3d @kj3d
            last edited by

            M122 B31
            Diagnostics for board 31:
            Duet EXP1XD firmware version 3.5.0-rc.1 (2023-08-31 16:26:49)
            Bootloader ID: SAMC21 bootloader version 2.3 (2021-01-26b1)
            All averaging filters OK
            Never used RAM 5136, free system stack 71 words
            Tasks: Move(3,nWait,0.0%,87) HEAT(2,nWait,0.1%,125) CanAsync(5,nWait,0.0%,55) CanRecv(3,nWait,0.2%,76) CanClock(5,nWait,0.0%,67) MAIN(1,running,80.3%,421) IDLE(0,ready,0.0%,40) AIN(2,nWait,19.4%,112), total 100.0%
            Last reset 00:11:44 ago, cause: power up
            Last software reset data not available
            Driver 0: pos -789853, 519.6 steps/mm, steps req 0 done 2998277
            Moves scheduled 10, completed 10, in progress 0, hiccups 233422, segs 15, step errors 0, maxPrep 673, maxOverdue 12203598, maxInc 2443085, mcErrs 0, gcmErrs 0, ebfmin 0.00 max 0.00
            Peak sync jitter 1/6, peak Rx sync delay 462, resyncs 0/0, no timer interrupt scheduled
            VIN voltage: min 17.6, current 24.3, max 24.7
            MCU temperature: min 18.2C, current 21.5C, max 21.7C
            Last sensors broadcast 0x00000100 found 1 35 ticks ago, 0 ordering errs, loop time 0
            CAN messages queued 11294, send timeouts 0, received 31655, lost 0, free buffers 18, min 17, error reg 0
            dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 359, adv 35880/36912

            kj3dundefined 1 Reply Last reply Reply Quote 0
            • kj3dundefined
              kj3d @kj3d
              last edited by

              M122 B32
              Diagnostics for board 32:
              Duet EXP1XD firmware version 3.5.0-rc.1 (2023-08-31 16:26:49)
              Bootloader ID: SAMC21 bootloader version 2.3 (2021-01-26b1)
              All averaging filters OK
              Never used RAM 5160, free system stack 73 words
              Tasks: Move(3,nWait,0.0%,83) HEAT(2,nWait,0.1%,131) CanAsync(5,nWait,0.0%,55) CanRecv(3,nWait,0.2%,76) CanClock(5,nWait,0.0%,67) MAIN(1,running,80.3%,421) IDLE(0,ready,0.0%,40) AIN(2,nWait,19.4%,112), total 100.0%
              Last reset 00:12:30 ago, cause: power up
              Last software reset data not available
              Driver 0: pos -789853, 519.6 steps/mm, steps req 0 done 2998360
              Moves scheduled 10, completed 10, in progress 0, hiccups 233461, segs 15, step errors 0, maxPrep 679, maxOverdue 12203782, maxInc 2442506, mcErrs 0, gcmErrs 0, ebfmin 0.00 max 0.00
              Peak sync jitter 0/5, peak Rx sync delay 360, resyncs 0/0, no timer interrupt scheduled
              VIN voltage: min 17.5, current 24.3, max 24.6
              MCU temperature: min 15.4C, current 17.0C, max 17.3C
              Last sensors broadcast 0x00000200 found 1 102 ticks ago, 0 ordering errs, loop time 0
              CAN messages queued 12030, send timeouts 0, received 33729, lost 0, free buffers 18, min 17, error reg 0
              dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 438, adv 36171/37181

              droftartsundefined 1 Reply Last reply Reply Quote 0
              • droftartsundefined
                droftarts administrators @kj3d
                last edited by

                @kj3d thanks for all the info. I think this will be one for @dc42 to have a look at.

                Ian

                Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                1 Reply Last reply Reply Quote 0
                • droftartsundefined
                  droftarts administrators @kj3d
                  last edited by

                  @kj3d said in Issues with dwell timing and 1xd boards:

                  In order to configure the servos a simple macro was setup

                  Can you post the macro as well, please?

                  Ian

                  Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                  kj3dundefined 1 Reply Last reply Reply Quote 0
                  • kj3dundefined
                    kj3d @droftarts
                    last edited by kj3d

                    @droftarts

                    Thanks, please see below the macro used for testing Y axis. (number of cycles at line 3 varied between 4 and 100 - dwell issue is present in every cycle)

                    e984d0cc-bb99-47d5-8c90-19d92a5c0657-image.png

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

                      @kj3d thanks for the details.

                      First, please update all boards to the firmware at https://www.dropbox.com/scl/fo/gaxzegafmnmagaefo9mgc/h?rlkey=hk4wpttdje76oews8zkuh86q3&dl=0 and test again. Caution, this is not an official release so use it with care.

                      If the problem persists, then in order to identify the cause we need to see whether the uneven delay on the second motor is caused by the servo drive, the 1XD, or the firmware. So please try each of the following individually and let me know the result:

                      1. In your M584 command change Y31.0:32.0 to Y32.0:31.0 and reboot. Does the problem stay with the same motor, or does it move to the other one?

                      2. If the problem stays with the same motor, swap the CAN addresses of the boards, e.g. use M952 to change board 31 to address 99, then change board 32 to be 31, then change board 99 to be 32. Then reboot and test again. Does the problem stay with the same motor?

                      3. If for both of the above the problem stays with the same motor, swap the connections between the servo drives and the 1XD boards. Does the problem move with the servo drive, or move to the other drive (i.e. stay with the 1XD board)?

                      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

                      kj3dundefined 1 Reply Last reply Reply Quote 0
                      • kj3dundefined
                        kj3d @dc42
                        last edited by kj3d

                        @dc42

                        Thank you for your reply and an insight into the latest firmware. The good news is that the firmware has not caused any obvious issues (we are always very wary / cautious)

                        However the dwell timing issue is still present. I have been through the three points you listed and it has not cured the issue.

                        The most significant "controlling" factor seems to be the direction called in the M569 call. after dwell the motor with S1 starts earlier than the motor with S0.

                        M569 P31.0 S1 ; Y (first Y)
                        M569 P32.0 S0 ; Y (second Y)

                        The Clearpath servos give us the option to reverse motor direction in the firmware of the servo (we can then run both Y M569 lines as S1 or S0 - that gets round the issue on an operational level but does require a service engineer to configure a motor dependent on if its on the left or right side of the gantry. We would prefer not to do that (it increases the risk of an error during replacement of a servo - should it be needed. It seems much simpler to take a stock motor and simply fit it rather than having to use left hand or right hand direction motors)

                        We are fairly certain that the issue is Firmware related rather than a fault on the 1XD boards.

                        How is the dwell period controlled for timing from the hardware?

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