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

    UVW movement issues with [3.6.0]

    Scheduled Pinned Locked Moved
    Firmware installation
    4
    13
    325
    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.
    • dwuk3dundefined
      dwuk3d
      last edited by dwuk3d

      I've been using 3.5.4 fairly happily for several months with a CoreXY + UVW printer, and have not had any kinematics issues.

      I moved to 3.6.0 yesterday and I have two issues.

      1. When doing a multi motion system print my UVW axis extruders can't print squares in some parts of the print - they are just coming out as diagonal lines
      2. I am finding some intermittent homing issues with V (this dual motor 2nd Y axis) - with the W IDEX motor stopping working.

      Diagnostic info here - or in my main SV08 thread here - https://forum.duet3d.com/post/355968

      M122
      === Diagnostics ===
      RepRapFirmware for Duet 3 MB6HC version 3.6.0 (2025-05-25 08:05:42) running on Duet 3 MB6HC v1.02 or 1.02a (standalone mode)
      Board ID: 0JD4M-958L1-M2NS0-7JTDG-3SN6K-91FKZ
      Used output buffers: 1 of 40 (36 max)
      === RTOS ===
      Static ram: 137420
      Dynamic ram: 134416 of which 240 recycled
      Never used RAM 71764, free system stack 150 words
      Tasks: NETWORK(1,ready,30.5%,153) ETHERNET(5,nWait 7,0.3%,315) HEAT(3,nWait 6,0.0%,335) Move(4,nWait 6,0.0%,209) TMC(4,nWait 6,3.1%,341) CanReceiv(6,nWait 1,0.1%,772) CanSender(5,nWait 7,0.0%,325) CanClock(7,delaying,0.0%,350) MAIN(1,running,66.0%,103) IDLE(0,ready,0.0%,29) USBD(3,blocked,0.0%,144), total 100.0%
      Owned mutexes:
      === Platform ===
      Last reset 00:23:05 ago, cause: software
      Last software reset at 2025-06-06 07:27, reason: User, Gcodes spinning, available RAM 69292, slot 0
      Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a
      Error status: 0x00
      MCU temperature: min 44.8, current 49.9, max 50.0
      Supply voltage: min 24.1, current 24.2, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes
      12V rail voltage: min 12.0, current 12.2, max 12.4, under voltage events: 0
      Heap OK, handles allocated/used 99/42, heap memory allocated/used/recyclable 2048/1588/1092, gc cycles 0
      Events: 0 queued, 0 completed
      Date/time: 2025-06-06 07:50:30
      Slowest loop: 11.44ms; fastest: 0.05ms
      === Storage ===
      Free file entries: 19
      SD card 0 detected, requested/actual speed: 25.0/25.0MBytes/sec
      SD card longest read time 2.9ms, write time 3.9ms, max retries 0
      === Move ===
      Segments created 9, maxWait 354248ms, bed comp in use: none, height map offset 0.000, hiccups added 0/0 (0.00/0.00ms), max steps late 0, ebfmin 0.00, ebfmax 0.00
      Pos req/act/dcf: 13160.00/13160/0.00 10840.00/10840/0.00 8001.00/8001/0.00 37009.00/37009/-0.00 23151.00/23151/0.00 405.00/405/-0.00 0.00/1/-1.00 9600.00/9600/0.00 0.00/1/-1.00
      Next step interrupt due in 269 ticks, disabled
      Driver 0: standstill, SG min 0, mspos 24, reads 18307, writes 39 timeouts 1
      Driver 1: standstill, SG min 0, mspos 632, reads 18307, writes 39 timeouts 1
      Driver 2: standstill, SG min 0, mspos 136, reads 18307, writes 39 timeouts 1
      Driver 3: standstill, SG min 0, mspos 968, reads 18306, writes 40 timeouts 1
      Driver 4: standstill, SG min 0, mspos 648, reads 18306, writes 40 timeouts 1
      Driver 5: standstill, SG min 0, mspos 616, reads 18307, writes 39 timeouts 1
      Phase step loop runtime (us): min=0, max=370, frequency (Hz): min=539, max=10000
      === DDARing 0 ===
      Scheduled moves 236, completed 236, LaErrors 0, Underruns [0, 0, 0]
      Segments left 0, axes/extruders owned 0x80000033, drives owned 0x80000023
      Code queue is empty
      === DDARing 1 ===
      Scheduled moves 0, completed 0, LaErrors 0, Underruns [0, 0, 0]
      Segments left 0, axes/extruders owned 0x00000000, drives owned 0x00000000
      Code queue is empty
      === Heat ===
      Bed heaters 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1 -1 -1 -1 -1, ordering errs 0
      Heater 0 is on, I-accum = 0.0
      Heater 1 is on, I-accum = 0.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
      === CAN ===
      Messages queued 12667, received 94565, lost 0, ignored 0, errs 0, boc 0
      Longest wait 2ms for reply type 6031, peak Tx sync delay 273, free buffers 50 (min 48), ts 6567/6566/0
      Tx timeouts 0,0,0,0,0,0
      === Network ===
      Slowest loop: 44.16ms; 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
      === Multicast handler ===
      Responder is inactive, messages received 0, responses 0
      = Ethernet =
      Interface state: active
      Error counts: 0 0 0 1 0 0
      Socket states: 6 2 2 2 2 2 0 0 0
      === WiFi ===
      Interface state: disabled
      Module is disabled
      Failed messages: pending 0, notrdy 0, noresp 0
      Socket states: 0 0 0 0 0 0 0 0
      
      M669
      Kinematics is CoreXY, no segmentation, modified matrix:
      1.00 1.00 0 0 0 0 0 0 0
      1.00 -1.00 0 0 0 0 0 0 0
      0 0 1.00 0 0 0 0 0 0
      0 0 0 1.00 0 0 0 0 0
      0 0 0 1.00 1.00 -1.00 0 0 0
      0 0 0 0 0 1.00 0 0 0
      0 0 0 0 0 0 1.00 0 0
      0 0 0 0 0 0 0 1.00 0
      0 0 0 0 0 0 0 0 1.00
      06/06/2025, 07:41:18	M584
      Driver assignments: X0.3 Y0.4 Z0.1:0.2:0.0:1.3 U1.0 V1.5:1.6 W1.1 (r)(c)A1.4 (r)(c)B0.5 (r)(c)D1.2 E121.0:122.0:123.0, 9 axes visible
      06/06/2025, 07:40:45	M913
      Motor current % of normal - X:100, Y:100, Z:100, U:100, V:100, W:100, A:100, B:100, D:100, E:100:100:100
      06/06/2025, 07:38:45	M906
      Motor current (mA) - X:800, Y:800, Z:800, U:800, V:800, W:800, A:750, B:750, D:750, E:800:800:800, idle factor 30%, timeout 30.0 sec
      
      ; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v3.5.10 on Wed Jan 29 2025 10:20:21 GMT+0000 (Greenwich Mean Time)
      
      ; General
      G90 ; absolute coordinates
      M83 ; relative extruder moves
      M550 P"Duet 3" ; set hostname
      
      ; Network
      M552 P0.0.0.0 S1 ; configure Ethernet adapter
      M586 P0 S1 ; configure HTTP
      M586 P1 S1 ; configure FTP
      
      ; Wait a moment for the CAN expansion boards to become available
      G4 S2
      
      ; Smart Drivers
      M569 P0.0 S1 D2 ; driver 0.0 goes forwards (Z axis)
      M569 P0.1 S1 D2 ; driver 0.1 goes forwards (Z axis)
      M569 P0.2 S0 D2 ; driver 0.2 goes backwards (Z axis)
      M569 P0.3 S1 D2 ; driver 0.3 goes forwards (X axis)
      M569 P0.4 S0 D2 ; driver 0.4 goes backwards (Y axis)
      M569 P1.3 S1 D2 ; driver 0.5 goes backwards (Z axis) - changed to 1.3 forwards
      
      M569 P1.0 S0 D2; driver 1.0 goes backwards (U axis)
      M569 P1.1 S0 D2 ; driver 1.1 goes backwards W axis)
      M569 P1.4 S0 D2 ; Z-hopper 2
      M569 P0.5 S1 D2 ; Z-hopper 1
      M569 P1.5 S0 D2 ; VH Axis Left
      M569 P1.6 S1 D2 ; VH Axis Right
      M569 P1.2 S1 D2 ; U AXIS Z Hopper
      
      M569 P121.0 S0 D2 ; driver 121.0 goes backwards (extruder 0).  X
      M569 P122.0 S0 D2 ; driver 122.0 goes backwards (extruder 1).  C
      M569 P123.0 S0 D2 ; driver 123.0 goes backwards (extruder 2).  U
      
      ;M569 P124.0 S0 D2 ; driver 124.0 goes backwards (extruder 2).  a
      ;M569 P125.0 S0 D2 ; driver 125.0 goes backwards (extruder 2).  b
      
      ; Motor Idle Current Reduction
      M906 I30 ; set motor current idle factor
      M84 S30 ; set motor current idle timeout
      
      ; Axes
      M584 X0.3 Y0.4 Z0.1:0.2:0.0:1.3 U1.0 V1.5:1.6 W1.1 A1.4 B0.5 D1.2 a0.1 b0.2; set axis mapping
      M350 X16 Y16 Z16 U16 V16 W16 A16 B16 D16 I1 ; configure microstepping with interpolation
      M906 X800 Y800 Z800 U800 V800 W800 A750 B750 D750 a100 b100 ; set axis driver currents
      ; A - 1.8 degree, 0.7mm pitch - 200*16/0.7 = 4571
      ; A - 1.8 degree, 1mm pitch - 200*16 = 3200
      M92 X80 Y80 Z533.33 U80 V80 W80 A3200 B3200 D4571  ; configure steps per mm
      if exists(global.vMin) == false
          global vMin = 120
          global vMax = 340
          global yMin = -5
          global yMax = 210
      M208 X0:327 Y0:210 Z0:300 U3:216 V120:329.39 A0:4 B0:3 W120:324.87 D0:3.5 a0:4 b0:4; set minimum and maximum axis limits
      
      M566 X540 Y540 Z100 U540 V540 W540 A100 B100 D100 ; set maximum instantaneous speed changes (mm/min)
      M203 X{350*60} Y{350*60} Z{20*60} U{350*60} V{350*60} W{350*60} A{20*60} B{20*60}   D{10*60}; set maximum speeds (mm/min)
      ;M203 X{100*60} Y{100*60} Z{10*60} U{100*60} V{100*60} W{100*60} A{10*60} B{10*60}   D{10*60}; set maximum speeds (mm/min)
      if !exists(global.xyMaxFeed)
          global xyMaxFeed = 0
      set global.xyMaxFeed = 21000
      
      ;M201 X2000 Y2000 Z500 U2000 V2000 W2000 A1000 B1000 D1000 ; set accelerations (mm/s^2)
      M201 X6000 Y6000 Z500 U6000 V6000 W6000 A500 B500 D500 ; set accelerations (mm/s^2)
      
      ; Extruders
      M584 E121.0:122.0:123.0 ; set extruder mapping
      M350 E16:16:16 I1 ; configure microstepping with interpolation
      M906 E800:800:800 ; set extruder driver currents
      M92 E492:492:492 ; configure steps per mm
      M566 E120:120:120 ; set maximum instantaneous speed changes (mm/min)
      M203 E{30*60}:{30*60}:{30*60} ; set maximum speeds (mm/min)
      M201 E250:250:250 ; set accelerations (mm/s^2)
      
      ;M566 E60:60:60 ; set maximum instantaneous speed changes (mm/min)
      ;M203 E{15*60}:{15*60}:{15*60} ; set maximum speeds (mm/min)
      ;M201 E125:125:125 ; set accelerations (mm/s^2)
      
      ; Kinematics
      ;M669 K8 ; configure CoreXYUV kinematics
      M669 K1 ; configure CoreXY kinematics
      ;     X:Y:Z: U: V: W:A:B:D
      M669 V0:0:0: 1: 1:-1:0:0:0
      
      
      
      ; Probes
      M558 K0 P8 C"121.io1.in" H5 F1200:300 T18000 ; configure unfiltered digital probe via slot #0
      if exists(global.probeK0) == false
          global probeK0 = 2.5
          global probeK1 = 2.1
      G31 P500 X-17 Y10 Z2.5 ; set Z probe trigger value, offset and trigger height
      M558 K1 P8 C"122.io1.in" H5 F1200:300 T18000 ; configure unfiltered digital probe via slot #1
      G31 K1 P500 U-17 V10 Z2.1 ; set Z probe trigger value, offset and trigger height
      M558 K2 P8 C"!121.io2.in" H1 F300 T300 ; configure unfiltered digital probe via slot #2 B Axis
      G31 K2 P500 X0 Y0 Z-2.5 B0 ;   B Axis Optical Probe
      M558 K3 P8 C"io3.in" H1 F300 F300;   Ball Probe
      
      
      
      
      ; Endstops
      M574 X1 S3 ; configure X axis endstop
      ; M574 Y1 S3 ; configure Y axis endstop
      M574 Y1 P"io8.in" S1 ; configure X axis to B axis optical probe
      M574 Z1 S2 K0; configure Z axis endstop
      M574 W2 P"!122.io0.in" S1 ; configure C axis endstop - dummy end stop
      M574 U2 P"!123.io0.in" S1 ; configure U axis endstop - dummy end stop
      
      M574 V2 P"io4.in" S1 ; V Axis optical
      
      M574 B1 S2 K2
      M574 A1 P"122.io2.in" S1 ; configure A axis endstop 
      M574 D1 P"123.io2.in" S1 ; configure D axis endstop 
      ;    122.io3.in - dummy endstop when A swapped out
      
      
      ; Sensors
      M308 S0 P"temp0" Y"thermistor" A"Heated Bed" T100000 B4725 C7.06e-8 ; configure sensor #0
      M308 S1 P"121.temp0" Y"thermistor" A"Nozzle" T110000 B4487 C6.95777e-8 ; configure sensor #1
      M308 S2 P"122.temp0" Y"thermistor" A"Nozzle2" T110000 B4487 C6.95777e-8 ; configure sensor #2
      M308 S3 P"123.temp0" Y"thermistor" A"Nozzle3" T110000 B4487 C6.95777e-8 ; configure sensor #3
      
      ; Heaters
      M950 H0 C"out0" T0 ; create heater #0
      M143 H0 P0 T0 C0 S105 A0 ; configure heater monitor #0 for heater #0
      M307 H0 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #0
      M950 H1 C"121.out0" T1 ; create heater #1
      M143 H1 P0 T1 C0 S305 A0 ; configure heater monitor #0 for heater #1
      M307 H1 R6.387 K1.184:0.189 D1.91 E1.35 S1.00 B0 V24.5
      ;M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #1
      M950 H2 C"122.out0" T2 ; create heater #2
      M143 H2 P0 T2 C0 S305 A0 ; configure heater monitor #0 for heater #2
      ;M307 H2 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #2
      M307 H2 R6.946 K0.880:0.127 D1.68 E1.35 S1.00 B0 V23.9
      M950 H3 C"123.out0" T3 ; create heater #3
      M143 H3 P0 T3 C0 S305 A0 ; configure heater monitor #0 for heater #3
      M307 H3 R8.957 K0.898:0.044 D1.24 E1.35 S1.00 B0 V24.3
      ;M307 H3 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #3
      
      ; Heated beds
      M140 P0 H0 ; configure heated bed #0
      
      ; Fans
      M950 F0 C"121.out2+out2.tach" ; create fan #0
      M106 P0 S0 L0 X1 B0.1 ; configure fan #0
      M950 F1 C"121.out1+out1.tach" ; create fan #1
      M106 P1 C"Hotend" S0 B0.1 H1 T45 ; configure fan #1
      M950 F2 C"122.out2+out2.tach" ; create fan #2
      M106 P2 C"E2Cool" S0 L0 X1 B0.1 ; configure fan #2
      M950 F3 C"122.out1+out1.tach" ; create fan #3
      M106 P3 C"Hotend2" S0 B0.1 H2 T45 ; configure fan #3
      M950 F4 C"123.out2+out2.tach" ; create fan #4
      M106 P4 C"E3Cool" S0 L0 X1 B0.1 ; configure fan #4
      M950 F5 C"123.out1+out1.tach" ; create fan #5
      M106 P5 C"Hotend3" S0 B0.1 H3 T45 ; configure fan #5
      
      ; Tools
      ;     X:Y:Z:U: V:W:A:B:C:D:a :b 
      ;     0 1 2 3. 4 5 6 7 8 9 10 11
      
      
      M563 P0 D0 H1 F0 ; create tool #0.    XYB
      M568 P0 R0 S0 ; set initial tool #0 active and standby temperatures
      ;M563 P1 D1 H2 F2 ; create tool #1
      
      ;Tool T1 - Left Nozzle - 2nd Gantry as X and Y.  UVD
      ;M563 P1 D2 H3 F4
      ;M563 P1 D2 X3 Y4 H3 F4
      M563 P1 D2 X10 Y11 H3 F4
      G10 P1 X0 Y0 U0 V0 S0 R0
      M568 P1 R0 S0 ; set initial tool #1 active and standby temperatures
      
      ;Tool T2 - Right Nozzle 2nd Gantry as X and Y.   WXA
      ;M563 P2 D1 H2 F2
      ;M563 P2 D1 X5 Y4 H2 F2
      M563 P2 D1 X10 Y11 H2 F2
      G10 P2 X0 Y0 U0 V0 S0 R0
      M568 P2 R0 S0 ; set initial tool #1 active and standby temperatures
      
      
      ; T3 - duplicate mode
      M563 P3 D0:1 H1:2 X0:3 Y1:4 F0:1
      G10 P3 X0 Y0 U0 V-150 S0 R0
      M567 P3 E1:1
      M568 P3 S1
      
      
      ; Miscellaneous
      
      ; Custom settings
      M915 X Y U V  R0 F0
      M671 X410:-60:-60:410 Y420:-10:420:-10 S7
      M307 H1 R7.427 K0.701:0.030 D1.50 E1.35 S1.00 B0 V24.5
      M307 H2 R7.020 K0.857:0.148 D1.65 E1.35 S1.00 B0 V24.0
      M307 H0 R0.527 K0.163:0.000 D5.70 E1.35 S1.00 B0
      M557 X20:300 Y20:220 S40
      
      M950 S1 C"122.io0.out"
      M280 P1 S60  ; Set Servo
      if exists(global.servo1pos) == false
          global servo1pos = 60
          global probeAngle = 162
          global probeOut = 80
          global probeIn = 165
          global probeSpeed = 1
      
      M950 S5 C"1.io1.out"  ; Probe Servo
      
      M280 P5 S162  ; Set Servo
      M42 P5 S0 ; Servo Off
      
      
      ; Electro Magnet
      M950 P4 C"1.out1"
      M42 P4 S0
      
      
      ;M42 P1 S0
      
      
      ; Allow movement without homing
      
      ;M564 S0 H0
      
      
      
      
      ; Backlash compensation
      M425 U0.1 V0.1 S1
      
      ;Secondary Queue Length
      ;M595 Q0 P100
      ;M595 Q1 P100
      
      ;G10/G11 Retraction
      M207 S2
      
      ;Timers
      if exists(global.AOff) == false
          global AOff = 0
          global BOff = 0
          global T0Off = 0
          global T1Off = 0
          global magnetOff = 0
          global servo5Off = 0
          global T0Clean = true
          global T1Clean = true
          global degSec = 4.25
          global primeTime0 = 4
          global primeTime1 = 3
          global preHeatT = 20
          global xyParked = false
          global uvParked = false
      if !exists(global.p0state)
          global p0state = "null"
          global p1state = "null"
          
      
      
      M929 P"eventlog.txt" S2
      
      M98 P"setExtGlobals.g"
      
      
      
      
      
      
      
      
      ; homeall.g
      ; called to home all axes
      ;
      ; generated by RepRapFirmware Configuration Tool v3.5.10 on Mon Jan 27 2025 22:07:16 GMT+0000 (Greenwich Mean Time)
      
      
      M98 P"0:/macros/ClearAllocs.g"
      M98.1 A"Probe In"
      
      M98 P"homeA.g" 
      
      M98 P"homeX.g" 
      
      M98 P"homeY.g" Z0
      
      M98 P"homeU.g" Z0 ; This also homes A,D,W
      
      M98 P"homeV.g" Z0
      
      G1 X100 Y20 F10000
      
      M98 P"homeZ.g" Z0
      
      
      ;homew.g
      
      echo "homew"
      G90
      M98 P"homeA.g"
      G1 A4 F300
      G91
      M400
      ;M574 C1 P"122.io2.in" S1 ; configure C axis endstop
      ;     X:Y:Z:U: V:W:A:B:D
      ;     0 1 2 3. 4 5 6 7 8 
      
      M574 A1 P"122.io3.in" S1 ; Move A off of io2
      M574 W2 P"122.io2.in" S1 ; Take over end stop
      var maxTravel = move.axes[5].max - move.axes[5].min + 5 ; calculate how far X can travel plus 5mm
      G1 H1 W{var.maxTravel} F6000 ; coarse home in the +W direction
      ;M400
      
      G1 W-5 F3000 ; move back 5mm
      ;M400
      
      G1 H1 W{var.maxTravel} F500 ; fine home in the +W direction
      
      
      ;G1 C-10 F6000
      G90 ; absolute positioning
      G1 W313 F6000
      G92 W{312.5+1.0249939 +1.9}
      
      
      G90
      G1 A0 F300
      M574 W2 P"122.io0.in" S1 ; Move U back to io0
      M574 A1 P"122.io2.in" S1 ; Move A back to io2
      
      
      ;M569 P1.0 S0 D3 V2000 ; driver 1.0 goes backwards (U axis)
      ;M569 P1.1 S0 D3 V2000 ; driver 1.1 goes backwards (V axis)
      
      
      ; homeu.g
      
      echo "homeu"
      
      ;
      G90
      M98 P"homeD.g"
      G1 D3.7 F300
      G91
      G1 H2 U-10 F5000
      G90
      M98 P"homeW.g"  ;  This homes A and C
      echo "homeU - after homeW"
      G1 A3 F300
      G1 W324.7 F5000
      
      
      G91
      M400
      ;M574 C1 P"122.io2.in" S1 ; configure C axis endstop
      M574 D1 P"123.io3.in" S1 ; Move A off of io2
      M574 U2 P"123.io2.in" S1 ; Take over end stop
      var maxTravel = move.axes[3].max - move.axes[3].min + 5 ; calculate how far X can travel plus 5mm
      G1 H1 U{var.maxTravel} F6000 ; coarse home in the +U direction
      ;M400
      
      G1 U-5 F3000 ; move back 5mm
      ;M400
      
      G1 H1 U{var.maxTravel} F500 ; fine home in the +U direction
      
      G1 U-25 F6000
      G1 W-8 F6000
      G90 ; absolute positioning
      
      G1 U200 F6000
      G92 U{207.93+0.94-0.5+1-1.25-4.7} ;  Move 3 more over
      
      
      G90
      G1 A0 F300
      G1 D0 F300
      M574 U2 P"123.io0.in" S1 ; Move U back to io0
      M574 D1 P"123.io2.in" S1 ; Move A back to io2
      
      
      ;M569 P1.0 S0 D3 V2000 ; driver 1.0 goes backwards (U axis)
      ;M569 P1.1 S0 D3 V2000 ; driver 1.1 goes backwards (V axis)
      
      
      
      ;homeV.g
      
      M950 J2 C"nil"
      M574 V2 P"io4.in" S1 ; V Axis optical
      
      ; increase Z
      G91 ; relative positioning
      if exists(param.Z)
          ;G1 H2 Z{param.Z} F6000
      else
          G1 H2 Z5 F6000; move Z relative to current position to avoid dragging nozzle over the bed
      
      
      
      G90 ; absolute positioning
      ;G1 U345
      
      
      ; home V
      G91 ; relative positioning
      var maxTravel = move.axes[4].max - move.axes[4].min + 15 ; calculate how far V can travel plus 5mm
      G1 H1 V{var.maxTravel} F6000 ; coarse home in the +V direction
      G1 V-5 F6000 ; move back 5mm
      G1 H1 V{var.maxTravel} F1000 ; fine home in the +V direction
      G90 ; absolute positioning
      
      ; decrease Z again
      G91 ; relative positioning
      ;G1 H2 Z-5 F6000 ; move Z relative to current position
      G1 V-10  F5000
      ;G1 V-10 U-10 F15000
      G90 ; absolute positioning
      
      M574 V0 ;  Temporarily release V Optical
      M950 J2 C"io4.in" ; 
      if !exists(global.trigger2Time)
          global trigger2Time = 0
      
      set global.trigger2Time = state.upTime+2
      
      ;M581 V S0 T2 R0    ; V end stop executes - trigger2.g47
      M581 P2 S0 T2 R0    ; V end stop executes - trigger2.g
      
      
      
      
      ;trigger2.g
      echo {state.thisInput},"trigger2 V Axis end stop triggered"
      if  state.upTime > global.trigger2Time 
          set global.trigger2Time = state.upTime+2
          M122
          M114
      
      
      
      droftartsundefined 1 Reply Last reply Reply Quote 0
      • droftartsundefined
        droftarts administrators @dwuk3d
        last edited by droftarts

        @dwuk3d Just to clarify, as there's a lot going on in your config, I'm checking your kinematics and tool assignments.
        The axes setup for the IDEX axis appears to be dual markforged rather than CoreXY? You have this kinematic for V (Y axis):

        ;     X:Y:Z: U: V: W:A:B:D
        M669 V0:0:0: 1: 1:-1:0:0:0
        

        while U (tool 1, X axis, I think) and W (tool 2, Y axis) are set to only move when directly commanded (ie don't move when V is moved). (Sorry, this is probably answered in your long thread, but I couldn't find it!)

        Your tool mapping also seems odd for an IDEX axis. For T1 you have:

        ; Tools
        ;     X:Y:Z:U: V:W:A:B:C:D:a :b 
        ;     0 1 2 3. 4 5 6 7 8 9 10 11
        
        ...
        
        ;Tool T1 - Left Nozzle - 2nd Gantry as X and Y.  UVD
        ;M563 P1 D2 H3 F4
        ;M563 P1 D2 X3 Y4 H3 F4
        M563 P1 D2 X10 Y11 H3 F4
        G10 P1 X0 Y0 U0 V0 S0 R0
        M568 P1 R0 S0 ; set initial tool #1 active and standby temperatures
        

        The M563 X and Y parameters appear to be mapped to a (10) and b (11) axes, which themselves seem to be mapped to two of the Z driver assignment? They are also not listed in the M584 output.

        M584 X0.3 Y0.4 Z0.1:0.2:0.0:1.3 U1.0 V1.5:1.6 W1.1 A1.4 B0.5 D1.2 a0.1 b0.2; set axis mapping
        

        They are also not listed in the M584 output.

        06/06/2025, 07:41:18	M584
        Driver assignments: X0.3 Y0.4 Z0.1:0.2:0.0:1.3 U1.0 V1.5:1.6 W1.1 (r)(c)A1.4 (r)(c)B0.5 (r)(c)D1.2 E121.0:122.0:123.0, 9 axes visible
        

        I note that what appears to be the correct drive assignments, ie X maps to drive 3 (U), and Y maps to drive 4 (V) is commented out. Also the axis limits for a and b is only 0 to 4:

        M208 X0:327 Y0:210 Z0:300 U3:216 V120:329.39 A0:4 B0:3 W120:324.87 D0:3.5 a0:4 b0:4; set minimum and maximum axis limits
        

        I'm not sure why this works in 3.5.4, but I can see why it shouldn't! Or I'm misunderstanding what's going on here. I haven't looked at the homing files closely to see if there's extra drive reassigning there. I'd guess that homing behaviour may be affected by which tool is selected.

        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

        dwuk3dundefined 2 Replies Last reply Reply Quote 0
        • dwuk3dundefined
          dwuk3d @droftarts
          last edited by dwuk3d

          @droftarts

          Your understanding of my V axis is correct - it moves in the Y direction, and moves itself, plus also the U and W motors - to keep them in the same place.
          U & W IDEX axis then move directly (on top of any movement needed by the V axis).

          So the IDEX Axis is Dual Markforged, and the XY Axis is CoreXY.
          This all was surprisingly easy to configure and worked first time (other than perhaps the odd direction reverse change).

          It all worked pretty well - though apart from 3 issues

          Until recently I have had the tools setup with
          T1 X=U Y=V Z=Z
          T2 X=W Y=V Z=Z

          I currently have 3 issues. (I guess I should raise separate threads for each one).

          1. In 3.5.4 - layer shifts - which seem to be related to my Z hopping AB&D Axis and/or the Z Axis.
            These are rapid movements of usually non printing Tools a short distance - while the other tool is doing things in the other motion system.

          As part of an attempt to resolve this issue I have changed the tool definitions for T1 and T2 to have dummy X&Y axis (lower case a and b in my config.g - which are actually mapped to 2 of the 4 Z gantry motors) - and are then using the actual UV&W axis in my G1 movements - which I changed in the GCODE using a post processor. - see extract of GCODE at the end of this reply.

          I thought RRF might be getting confused about the X and Y's being different thinks on the two motion systems - so thought if I completely removed the connection between these from the tools definitions it might stop them being affected. - This didn't work by itself.

          Though this, together with changing my Z Axis layer change moves instead of just G1 Zn - to be T-1 G1 Zn M400 T0 may have fixed the layer shift issue - as it is no longer occurring in my small test prints. NB/ I have seen it before on T0 too - when T1 or T2 were doing something.

          Specifically the last occurrence of this I nailed down to T0 doing a G1 Z.4 - which caused T2 to rapidly move in the V direction until it hit the back - but for the V coordinates not changing in RRF.
          It may also be linked to the B A & D Axis - because my previous workaround to this issue was to not use these extra Zhopping axis at all for Z Hopping.

          1. In 3.5.4 - speed issues -
            Some of the tools, particularly T1 and T2 in Multiple motion systems seem to be going 3-4 times faster than the feed rates specified. My workaround to this at the moment is to put a feedrate on every move, and divide it by a fixed amount on the T1 and T2 tools to slow them down to a usable speed - Seeing if this still occurred on 3.6.0 was one of my main motivations for moving to 3.6.0.
            @dc42 has made some comments on this directly on my main thread - the last of which was asking for a M584 dump

          2. in 3.6.0 only -
            This actual issue - where I am getting some issues with the W axis not moving - With G1's and DWC moves directly asking for moves of the W Axis - and it sometimes not responding - which makes me think that maybe it is an issue with the fact that these axis are on the slave Mini5+ board - as I know there were issues with things like slow movements and jumping about in earlier 3.6 rc's

          Filled in squares - consisting on WV and UV. G1 movements, which work ok on 3.5.4. coming out as simple diagonal lines (in the opposite direction to what you would get if only V movements were happening on VW - i.e. Right to Left (-U and -W). as V increases.

          Corrections: The two diagonal lines are facing outwards - so this would indicate that maybe the W and U motors are not working and only V movement is happening. NB/ This is only for the printing in the middle of the bed, not for the priming at the edge. I will put some M99's in to see if I can do a dump of the settings while the error has actually occurred.

          If it would be easier I could try restoring the tools definitions to put the redirects back in - and try to recreate it again on 3.6.0 with T1 and T2 moves being X&Y redirected to UVW by the tool definitions.

          (Once I have restored my system - as my attempt to downgrade back to 3.5.4 has currently bricked it. Update - Had to erase firmware on 6HC board again to get 3.5.4 installed.

          Some example square drawing GCODE for T2 that I had the issue with.
          NB/ M802 is a macro that I added in to try and detect if a layer shift had occurred and report it - at present it just does an M99

          M106 S0
          ; Filament gcode
          G10 S220 P2 ; set nozzle temperature
          ;prev preheat:0:T2:**NO PREHEAT**
          M116.1 ; wait for temperature to be reached
          ; printing object Cube id:0 copy 0
          ; stop printing object Cube id:0 copy 0
          ; printing object Cube id:2 copy 0
          G1 F300.0 E-.8
          M486 S-1
          M486 S2
          G1 A{global.aOffset+0.4} F7500.0
          M802 L607; 
          G1 F7500.0 W181.417 V203.485
          G1 F7500.0 A{global.aOffset+0.4}
          M802 L610; 
          G1 F7500.0 A{global.aOffset}
          M802 L612; 
          G1 E.8 F300.0
          ;TYPE:Inner wall
          ;WIDTH:0.499999
          G1 F750.0
          G1 F500.0 W162.832 V203.485 E.69225
          G1 F500.0 W162.832 V184.899 E.69225
          G1 F500.0 W181.417 V184.899 E.69225
          M73 P19 R3
          G1 F500.0 W181.417 V203.445 E.69076
          G1 W181.874 V203.942 F7500.0
          ;TYPE:Outer wall
          G1 F750.0
          G1 F500.0 W162.374 V203.942 E.7263
          G1 F500.0 W162.374 V184.442 E.7263
          G1 F500.0 W181.874 V184.442 E.7263
          G1 F500.0 W181.874 V203.902 E.72481
          G1 E-.8 F300.0
          M73 P20 R3
          G1 A{global.aOffset+0.4} F7500.0
          M802 L632; 
          G1 F7500.0 W180.342 V185.036 A{global.aOffset+0.4}
          M802 L634; 
          G1 F7500.0 A{global.aOffset}
          M802 L636; 
          G1 E.8 F300.0
          ;TYPE:Bottom surface
          ;WIDTH:0.506511
          G1 F1500.0
          G1 F1000.0 W181.075 V185.768 E.03911
          G1 F1000.0 W181.075 V186.424 E.02477
          G1 F1000.0 W179.893 V185.242 E.06315
          G1 F1000.0 W179.237 V185.242 E.02477
          G1 F1000.0 W181.075 V187.079 E.09818
          G1 F1000.0 W181.075 V187.735 E.02477
          M73 P21 R3
          G1 F1000.0 W178.581 V185.242 E.1332
          G1 F1000.0 W177.926 V185.242 E.02477
          G1 F1000.0 W181.075 V188.391 E.16823
          G1 F1000.0 W181.075 V189.046 E.02477
          G1 F1000.0 W177.27 V185.242 E.20325
          G1 F1000.0 W176.614 V185.242 E.02477
          G1 F1000.0 W181.075 V189.702 E.23828
          G1 F1000.0 W181.075 V190.357 E.02477
          G1 F1000.0 W175.959 V185.242 E.27331
          G1 F1000.0 W175.303 V185.242 E.02477
          G1 F1000.0 W181.075 V191.013 E.30833
          G1 F1000.0 W181.075 V191.669 E.02477
          G1 F1000.0 W174.648 V185.242 E.34336
          G1 F1000.0 W173.992 V185.242 E.02477
          G1 F1000.0 W181.075 V192.324 E.37838
          G1 F1000.0 W181.075 V192.98 E.02477
          G1 F1000.0 W173.336 V185.242 E.41341
          G1 F1000.0 W172.681 V185.242 E.02477
          G1 F1000.0 W181.075 V193.636 E.44844
          G1 F1000.0 W181.075 V194.291 E.02477
          G1 F1000.0 W172.025 V185.242 E.48346
          G1 F1000.0 W171.369 V185.242 E.02477
          G1 F1000.0 W181.075 V194.947 E.51849
          G1 F1000.0 W181.075 V195.602 E.02477
          
          1 Reply Last reply Reply Quote 0
          • dwuk3dundefined
            dwuk3d @droftarts
            last edited by dwuk3d

            @droftarts Update - ran it again - with an abort mid print.

            While it is printing on UV.

            I have found that something is stopping the U motor from working - which now I have corrected the direction of the diagonal lines makes more sense.

            The U motor works ok when it is priming - but not while printing.

            At the time of the error W is still working - but I suspect that something after my priming is going to stop that motor from working too.

            Also - just discovered that the loss of movement of the U Axis motor also spans Emergency restarts - so something in my Job when run in 3.6.0 is causing my motors to turn off.
            So after an Emergency stop U doesn't work, but W still does.

            If I do a G1 H2 U-1 then the motor turns back on again.

            Kinematics is CoreXY, no segmentation, modified matrix:
            1.00 1.00 0 0 0 0 0 0 0
            1.00 -1.00 0 0 0 0 0 0 0
            0 0 1.00 0 0 0 0 0 0
            0 0 0 1.00 0 0 0 0 0
            0 0 0 1.00 1.00 -1.00 0 0 0
            0 0 0 0 0 1.00 0 0 0
            0 0 0 0 0 0 1.00 0 0
            0 0 0 0 0 0 0 1.00 0
            0 0 0 0 0 0 0 0 1.00
            
            Driver assignments: X0.3 Y0.4 Z0.1:0.2:0.0:1.3 U1.0 V1.5:1.6 W1.1 (r)(c)A1.4 (r)(c)B0.5 (r)(c)D1.2 E121.0:122.0:123.0, 9 axes visible
            Motor current % of normal - X:100, Y:100, Z:100, U:100, V:100, W:100, A:100, B:100, D:100, E:100:100:100
            
            Motor current (mA) - X:800, Y:800, Z:800, U:800, V:800, W:800, A:750, B:750, D:750, E:800:800:800, idle factor 30%, timeout 30.0 sec
            === Diagnostics ===
            RepRapFirmware for Duet 3 MB6HC version 3.6.0 (2025-05-25 08:05:42) running on Duet 3 MB6HC v1.02 or 1.02a (standalone mode)
            Board ID: 0JD4M-958L1-M2NS0-7JTDG-3SN6K-91FKZ
            Used output buffers: 16 of 40 (36 max)
            === RTOS ===
            Static ram: 137420
            Dynamic ram: 136672 of which 0 recycled
            Never used RAM 68444, free system stack 134 words
            Tasks: NETWORK(1,ready,33.8%,180) ETHERNET(5,nWait 7,0.3%,316) HEAT(3,nWait 6,0.0%,350) Move(4,nWait 6,0.0%,209) TMC(4,nWait 6,3.3%,343) CanReceiv(6,nWait 1,0.1%,768) CanSender(5,nWait 7,0.0%,329) CanClock(7,delaying,0.0%,350) MAIN(1,running,62.3%,103) IDLE(0,ready,0.0%,29) USBD(3,blocked,0.0%,144), total 100.0%
            Owned mutexes: HttpGCodeReply(NETWORK) File(MAIN)
            === Platform ===
            Last reset 00:05:31 ago, cause: power up
            Last software reset at 2025-06-06 15:37, reason: User, Gcodes spinning, available RAM 71836, slot 2
            Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a
            Error status: 0x04
            MCU temperature: min 49.2, current 49.4, max 50.0
            Supply voltage: min 24.0, 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.2, max 12.4, under voltage events: 0
            Heap OK, handles allocated/used 198/82, heap memory allocated/used/recyclable 2048/1776/576, gc cycles 13
            Events: 0 queued, 0 completed
            Date/time: 2025-06-06 15:42:36
            Slowest loop: 80.45ms; fastest: 0.05ms
            === Storage ===
            Free file entries: 16
            SD card 0 detected, requested/actual speed: 25.0/25.0MBytes/sec
            SD card longest read time 2.8ms, write time 3.4ms, max retries 0
            === Move ===
            Segments created 30, maxWait 278179ms, bed comp in use: none, height map offset 0.000, hiccups added 0/0 (0.00/0.00ms), max steps late 0, ebfmin 0.00, ebfmax 0.00
            Pos req/act/dcf: 3200.00/3200/-0.00 0.00/0/-0.00 107.00/107/-0.66 27439.00/27440/-1.00 14962.00/14962/-0.00 9839.00/9838/1.00 9282.00/9281/0.11 7368.00/7368/0.00 8317.00/8317/-0.62
            Next step interrupt due in 119 ticks, disabled
            Driver 0: standstill, SG min 0, mspos 616, reads 55597, writes 0 timeouts 0
            Driver 1: standstill, SG min 0, mspos 248, reads 55597, writes 0 timeouts 0
            Driver 2: standstill, SG min 0, mspos 488, reads 55597, writes 0 timeouts 0
            Driver 3: standstill, SG min 0, mspos 792, reads 55597, writes 0 timeouts 0
            Driver 4: standstill, SG min 0, mspos 472, reads 55597, writes 0 timeouts 0
            Driver 5: standstill, SG min 0, mspos 184, reads 55598, writes 0 timeouts 0
            Phase step loop runtime (us): min=0, max=100, frequency (Hz): min=671, max=10273
            === DDARing 0 ===
            Scheduled moves 212, completed 212, LaErrors 0, Underruns [0, 0, 0]
            Segments left 0, axes/extruders owned 0x20000000, drives owned 0x20000000
            Code queue is empty
            === DDARing 1 ===
            Scheduled moves 131, completed 131, LaErrors 0, Underruns [0, 0, 0]
            Segments left 0, axes/extruders owned 0x80000003, drives owned 0x80000003
            Code queue is empty
            === Heat ===
            Bed heaters 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1 -1 -1 -1 -1, ordering errs 0
            Heater 0 is on, I-accum = 0.2
            Heater 1 is on, I-accum = 0.0
            Heater 3 is on, I-accum = 0.0
            === GCodes ===
            Movement locks held by null, null
            HTTP is ready with "M290 R1 Z-0.05" in state(s) 0
            Telnet is idle in state(s) 0
            File is ready with "M122" 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 doing "G4 P91" in state(s) 0 0, running macro
            Queue2 is idle in state(s) === CAN ===
            Messages queued 2465, received 13422, lost 0, ignored 0, errs 0, boc 0
            Longest wait 3ms for reply type 6061, peak Tx sync delay 216, free buffers 50 (min 48), ts 909/909/0
            Tx timeouts 0,0,0,0,0,0
            === Network ===
            Slowest loop: 42.50ms; 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
            === Multicast handler ===
            Responder is inactive, messages received 0, responses 0
            = Ethernet =
            Interface state: active
            Error counts: 0 0 0 0 0 0
            Socket states: 6 2 2 2 2 2 0 0 0
            === WiFi ===
            Interface state: disabled
            Module is disabled
            Failed messages: pending 0, notrdy 0, noresp 0
            Socket states: 0 0 0 0 0 0 0 0
            
            Cancelled printing file 0:/gcodes/Box3.gcode, print time was 0h 1m
            'abort' command executed
            
            dwuk3dundefined 1 Reply Last reply Reply Quote 0
            • dwuk3dundefined
              dwuk3d @dwuk3d
              last edited by

              @dwuk3d UPDATE - The turning off of motors seems to be intermittent - They started working half way through layer 1 on Red on attached photo (might relate to a few commands like M122 that I added in) IMG_7647.jpeg , and on layer 2 on White

              dwuk3dundefined 1 Reply Last reply Reply Quote 0
              • dwuk3dundefined
                dwuk3d @dwuk3d
                last edited by dwuk3d

                @dwuk3d Further update

                Have tried various combinations of inserts of G1 H2's into print to try and kick motors back into action.

                Adding this to the start of the extruding section seems to kick U & V back into action.
                But they drop out again after priming.

                ;M98 P"0:/macros/changeFilament.g" A previous_extruder  B new_filament_temp  L layer_num  N next_extruder   F first_layer_temperature1
                
                M98 P"0:/macros/changeFilament.g" A0 B220 L0  N1  F220 
                M203
                M201
                
                M106 S0
                ; Filament gcode
                G10 S220 P1 ; set nozzle temperature
                ;prev preheat:0:T1:**NO PREHEAT**
                M116.1 ; wait for temperature to be reached
                ; printing object Cube id:0 copy 0
                ; stop printing object Cube id:0 copy 0
                ; printing object Cube id:2 copy 0
                ; stop printing object Cube id:2 copy 0
                ; printing object Cube id:1 copy 0
                G1 F450.0 E-.8
                M486 S-1
                M486 S1
                G1 D{global.dOffset+0.4} F15000.0
                M802 L416; 
                G1 F15000.0 U142.213 V205.264
                G1 F15000.0 D{global.dOffset+0.4}
                M802 L419; 
                G1 F15000.0 D{global.dOffset}
                M802 L421; 
                G1 E.8 F450.0
                ;TYPE:Inner wall
                ;WIDTH:0.499999
                G1 F1500.0
                G1 F750.0 U123.627 V205.264 E.69225
                G91
                G1 H2 U0.1 V0.1 ; Added to see if it makes a difference
                G1 H2 U-0.1 V-0.1 ; Added to see if it makes a difference
                G90
                M73 P10 R3
                G1 F750.0 U123.627 V186.678 E.69225
                G1 F750.0 U142.213 V186.678 E.69225
                G1 F750.0 U142.213 V205.224 E.69076
                

                Priming within changefilament works ok

                  if global.primeLayer[param.N] < param.L
                            M98.1 A"clean T1"
                            T1
                            while iterations <  var.primeLoops
                                M203 U{global.xyMaxFeed} V{global.xyMaxFeed}
                                G1 F12000
                                G1 U48 V295 F12000
                                M801 U{50+0.4*(4-iterations)} V{295+0.4*(4-iterations)} T1 S{10+0.8*(iterations-4)} A{20+0.8*(iterations-4)}  ; Prime
                            set global.primeLayer[param.N] =  param.L
                
                    if exists(param.L) && param.L > 0 && global.primeLayer[param.N] < param.L
                        T1
                        M203 U{global.xyMaxFeed} V{global.xyMaxFeed}
                        G1 F12000
                        G1 U48 V295 F12000
                        M801 U50 V295 T1 S10 ; Prime
                        set global.primeLayer[param.N] =  param.L
                
                    G1 D{global.dOffset} F500
                    
                
                
                    set global.T1Clean = false
                    var timeC = state.upTime+state.msUpTime/1000
                
                    ;echo {state.thisInput},"M598 started"
                    ;M598
                    ;M400
                    ;echo {state.thisInput},"M598 waited for ",{state.upTime+state.msUpTime/1000-var.timeC},"secs"
                    if param.A != 0 
                        echo {state.thisInput},"No need to wait for Y Axis, Move W Over"
                        
                        G1 W300 F10000
                        
                    else
                        set var.timeC = state.upTime+state.msUpTime/1000
                
                        while global.startParkXY == -1  ; move.axes[1].machinePosition > 25
                            G4 P59
                            M400
                
                        echo {state.thisInput},"waited for xy to start Parking ",{state.upTime+state.msUpTime/1000-var.timeC},"secs"
                        if global.startParkXY < var.timeC
                           echo {state.thisInput},"too late by ",{state.upTime+state.msUpTime/1000-global.startParkXY},"secs"
                           echo >>>"delays.g" ",",var.startHeat-var.startWait,",-",{state.upTime+state.msUpTime/1000-global.startParkXY}
                           set global.delayAdjust = state.upTime+state.msUpTime/1000-global.startParkXY
                        else
                            echo >>>"delays.g" ",",var.startHeat-var.startWait,",",{state.upTime+state.msUpTime/1000-var.timeC}
                            set global.delayAdjust = 0
                        set var.timeC = state.upTime+state.msUpTime/1000
                        if global.startParkXY+0.1 > var.timeC
                            G4 P{floor((global.startParkXY+0.1 - var.timeC)*1000)}
                            echo "waited further",floor((global.startParkXY+0.1 - var.timeC)*1000),"ms"
                
                        set global.uvParked = false
                        set global.startParkUV = -1
                
                
                    M800 T2 H1
                    M203 W{global.xyMaxFeed} V{global.xyMaxFeed}
                    G1 F12000
                    G1 W310 F20000
                    M203
                    M201
                    echo {state.thisInput},"finished changeFilament"
                

                With the M801 having the following Gcodes for the priming - which always seem to work

                
                        var speed = 1500
                
                        G1 D{global.dPrimeOffset} F300
                        G1 F{var.speed}
                        G1 U{param.U} V{param.V} F{var.speed}
                        ;M800 T{param.T} H0  ; ZHop down
                        G1 U{param.U} V{param.V+param.S} E{var.E} F{var.speed}
                        G1 U{param.U+var.S2} V{param.V+param.S}  E{var.E*2} F{var.speed}
                        G1 U{param.U+var.S2} V{param.V}  E{var.E*2} F{var.speed}
                        G1 U{param.U} V{param.V}   E{var.E} F{var.speed}
                        G1 U{param.U-2} V{param.V+param.S/2} F{var.speed}
                        G1 U48 V295 F2000
                        
                        
                        G1 D{global.dOffset} F300
                        M400
                        echo {state.thisInput},"prime time T1",{state.upTime+state.msUpTime/1000 - var.primeT},"s"
                

                I added in the M203's due to the speed issue - will try removing them to see if that makes a difference.
                Update - it's not the M203s or M201s - removed them all and still get the same issue.

                Also just went back to 3.5.4 - it didn't brick this time, and have run the exact same config and print and it is again as expected working fine on 3.5.4 (not withstanding the speed issue).

                1 Reply Last reply Reply Quote 0
                • DIY-O-Sphereundefined
                  DIY-O-Sphere
                  last edited by

                  @dwuk3d said in UVW movement issues with [3.6.0]:

                  From your config.g:

                  M84 S30 ; set motor current idle timeout

                  I don't know if it has anything to do with the problem, but M84 is deprecated in RRF3.6.

                  (UTC+1)

                  dwuk3dundefined 1 Reply Last reply Reply Quote 0
                  • dwuk3dundefined
                    dwuk3d @DIY-O-Sphere
                    last edited by dwuk3d

                    @DIY-O-Sphere thanks for the suggestion.

                    I tried commenting out the M84 and M906 in caee it was some sort of timeout issue - but it didn't remove the issue.

                    ; Motor Idle Current Reduction
                    M906 I30 ; set motor current idle factor
                    M84 S30 ; set motor current idle timeout
                    

                    The only other things I can think of to try are:
                    A. Reinstating the redirects in the tools definitions - and then seeing whether using X&Y instead of the real axis makes any difference
                    B. Removing the U&V axis adjusting motion from the V axis kinematics - and instead doing the adjustment in the actual G1.
                    C. Changing my driver wiring around to put XYUVW all on the master 6HC board - as I suspect its probably 3.6.0's changes to handling of toolboards that is the issue,

                    Think I will investigate sourcing/making up some 6HC<>mini5+stepper driver cable adaptors before doing this - to make swapping steppers around between boards less hassle.

                    Thinking about it I guess sourcing in line male 6HC and Mini5+ stepper connectors is going to be hard - maybe it would be easier if I just put inline 2.54mm plugs and sockets into the stepper wires I need to swap around.

                    Or even easier just make up some extension cables at the nema17 end of the cables so that I can swap the other ends of the stepper cables around instead.

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

                      @dwuk3d is it the motors connected to the Mini 5+, which is a mainboard-as-expansion, that are misbehaving? There are other reports of mainboard-as-expansion problems, may be related. If so, one for @dc42 to 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

                      dwuk3dundefined 1 Reply Last reply Reply Quote 0
                      • dwuk3dundefined
                        dwuk3d @droftarts
                        last edited by

                        @droftarts yes UV&W are all connected to a connected Mini5+, will try swapping them with 3 of my Z axis motors to see if that makes a difference.

                        dwuk3dundefined 1 Reply Last reply Reply Quote 0
                        • dwuk3dundefined
                          dwuk3d @dwuk3d
                          last edited by

                          @dwuk3d Tried a simple test - just swapping around the cables and driver allocations for U<>X and W<>Y.

                          So now XY and are on the Mini5+ board
                          UW are on he 6HC board, and V is on the Mini5+ board

                          On 3.5.4 homing worked fine - but printing on XY was a bit odd - it seem to pause and not finish its object - and go slow when the 2nd motion system started

                          Then when the 2nd motion system started to try and print things went a bit haywire - with heads moving W direction when they shouldn't.

                          So my conclusion from this test is as per documentation - you can't mix motion systems and driver boards.

                          Therefore I don't think swapping over my XY,UVW onto the 6HC board is going to be feasible - because their Z hopper/mesh adjustment axis AB&D will all be on a separate board within the same motion system - so will likely cause the same issue.

                          I could swap over XYB onto the Mini5+. and UVWAD to be on the 6HC to confirm that the Mini5+ has issues on 3.6.0 with the XY axis instead of UVW - however that is going to involve rewiring 12 stepper cables (due to plug size differences) - so not that keen to do it.

                          PS/. I have had Z split across the 2 boards for months - and that hasn't caused any issues - including when it was Z Hopping one motion system while the other one was priming - although - thinking about it - I wonder if that split might be the cause of my 'layer shift' issue - so maybe I should move Z completely off to its own separate Mini5+ board if the layer shift issue comes back again.

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

                            @dwuk3d said in UVW movement issues with [3.6.0]:

                            So my conclusion from this test is as per documentation - you can't mix motion systems and driver boards.

                            That's correct. Each motion system needs a separate movement pipeline. Expansion bards, including main board used as expansion boards, have only one pipeline.

                            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

                            dwuk3dundefined 1 Reply Last reply Reply Quote 0
                            • dwuk3dundefined
                              dwuk3d @dc42
                              last edited by

                              @dc42 Thanks - but confirming this unfortunately that does not resolve my issue.

                              My setup is currently

                              Motion System 1
                              XYB on Master 6HC board - works ok.

                              Motion System 0
                              UVWAD - on Slave Mini5+ board

                              Motion system 1 works fine on both 3.5.4 and 3.6.0

                              Motion System 0 works fine (apart from excess speed and layer shift issues - which I will report on separate threads) on 3.5.4

                              But on 3.6.0 Motion System 0 hardly works at all - with U & W motors seeming to stop working early in the print - The 'switch off' sometimes persists across emergency stops - but If I do G1 H2 U or W they seem to start working again.

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