Duet 3 6HC SBC On Railcore II 300ZL Bugs
-
Can you copy and paste the contents of your config.g?
Also please send M122 and M98 P"config.g" in the gcode console and share the results. -
@Phaedrux
config,g
; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.5.0-rc.4+1 on Mon Apr 22 2024 20:22:45 GMT-0700 (Pacific Daylight Time)G21 ; Work in millimetres
G90 ; absolute coordinates
M83 ; relative extruder moves; Smart Drivers
M569 P0.0 S0 D2 ; driver 0.0 goes backwards (Z axis)
M569 P0.1 S0 D2 ; driver 0.1 goes backwards (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 P0.5 S0 D2 ; driver 0.5 goes backwards (extruder 0); 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.0:0.1:0.2 ; set axis mapping
M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation
M906 X1000 Y1000 Z800 ; set axis driver currents
M92 X100 Y100 Z3192 ; configure steps per mm
M208 X0:290 Y0:290 Z0:290 ; set minimum and maximum axis limits
M566 X900 Y900 Z5 ; set maximum instantaneous speed changes (mm/min)
M203 X5000 Y5000 Z480 ; set maximum speeds (mm/min)
M201 X1500 Y1500 Z1000 ; set accelerations (mm/s^2); Default Extruders
M584 E0.5 ; set extruder mapping
M350 E16 I1 ; configure microstepping with interpolation
M906 E430 ; set extruder driver currents
M92 E830 ; configure steps per mm
M566 E800 ; set maximum instantaneous speed changes (mm/min)
M203 E3600 ; set maximum speeds (mm/min)
M201 E500 ; set accelerations (mm/s^2); Kinematics
M669 K1 ; configure CoreXY kinematics; Leadscrew locations. Must come after M667/M669
; 5/FrontLeft : 6/RearLeft : 7/Right
; Measured to the bed-yoke bolt for each leadscrew
; (7.5mm maximum correction)
M671 X-6.5:-6.5:348 Y21.7:275.6:150 S7.5; Probes
M558 K0 P9 C"io7.in" H5 F120 T6000 ; configure BLTouch probe via slot #0
G31 P500 X0 Y0 Z2.15 ; set Z probe trigger value, offset and trigger height
M950 S0 C"io7.out" ; create servo #0 for BLtouch; Endstops
M574 X1 P"io0.in" S1 ; configure X axis endstop
M574 Y1 P"io1.in" S1 ; configure Y axis endstop
M574 Z1 S2 ; configure Z axis endstop; Mesh Bed Compensation
M557 X25:270 Y25:275 S20:20 ; define grid for mesh bed compensation; Sensors
M308 S0 P"temp0" Y"thermistor" A"Heated Bed Bottom" T100000 B4138 C7.06e-8 ; configure sensor #0
M308 S1 P"temp1" Y"thermistor" A"Heated Bed Top" T100000 B4138 C7.06e-8 ; configure sensor #1
M308 S2 P"temp2" Y"thermistor" A"Nozel" T100000 B4725 C7.06e-8 ; configure sensor #2; filament runout sensor
M591 D0 P2 C"^io3.in" S1 ; filament monitor connected to E0 endstop; Heaters
M950 H0 C"out0" T0 ; create heater #0
M143 H0 P0 T0 C0 S140 A0 ; configure heater monitor #0 for heater #0
M307 H0 R0.811 K0.542:0.000 D6.05 E1.35 S1.00 B0 ; configure model of heater #0
M950 H1 C"out1" T2 ; create heater #1
M143 H1 P0 T1 C0 S285 A0 ; configure heater monitor #0 for heater #1
M307 H1 R2.311 K0.339:0.000 D5.33 E1.35 S1.00 B0 V23.7 ; configure model of heater #1; Heated beds
M140 P0 H0 ; configure heated bed #0; Fans
M950 F0 C"out8" ; create fan #0
M106 P0 C"Part Fan" S0 L52 X255 B0.1 ; configure fan #0; Tools
M563 P0 D0 H1 S"SMuFF-0" ; Define tool 0
G10 P0 X0 Y0 Z0.0 R0 S0 ; Set axes offsets and the initial active and
; standby temperatures for this toolM563 P1 D0 H1 S"SMuFF-1" ; Define tool 1
G10 P1 X0 Y0 Z0.0 R0 S0 ; Set axes offsets and the initial active and
; standby temperatures for this toolM563 P2 D0 H1 S"SMuFF-2" ; Define tool 2
G10 P2 X0 Y0 Z0.0 R0 S0 ; Set axes offsets and the initial active and
; standby temperatures for this toolM563 P3 D0 H1 S"SMuFF-3" ; Define tool 3
G10 P3 X0 Y0 Z0.0 R0 S0 ; Set axes offsets and the initial active and
; standby temperatures for this toolM563 P4 D0 H1 S"SMuFF-4" ; Define tool 4
G10 P4 X0 Y0 Z0.0 R0 S0 ; Set axes offsets and the initial active and
; standby temperatures for this tool; Global Variables
global flag_FilamentChange = 0
/29/2024, 7:28:29 PM M122
=== Diagnostics ===
RepRapFirmware for Duet 3 MB6HC version 3.5.1 (2024-04-19 14:30:55) running on Duet 3 MB6HC v1.02 or later (SBC mode)
Board ID: 08DJM-9P63L-DJMSS-6J1FA-3SN6N-1VHVA
Used output buffers: 1 of 40 (17 max)
=== RTOS ===
Static ram: 155208
Dynamic ram: 90148 of which 3084 recycled
Never used RAM 94096, free system stack 132 words
Tasks: SBC(2,ready,553.1%,324) HEAT(3,nWait 1,19.8%,321) Move(4,nWait 6,1056.1%,218) CanReceiv(6,nWait 1,0.0%,940) CanSender(5,nWait 7,0.0%,334) CanClock(7,delaying,7.2%,334) TMC(4,nWait 6,6051.5%,56) MAIN(2,running,24496.3%,103) IDLE(0,ready,44.9%,30), total 32228.9%
Owned mutexes: HTTP(MAIN)
=== Platform ===
Last reset 03:11:11 ago, cause: power up
Last software reset at 2024-04-29 15:51, reason: User, Gcodes spinning, available RAM 94696, slot 1
Software reset code 0x6003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a
Error status: 0x00
MCU temperature: min 37.0, current 42.1, max 43.7
Supply voltage: min 23.6, current 23.8, max 23.9, under voltage events: 0, over voltage events: 0, power good: yes
12V rail voltage: min 12.0, current 12.2, max 12.5, under voltage events: 0
Heap OK, handles allocated/used 99/1, heap memory allocated/used/recyclable 2048/188/164, gc cycles 1
Events: 0 queued, 0 completed
Driver 0: standstill, SG min 0, mspos 536, reads 26387, writes 37 timeouts 0
Driver 1: standstill, SG min 0, mspos 904, reads 26387, writes 37 timeouts 0
Driver 2: standstill, SG min 0, mspos 408, reads 26387, writes 37 timeouts 0
Driver 3: standstill, SG min 0, mspos 360, reads 26383, writes 41 timeouts 0
Driver 4: standstill, SG min 0, mspos 776, reads 26383, writes 41 timeouts 0
Driver 5: standstill, SG min 0, mspos 488, reads 26395, writes 29 timeouts 0
Date/time: 2024-04-29 19:28:29
Slowest loop: 596.63ms; 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 25, maxWait 1361521ms, bed compensation in use: none, height map offset 0.000, max steps late 1, min interval 0, bad calcs 0, ebfmin 0.00, ebfmax 1.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 167152, completed 167152, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 12], 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 doing "M122" 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 0x80000003
Code queue 0 is empty
Q1 segments left 0, axes/extruders owned 0x0000000
Code queue 1 is empty
=== Filament sensors ===
check 50329187 clear 34370445
Extruder 0 sensor: no filament
=== CAN ===
Messages queued 103156, received 0, lost 0, errs 54491995, boc 0
Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 57356/0/0
Tx timeouts 0,0,57355,0,0,45799 last cancelled message type 30 dest 127
=== SBC interface ===
Transfer state: 5, failed transfers: 0, checksum errors: 0
RX/TX seq numbers: 56875/56875
SPI underruns 0, overruns 0
State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x253c0
Buffer RX/TX: 0/0-0, open files: 0
=== Duet Control Server ===
Duet Control Server version 3.5.1 (2024-04-19 16:20:35, 32-bit)
HTTP+Executed:Executing M122
Code buffer space: 4096
Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 4
Full transfers per second: 39.21, max time between full transfers: 185.7ms, max pin wait times: 75.8ms/11.4ms
Codes per second: 3.89
Maximum length of RX/TX data transfers: 4436/1528
I will try and get the run of the M98 P"config.g" tomorrow, but I think I figured it out. I found this note:
M400: Wait for current moves to finish.
Parameters
Sn (RRF 3.5.0 and later only, optional, default 0)
0 = release all axes and extruders owned by the current motion system except for axes/extruders needed by the current tool.
1 = do not release axes or extruders.If I am reading this write, A axes will not get released right away. Unless a M400 code is encountered. So, calling multiple scripts can get dice. At least as far as the axes the script is manipulating is concerned. In any event sounds good with the error I am getting "G1: Axis X is already used by a different motion system." and the release notes for the RRF 3.5 firmware.
This is probably overkill, but i put M400 at the end of all my scrips. And am going to try a run.
-
@guywinslow
Hear is my run of the config.g:4/30/2024, 7:15:35 AM M98 P"0:/sys/config.g"
4/30/2024, 7:15:35 AM Error: in file config.g line 108: variable 'global.flag_FilamentChange' already exists
4/30/2024, 7:15:16 AM Connected to railcoreI would expect this error as it is run after the printer was started. I did a dry run last night (no filament) with my M400 fix. No Errors. going to try test print with 8 manual filament changes.
Minimal test to see if this is going to work.
No MMC setup in Hardware. -
@guywinslow
Ok, 3 of 4 test prints worked ok, Beter then 1 of 2. maybe still and issue. Hear is the scripts i wrote to salve this issue:Scripts used for Manul filament change.
- To Start a Print
a. Select the filament you want to start with.
b. Run the print file. - When the printer sees the M600 command in the Print file it will pause the Print.
a. Deselect the Tool and the filament will automatically move to the Safe position on the print bed and unload the filament.
b. Change the filament with the next filament to print with.
c. Select that tool and the filament will be loaded.
d. Just hit the resume button after that.
===============================================================================
Tool 0; tfree0.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "tfree0.g"
if {state.currentTool != -1}
M83 ; relative extrusion
G91 ; relative movement
G1 Z2.0 E-10 F3600 ; retract 10mm up 2mm
M106 S0 ; turn off our print cooling fan
M400 ; Wait for current moves to finish
M98 P"0:/macros/PETG_Unload.g"
M400 ; Wait for current moves to finish; tpre0.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "tpre0.g"
if {state.currentTool != 0}
M98 P"0:/macros/PETG_Load.g"
M400 ; Wait for current moves to finish; tpost0.g
;
; called after tool 0 has been selected
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "tpost0.g"
M116 P0 ; wait for tool temperatures to be reached
M400 ; Wait for current moves to finish===============================================================================
Tool 1; tfree1.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "tfree1.g"
if {state.currentTool != -1}
M83 ; relative extrusion
G91 ; relative movement
G1 Z2.0 E-10 F3600 ; retract 10mm up 2mm
M106 S0 ; turn off our print cooling fan
M400 ; Wait for current moves to finish
M98 P"0:/macros/PETG_Unload.g"
M400 ; Wait for current moves to finish; tpre1.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "tpre1.g"
if {state.currentTool != 0}
M98 P"0:/macros/PETG_Load.g"
M400 ; Wait for current moves to finish; tpost1.g
;
; called after tool 0 has been selected
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "tpost0.g"
M116 P0 ; wait for tool temperatures to be reached
M400 ; Wait for current moves to finish===============================================================================
; Name: start.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
; The global.flag_FilamentChange vareable is created in the config.g. The
; value key is as falows.
;
; Filament Change / Pause Indicator
; Default: 0
; 0 = Pause Script
; 1 = Filament Change Script
;
set global.flag_FilamentChange = 0
M400 ; Wait for current moves to finish; filament-change.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "filament-change.g"
set global.flag_FilamentChange = 1
M83 ; relative extrusion
G1 E-10 F3600 ; retract 10mm
M400 ; Wait for current moves to finish
G91 ; relative movement
G1 Z2 F3600 ; raise head 2mm
G90 ; set to Absolute Positioning
M400 ; Wait for current moves to finish; pause.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
echo "pause.g"
M83 ; relative extrusion
G1 E-2 F3600 ; retract 2mm
M400 ; Wait for current moves to finish
G91 ; relative movement
G1 Z2 F3600 ; raise head 2mm
G90 ; set to Absolute Positioning
M400 ; Wait for current moves to finish; resume.g
;
; Notes
; Make sure we wait until motion stops, in RRF 3.5.0 and later with
; multiple motion systems release owned axes and extruders.
;
G90 ; set to Absolute Positioning
G1 R1 X0 Y0 Z1 F5000 ; move to 1mm above the resume location
M400 ; Wait for current moves to finish
G1 R1 X0 Y0 Z0 F500 ; move to the resume location
M400 ; Wait for current moves to finish
if {global.flag_FilamentChange == 1}
echo "Filament Change Pause"
M83 ; relative extrusion
G1 E10 F3600 ; extrude 10mm
M400 ; Wait for current moves to finish
else
echo "Normal Pause"
M83 ; relative extrusion
G1 E2 F3600 ; extrude 2mm
M400 ; Wait for current moves to finish
set global.flag_FilamentChange = 0
M400 ; Wait for current moves to finish===============================================================================
Macros; PETG_load.g
;
; Notes
; Loads PETG into the first tool T0
;
var myTool = 0
echo "PETG load.g"
M98 P"0:/macros/Tools/park.g"
T{var.myTool} P0
echo "Nozzle is being heated up"
G10 P{var.myTool} S238 ; Set current tool temperature to 238c
M116 P{var.myTool} ; Wait for the temperatures to be reached
echo "Nozzle temperature is reached"
echo "Feeding filament..."
M98 P"0:/macros/Tools/purge.g"
G4 P1000 ; Wait one second
echo "Filament loaded & Purged"
echo "Seting config for PETG"
M302 S200 R200 ; Allow extrusion starting from 120°C and retractions already from 110°C
M566 E3000 ; jerk settings for PETG
M203 E3600 ; set maximum speeds (mm/min)
M201 E500 ; set accelerations (mm/s^2)
; Set Temperatures
G10 P{var.myTool} R180 S240 ; Set Nozzle Active and Standby Temperature
G1 E-10 F1800 ; Retract 10mm of filament at 1800mm/min
M98 P"0:/macros/Tools/unpark.g"
echo "Finushed"
M400 ; Wait for current moves to finish; PETG_Unload.g
;
; Notes
; Unloads PETG in tool T0
;
var myTool = 0
echo "PETG_Unload.g"
T{var.myTool}
echo "Nozzle is being heated up"
G10 P{var.myTool} S238 ; Set current tool temperature to 238c
M116 P{var.myTool} ; Wait for the temperatures to be reached
echo "Nozzle temperature is reached"
echo "Retracting filament..."
G1 E-50 F300 ; Retract 20mm of filament at 300mm/min
M98 P"0:/macros/Tools/park.g"
G1 E-200 F3000 ; Retract 480mm of filament at 3000mm/min
G10 P{var.myTool} R180 S0
T{-1} P0 ; Turn off extruder Current tool
echo "Filament Unloaded"
M400 ; Wait for current moves to finish; PLA load.g
;
; Notes
; Loads PLA into the Secound tool T1
;
var myTool = 1
echo "PLA load.g"
echo "Using ",{var.myTool}
M98 P"0:/macros/Tools/park.g"
T{var.myTool} P0
echo "Nozzle is being heated up"
G10 P{var.myTool} S238 ; Set current tool temperature to 238c
M116 P{var.myTool} ; Wait for the temperatures to be reached
echo "Nozzle temperature is reached"
echo "Feeding filament..."
M98 P"0:/macros/Tools/purge.g"
G4 P1000 ; Wait one second
echo "Filament loaded & Purged"
echo "Seting config for PLA"
M302 S200 R200 ; Allow extrusion starting from 120°C and retractions already from 110°C
M566 E3000 ; jerk settings for PETG
M203 E3600 ; set maximum speeds (mm/min)
M201 E500 ; set accelerations (mm/s^2)
; Set Temperatures
G10 P{var.myTool} R180 S228 ; Set Nozzle Active and Standby Temperature
G1 E-10 F1800 ; Retract 10mm of filament at 1800mm/min
M98 P"0:/macros/Tools/unpark.g"
echo "Finushed"
M400 ; Wait for current moves to finish; PLA_Unload.g
;
; Notes
; Unloads PLA in tool T1
;
var myTool = 1
echo "PLA_Unload.g"
T{var.myTool}
echo "Nozzle is being heated up"
G10 P{var.myTool} S238 ; Set current tool temperature to 238c
M116 P{var.myTool} ; Wait for the temperatures to be reached
echo "Nozzle temperature is reached"
echo "Retracting filament..."
G1 E-50 F300 ; Retract 20mm of filament at 300mm/min
M98 P"0:/macros/Tools/park.g"
G1 E-200 F3000 ; Retract 480mm of filament at 3000mm/min
G10 P{var.myTool} R180 S0
T{-1} P0 ; Turn off extruder Current tool
echo "Filament Unloaded"
M400 ; Wait for current moves to finish - To Start a Print
-
@guywinslow
Ok, I could not Get rid of the "G1: Axis X is already used by a different motion system" still but did stabilize it so it only happened when returning from "Printing paused for filament change" from the System. So, I put the M400 code in my slicer GCode so it will insert after the M600 command inserted into the print file.M600
G10 P[current_extruder] R180 ; set standby temperatures for tools
M400Seems to have gotten riad of it.
Next issue: "Error: M572: Invalid extruder number '1'"
5/2/2024, 7:21:12 AM Printing paused for filament change at X84.1 Y145.9 Z5.2
My Code {
5/2/2024, 7:21:11 AM filament-change end.
5/2/2024, 7:21:11 AM filament-change.g
}
Not my code {
5/2/2024, 7:21:11 AM Resume state saved
5/2/2024, 7:21:00 AM Error: M572: Invalid extruder number '1'
5/2/2024, 7:18:31 AM M24
Printing resumed
5/2/2024, 7:18:30 AM Filament Change Pause
}this is not happening in my code, so I am Not sure where to look:
- My Setup code in Config.g
- DWC code
- SBC code
I hope this trouble shouting helps someone out there. I have my printer working well enough to print my SMuFF parts now using PLA as the Interface Lyer for my support.
-
@guywinslow It sounds like you are using an SBC based system is that correct? If so login to your SBC using ssh. change directory to where your "virtual sd card" is located (sorry I can't remember the actual path just now). then cd into the sys directory and use grep to search all of the files from M572 and m572 hopefully that will give you some idea of the possible cause of the problem!
-
/opt/dsf/sd
so this should do it:cd /opt/dsf/sd grep -r -i --exclude=*.json M572 sys macros filaments
will do a recursive case-insensitive search for M572 in those three directories, but not look in json files.
-
@achrn Sory, it took me so long to get back to you. I actually had no M572 commands. I added them into my PETG_Load.g and PLA_Load.g files and the error got consistent enough that the print quit at the next running of one of these files {PETG_Load.g, PLA_Load.g}. I ran your command and back to random error stopping print. About to switch to clipper. I don't have any experience with clipper though.
-
Have you updated to firmware 3.5.2?
-
@Phaedrux Yes sorry, I don't do this message boards well. It was stabler. Got what I needed to install My SMuFF filament changer. So far only failure point is the Filament cutter. The SMuFF works perfectly. Scripts work without Crashing or giving me error codes not relating to my scripts. I am working on a Filament cutter using two blades from a Wire feed cutter. Had to poll my Direct drive from the Hotend to make room for the cutter. Bummer. But hot end is liter. Futcher add On's to the printer and 8-10 inch screen to the SBC in place of PanelDuo, posable bring back my direct drive extruder.
Note - This is not a Production Printer, just my retirement hobby