Duet3: Tool Coordinates N/A in DWC
-
Duet Web Control 2.0.4 (Uploaded via DWC from zip from github)
Board: Duet 3 version v0.6 (MB6HC)
Firmware: RepRapFirmware for Duet 3 v0.6 3.0beta11 (2019-10-13b2)Still N/A
Printer is a "Jubilee" CoreXY tool changing printer. More info on Github. Printer was originally built with Duet2 and expander. I am first person to try to build one with Duet3. Therefore, config.g is only partly converted.
bed.g
M401 ; deploy z probe G0 X152.5 Y42 H1 F10000 G30 P0 X152.5 Y42 Z-99999 ; probe near back leadscrew G0 X295 Y300 H1 F10000 G30 P1 X295 Y300 Z-99999 ; probe near front left leadscrew G0 X5 Y300 H1 F10000 G30 P2 X5 Y300 Z-99999 S3 ; probe near front right leadscrew and calibrate 3 motors M402 ; retract z probe G1 X0 Y0 F10000
config.g
; Jubilee CoreXY ToolChanging Printer - Config File ; This file intended for Duet 3 hardware, main board plus two expansion boards (or, later, four tool boards) ; As of 10/14/2019 INCOMPLETE AND ONLY PARTIALLY TESTED. See the discord for more info. ; Name and Identification ; Printer name is now set on the R Pi. ; Networking ;;;M552 P192.168.1.2 S1 ; Use Ethernet with a static IP ;;;M553 P255.255.255.0 ; Netmask ;;;M554 192.168.1.3 ; Gateway M586 P1 S1 ; Enable FTP M586 P2 S1 ; Enable Telnet ; Debugging M111 S1 ; Debug off M929 P"eventlog.txt" S1 ; Start logging to file eventlog.txt ; General Preferences M555 P2 ; Set Marlin-style output G21 ; Set dimensions to millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Axis to driver mapping M584 X0 Y1 U2 Z3:4:5 ; X and Y for CoreXY. U for toolchanger lock. Z has three drivers for kinematic bed suspension. M584 E6:7:8:9 ; Extruders for four tools. M569 P0 S0 ; Drive 0 direction | X stepper M569 P1 S0 ; Drive 1 direction | Y Stepper M569 P2 S0 ; Drive 2 direction | U Tool Changer Lock M569 P3 S0 ; Drive 3 direction | Front Left Z M569 P4 S0 ; Drive 4 direction | Front Right Z M569 P5 S0 ; Drive 5 direction | Back Z ; End of Duet3 main board drivers. Expansion boards have three each. ; Expansion 0 ;M569 P6 S0 ; Drive 6 direction | Extruder T0 ;M569 P7 S0 ; Drive 7 direction | Extruder T1 ;M569 P8 S0 ; Drive 8 direction | Extruder T2 ; Expansion 1 ;M569 P9 S0 ; Drive 9 direction | Extruder T3 ; Kinematics M669 K1 ; CoreXY mode ; Leadscrew locations extracted from CAD model assuming lower left build plate corner is (0, 0) M671 X300:5:152.5 Y316:316:-14 S10 ; Front Left: (300, 316) | Front Right: (5, 316) | Back: (-14, 152.5) ; Axis and motor configuration M350 X16 Y16 I1 ; Set 16x microstepping for axes. Use interpolation. M350 U4 I1 ; Set 4x for toolchanger lock. Use interpolation. M350 Z16 I1 ; Set 16x microstepping for axes. Use interpolation. ; Add extruders later M574 X1 S1 P"io0.in" ; Set homing switch configuration low-end, active-high (NC) M574 Y1 S1 P"io1.in" ; Set homing switch configuration low-end, active-high (NC) M574 U1 S1 P"io2.in" ; Set homing switch configuration low-end, active-high (NC) ;M574 Z1 S1 P"io3.in" ; Set homing switch configuration low-end, active-high (NC) Commented out in favor of Z-Probe M906 X1500 Y1500 Z800 E1250 U900 I60 ; Motor currents (mA) M201 X800 Y800 Z10 E1000 U1000 ; Accelerations (mm/s^2) M203 X25000 Y25000 Z400 E4000 U10000 ; Maximum speeds (mm/min) M566 X1400 Y1400 Z2 E3000 U200 ; Maximum jerk speeds mm/minute ;M92 X200 Y200 U11.429 ; Steps/mm for X,Y with 16 tooth pulleys (preferred). M92 X160 Y160 U11.429 ; Steps/mm for X,Y with 20 tooth pulleys. M92 Z3200 ; Steps/mm for Z - TR8*4 / 0.9 deg stepper M92 U11.429 ; Steps/mm for tool lock geared motor. M92 E837 ; Extruder - 0.9 deg/step ; Set axis software limits and min/max switch-triggering positions. Adjust such that (0,0) lies at the lower left corner of the build plate. M208 X-5:305 Y-10:355 Z-0.5:220 M208 U0:180 ; Thermistors ;;;;;;;;;;;;;;;;;;;;;;;;;;;M305 P0 S"Bed" T100000 B3950 R4700 H0 L0 ; BOM thermistor values. Put your own H and/or L values here to set the bed thermistor ADC correction M308 S0 P"temp0" Y"thermistor" T100000 B3950 ;;;;;;;;;;;;;;;;;;;;;;;;;;;M305 P1 X200 ; Extruder 0 sensor maps to PT100 Channel 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;M305 P2 X201 ; Extruder 1 sensor maps to PT100 channel 1 ; Heaters ;;;;;;;;;;;;;;;;;;;;;;;;;;;M143 H0 S80 ; Maximum H0 (Bed) heater temperature (Conservative) M950 H0 C"out0" T0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;M143 H1 S240 ; Maximum H1 (Extruder) heater temperature (Conservative and in case extruder has PTFE lining) ;;;;;;;;;;;;;;;;;;;;;;;;;;;M143 H2 S240 ; M143 not supported in RRF3 ; Default heater model ;;;M307 H0 A270.7 C90.4 D6.7 B0 S1.0 ; Default Bed Heater Parameters, before tuning / if config-override.g is missing ; Tool definitions M563 P0 S"Extruder 0" D0 H1 F0 ; Define tool 0 G10 P0 Z-3.75 ; Set tool 0 offset from the bed G10 P0 S190 R170 ; Set tool 0 operating and standby temperatures(-273 = "off") M572 D0 S0.1 ; Set pressure advance on Extruder Drive 0 M563 P1 S"Extruder 1" D1 H2 F2 ; Define tool 1 G10 P1 X0.1 Y1.8 Z-2.65 ; Set tool 1 offset from the bed with tool-0 as a reference. G10 P1 S190 R170 ; Set tool 1 operating and standby temperatures(-273 = "off") M572 D1 S0.1 ; Set pressure advance on Extruder Drive 1 ; Fans ;;;;;;;;;;;;;;;;;;;;;;;;;;;M106 P0 S0 ; Turn off fan 0 M950 F0 C"out7" ; Define fan 0 as low-current output 7, which has proper connectors for a fan. M106 P0 S0 ; Turn off fan 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;M106 P1 S0 ; Turn off fan 1 M950 F1 C"out8" ; Define fan 1 as low-current output 8, which has proper connectors for a fan. M106 P1 S0 ; Turn off fan 1 ; Z probe M558 P5 C"io3.in" H5 A5 T6000 S0.02 ; Z probe - Set the height of the bed. Combined with content of bed.g, levels bed. ; P5 = Switch, NC ; C = Input Connector ; H10 - dive height ; A bigger dive height prevents a situation where the bed is out of alignment by more than the dive height ; on any corner, which can crash the hot-end into the bed while moving the head in XY. ; Probing speed and travel speed are similarly reduced in case the Z probe isn't connected properly (or ; disconnects later after moving to a point) giving the user more time to stop. ; A1 = Number of times to probe each point. ; T5000 Travel speed between probe points. ; S0.02 Tolerance when probing multiple times. Two readings inside this window and we move on. M98 P"config-user.g" ; Load custom user config if one exists. ;;;M501 ; Load saved parameters from non-volatile memory ; Note: you will need to tune the bed heater, and both extruder cartridges before printing. ; See the following link for more details. https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_control
-
I've done a few network traces with the Chrome developers console. I do not ever see DWC2 attempting to fetch any form of status.
I do see all commands DWC2 issues. Movement, homing, etc. I do not see any responses to these commands, no payload returned. Therefore, they cannot be returning a status to be parsed.
Typical examples, G1 commands: (Also, this shows DWC2 saving the settings file, which it seems to do quite a bit, even when no settings change).
And a double click into one of the command ("code") network events:
Same event, no response:
And the remainder of the console shows nothing, even though DWC2 is/was connected for over an hour with this console open. No status requests.
-
And here is the settings payload, in case it helps:
{"main":{"language":"en","lastHostname":"192.168.7.101","darkTheme":true,"useBinaryPrefix":true,"disableAutoComplete":false,"settingsStorageLocal":false,"settingsSaveDelay":2000,"cacheStorageLocal":false,"cacheSaveDelay":4000,"notifications":{"errorsPersistent":false,"timeout":5000},"webcam":{"url":"","updateInterval":5000,"useFix":false,"embedded":false,"rotation":0,"flip":"none"}},"machine":{"ajaxRetries":2,"updateInterval":250,"extendedUpdateEvery":20,"fileTransferRetryThreshold":358400,"crcUploads":true,"pingInterval":2000,"babystepAmount":0.05,"codes":["M109","M905","M999","M119","G0 X300Y300","G53 G0 X12 Y312 F6000","G53 G1 Y355 F600","G1 Y318 F600","G0 X150 Y150 F10000","G2 I40","G2 I40 F8000","G53 G0 X16 Y320 F10000","G53 G0 X289 Y320 F10000","G53 G1 Y364 F10000","G53 G1 Y374 F10000","G53 G1 Y384 F10000","G53 G1 Y300 F10000","G53 G1 Y375 F10000","G53 G1 Y355 F10000","G53 G1 Y345 F10000","G1 Y355 F10000","G1 Y375 F10000","G1 Y345 F10000","G53 G1 Y360 F10000","G53 G1 Y345 F6000","G53 G0 X12 Y320 F10000","G53 G0 X285 Y320 F10000","M408 S2","T0","T-1","M584 E6:7:8:9","M584","T-9","M950 S0 C\"io7.out\"","M280 P0 S1500 I1","M280 P0 S1100 I1","G0 Y300 F1","G0 Y300 F10","G0 Y300 F100","G0 X50","G0 X100","G0 Y 250 F100","G0 Y 250 F1000","G0 X 250 F1000","G0 X 100 F1000","G1 X50 F1000","G1 X250 F1000","G1 X150 F1000"],"displayedExtraTemperatures":[],"displayedExtruders":[0,1],"displayedFans":[-1],"moveSteps":{"X":[100,50,10,1,0.1],"Y":[100,50,10,1,0.1],"Z":[50,25,5,0.5,0.05],"default":[100,50,10,1,0.1]},"moveFeedrate":6000,"extruderAmounts":[100,50,20,10,5,1],"extruderFeedrates":[60,30,15,5,1],"temperatures":{"tool":{"active":[250,235,220,205,195,160,120,100,0],"standby":[210,180,160,140,0]},"bed":{"active":[110,100,90,70,65,60,0],"standby":[40,30,0]},"chamber":[90,80,70,60,50,40,0]},"spindleRPM":[10000,75000,5000,2500,1000,0]}}
-
Are you running the Duet 3 in standalone mode or with an attached RPi?
-
@dc42 said in Duet3: Tool Coordinates N/A in DWC:
Are you running the Duet 3 in standalone mode or with an attached RPi?
RPI, specifically a 4, running an image downloaded from the "SBC setup" instructions in the Dozuki. Both firmware and DWC have been updated (multiple times) beyond the original image, via the DWC system upload dialog.
The captures/traces are from a Chrome browser on a Windows 10 machine, with a URL that points to the Pi.
I can, if it helps debug, VNC into the Pi and run a browser on the Pi desktop.
-
We've alerted chrishamm to this thread because we suspect a DWC or DSF issue, given that M408 S2 reports the coordinates.
-
Further data points:
I git cloned the DWC repository; did an npm install, followed by an npm build and uploaded the resulting sbc zip via DWC system dialog.
After these actions I DO see an always open connection called "machine" (that I was not seeing before). I see an interchange every half second or so. However, the display is still all "n/a"
The payload in these machine interchanges typically looks like:
{"electronics":{"vIn":{"current":24.4},"mcuTemp":{"current":47.5}}}
If I execute a move of X, there are more fields, indicating the coordinates have changed.
{"electronics":{"vIn":{"current":24.4}},"move":{"axes":[{},{"machinePosition":10.0},{},{}],"currentMove":{"requestedSpeed":0.0,"topSpeed":0.0}},"state":{"status":"idle"}}
And last, a G1 that moved both X and Y:
{"electronics":{"mcuTemp":{"current":47.4}},"move":{"axes":[{"machinePosition":50.0},{"machinePosition":50.0},{},{}],"currentMove":{"requestedSpeed":0.0,"topSpeed":0.0}},"state":{"status":"idle"}}
Hope this helps...
Danal
-
And... it seems that Chrome developer console network must be already recording when a web socket opens... otherwise it does not see it at all.
That explains why I was sometimes seeing the ws://.........../machine socket, and sometimes not. It has nothing to do with git clones, or any other method of getting the build onto the SBC. It is only dependent on starting recording before a reload (and thus before the open of that socket).
-
Recently wired the first extruder on the printer that has the Duet 3. Position for it is being reported correctly.
-
I'm sorry but I haven't had a chance to look further into this yet. It looks like the drive position isn't properly set in the DSF object model and I suspect the key to that is the status response returned from RRF.
Can you post the output of "M408 S2"?
PS: If you're running DWC2 via npm, I can recommend installing the VueJS dev tools. With that addon you can look into the model data behind the UI (Vuex).
-
No prob on the "busy"... I perfectly understand.
@chrishamm said in Duet3: Tool Coordinates N/A in DWC:
PS: If you're running DWC2 via npm, I can recommend installing the VueJS dev tools. With that addon you can look into the model data behind the UI (Vuex).
OOOHHH!!! NICE!!! Thank you!
And... M408:
M408 S2 {"status":"I","coords":{"axesHomed":[1,1,1,1],"wpl":1,"xyz":[12.000,280.000,0.050,0.000],"machine":[12.000,280.000,7.900,0.000],"extr":[0.0,0.0]},"speeds":{"requested":0.0,"top":0.0},"currentTool":-1,"params":{"atxPower":-1,"fanPercent":[0,0,-100,-100,-100,-100,-100,-100,-100,-100,100,100],"speedFactor":100.0,"extrFactors":[100.0,100.0],"babystep":0.000},"sensors":{"probeValue":0,"fanRPM":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},"temps":{"bed":{"current":18.5,"active":0.0,"standby":0.0,"state":0,"heater":0},"current":[18.5,22.4,22.4],"state":[0,0,0],"tools":{"active":[[0.0],[0.0]],"standby":[[0.0],[0.0]]},"extra":[{"name":"*Bed","temp":18.5},{"name":"*Ex0","temp":22.4},{"name":"*Ex1","temp":22.4}]},"time":44222.0}
-
Also, if it helps, I modified a bit of code to log position to the chrome developer console, so that I could continue to commision a new printer with Duet 3. I believe the following proves that basic JSON parsing of the socket output of the Duet3-to-DWC2 is working down in the connector itself. I did not attempt to trace any further through the code, so I don't know where the eventual disconnect occurs.
The "console.log" statements added to this spot in the code:
case 6: // Process model updates data = JSON.parse(e.data); // Deal with generic messages if (data.move) { if (data.move.drives) { {console.log("X",data.move.drives[0]);} {console.log("Y",data.move.drives[1]);} {console.log("Z",data.move.drives[2]);} } } if (data.messages) { data.messages.forEach(
Produce output like this:
app.fee4fdb1.js:139868 Y {position: 86} app.fee4fdb1.js:139869 Z {} app.fee4fdb1.js:139867 X {} app.fee4fdb1.js:139868 Y {position: 36} app.fee4fdb1.js:139869 Z {} app.fee4fdb1.js:139867 X {} app.fee4fdb1.js:139868 Y {position: -10.7} app.fee4fdb1.js:139869 Z {} app.fee4fdb1.js:139867 X {} app.fee4fdb1.js:139868 Y {position: -0.7} app.fee4fdb1.js:139869 Z {} app.fee4fdb1.js:139867 X {position: 13.1} app.fee4fdb1.js:139868 Y {position: 354.3} app.fee4fdb1.js:139869 Z {position: 5.05} app.fee4fdb1.js:139867 X {} app.fee4fdb1.js:139868 Y {} app.fee4fdb1.js:139869 Z {} app.fee4fdb1.js:139867 X {} app.fee4fdb1.js:139868 Y {position: 279.3} app.fee4fdb1.js:139869 Z {} app.fee4fdb1.js:139867 X {position: 12} app.fee4fdb1.js:139868 Y {position: 280} app.fee4fdb1.js:139869 Z {position: 0.05}
-
Well... very interesting. It suddenly started working.
I am not 100% sure, but the thing that changed seems to be moving to Beta12 firmware.