CNC Setup Duet 3D 6XD Controller Board
-
One thing to remember about config.g on startup. If there is an error it tends to stop running config.g at the point of the error without telling you so.
So it may well be that the reference to address 121 when there is no connection to 121 is causing the error and nothing further gets executed.
Ask me how I know this.
Frederick
-
@fcwilt I will try to comment out this line so the system won’t recognize it and I will update accordingly. I’m going to ask how do you know about this ?.
Thank you
-
@moe-adams9093 said in CNC Setup Duet 3D 6XD Controller Board:
@fcwilt I will try to comment out this line so the system won’t recognize it and I will update accordingly. I’m going to ask how do you know about this ?.
Thank you
My system had been working fine for quite a while, but then after a recent edit of config.g and reset of the system the Z probe no longer worked. I tracked it down to an error that preceded the lines that configured the Z probe.
I finally remembered that errors in config.g at "boot-up" were silent (bad idea in my opinion), so I executed config.g from the DWC console and then it reported what line had the error which was easy to spot and fix.
Frederick
-
@moe-adams9093
I think this is a timing problem. Usually external stepper drivers can’t run as fast as internal stepper drivers, so we need to set the timing for the step and direction pulses. This is done with the M569 T parameter :Taa:bb:cc:dd (firmware 1.21 and later) Minimum driver step pulse width, step pulse interval, direction setup time and direction hold time, in microseconds
I can’t find a data sheet for your stepper drivers that says what timing to use, except that 200MHz is the fastest step rate per second, which is 5us between steps. So try changing the M569 P0.0 S1 line in config.g to:
M569 P0.0 S1 T5:5:10:10 ; physical drive 0.0 goes forwards
Ian
-
@fcwilt said in CNC Setup Duet 3D 6XD Controller Board:
If there is an error it tends to stop running config.g at the point of the error without telling you so.
No, it doesn’t. Config.g can have multiple errors, and still run to the end. If you can show an example where it breaks the running, please start a new thread showing this so we can track down why it’s happening.
Ian
-
@droftarts said in CNC Setup Duet 3D 6XD Controller Board:
No, it doesn’t. Config.g can have multiple errors, and still run to the end. If you can show an example where it breaks the running, please start a new thread showing this so we can track down why it’s happening.
It most certainly appeared to stop executing for me.
I concluded that nothing past the point of the error had been executed based on the fact that the configuration of the Z probe, triggers, tools, etc. which all followed the point of the error, had not been configured.
I will try to come up with a simple example of such a config file. Mine is quite complex, using lots of M98 calls to other code.
I remember what the error was in my config file - so I can put that error back and run some more tests.
Frederick
-
@fcwilt perhaps missing a quote mark, so everything following until the next quote mark counts as a string, could cause chunks of config.g not to work, I suppose. Please start a new thread if you find an example.
Ian
-
I have done some tests first I removed the 1 HCL board CAN address from the config.g file the error is gone now, but still no movement after that I added timing input as @droftarts requested still no luck.
I still do get some errors on of them it says
Error in macro line 27 while starting up: in file macro line 27 column 27: M92: array too long, max length = 0
Here's my new M122
m122 === Diagnostics === RepRapFirmware for Duet 3 MB6XD version 3.5.0-rc.1 (2023-08-31 16:21:04) running on Duet 3 MB6XD v1.0 (standalone mode) Board ID: 08DLM-956DA-M2NS4-6JKD6-3S86T-1B32S Used output buffers: 1 of 40 (19 max) Error in macro line 27 while starting up: in file macro line 27 column 27: M92: array too long, max length = 0 === RTOS === Static ram: 153300 Dynamic ram: 117888 of which 248 recycled Never used RAM 71556, free system stack 193 words Tasks: NETWORK(1,ready,34.4%,182) ETHERNET(5,nWait,0.1%,325) HEAT(3,nWait,0.0%,370) Move(4,nWait,0.0%,255) CanReceiv(6,nWait,0.0%,941) CanSender(5,nWait,0.0%,335) CanClock(7,delaying,0.0%,344) MAIN(1,running,65.4%,444) IDLE(0,ready,0.0%,30), total 100.0% Owned mutexes: === Platform === Last reset 00:03:32 ago, cause: software Last software reset at 2023-12-07 19:59, reason: User, Gcodes spinning, available RAM 71700, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 MCU temperature: min 33.9, current 34.5, max 34.8 Supply voltage: min 26.7, current 26.8, max 26.8, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.2, under voltage events: 0 Heap OK, handles allocated/used 99/2, heap memory allocated/used/recyclable 2048/80/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: ok Driver 1: ok Driver 2: ok Driver 3: ok Driver 4: ok Driver 5: ok Date/time: 2023-12-07 20:03:03 Slowest loop: 4.30ms; fastest: 0.07ms === Storage === Free file entries: 20 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 3.5ms, write time 0.0ms, max retries 0 === Move === DMs created 125, segments created 6, maxWait 80472ms, 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 25, completed 25, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 15], 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 -1 -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 0x0000006 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 1061, received 0, lost 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 1061/0/0 Tx timeouts 0,0,1060,0,0,0 last cancelled message type 30 dest 127 === Network === Slowest loop: 1.54ms; 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 0 0 0 Socket states: 5 2 2 2 2 0 0 0 === Multicast handler === Responder is inactive, messages received 0, responses 0
in side M122 file under the Movement Locks
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 0x0000006 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty
I don't know if there's an issue under this section causing this problem
I ran M121 and I get this error
m121 Error: Pop(): stack underflow on HTTP
Also, here's my most recent config.g file
; Configuration file for Duet 3 MB 6XD (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Sun Dec 03 2023 20:33:20 GMT-0600 (Central Standard Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Makinta-R1500" ; set printer name ; 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 P0.0 S1 T5:5:10:10 ; physical drive 0.0 goes forwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M584 Y0.0 Z0.2 X0.3 ; set drive mapping M92 X80.00 Y80.00 Z80.00 E420.00 ; set steps per mm M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X1500 Y1500 Z150 S0 ; set axis maxima ; Endstops M574 Y1 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io0.in M574 Z1 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin io1.in ; Z-Probe M558 P0 H5 F120 T12000 ; disable Z probe but set dive height, probe speed and travel speed M557 X15:215 Y15:195 S20 ; define mesh grid ; Heaters M140 H-1 ; disable heated bed (overrides default heater mapping) ; Fans M950 F0 C"out3" Q500 ; create fan 0 on pin out3 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out4" Q500 ; create fan 1 on pin out4 and set its frequency M106 P1 S1 H T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D0 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 ; Custom settings are not defined
here's the current driver status
12/7/2023, 8:21:18 PM M569 P0.0 Drive 0 runs forwards, active high enable, timing 5.0:5.0:10.0:10.0us (actual 5.0:5.7:10.7:11.0us)
M98
~~M98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled Error: bad drive number Error: in file macro line 58: G10: Invalid tool number Error: in file macro line 59: G10: Invalid tool number~~
thank you
-
Let's start with the easy one: M121 will "pop" the saved state of the machine but you need to do M120 first to save the state of the machine to have something to "pop".
The error mentioning M92 is very odd. It may be caused by referencing the E axis but you have no E drive in the M584.
That is the first thing I would do - remove the E in M92 and see if the error goes away.
Frederick
-
@fcwilt Thank you, for all your help.
I did figure it out I was using the old configurator tool for the 3.5 firmware, and I didn't know that Reprap has a new configurator tool after I did a new config setup the motors are working fine now these are just testing motors next step is going with the 1 HCL + Moons Nema 24 with the incremental encoder so hopefully that goes smooth.
-
I never used the config tools - I felt they just got in the way of learning all the bits and pieces I needed to know to really understand what was going on in the various files.
Very glad you got it working so far. Keep us informed of your progress.
Frederick
-
@moe-adams9093 thanks, I'll mark this as solved. Please start a new thread if you have other problems unrelated to this one.
-
-
-
@moe-adams9093 can you post your current config.g?
Also, see https://docs.duet3d.com/en/User_manual/Machine_configuration/Configuration_CNC
Ian
-
Sure, I do get some errors when I start up the duet controller I'm going to post some screenshots, as well as M122, M98, and Config.g.
M122
12/9/2023, 1:46:27 PM M122 === Diagnostics === RepRapFirmware for Duet 3 MB6XD version 3.5.0-rc.1 (2023-08-31 16:21:04) running on Duet 3 MB6XD v1.0 (standalone mode) Board ID: 08DLM-956DA-M2NS4-6JKD6-3S86T-1B32S Used output buffers: 1 of 40 (18 max) Error in macro line 54 while starting up: exactly one of EFHJPSR must be given === RTOS === Static ram: 153300 Dynamic ram: 117976 of which 0 recycled Never used RAM 71860, free system stack 210 words Tasks: NETWORK(1,ready,36.0%,182) ETHERNET(5,nWait,0.1%,317) HEAT(3,nWait,0.0%,340) Move(4,nWait,0.0%,339) CanReceiv(6,nWait,0.0%,941) CanSender(5,nWait,0.0%,335) CanClock(7,delaying,0.0%,344) MAIN(1,running,63.9%,162) IDLE(0,ready,0.0%,30), total 100.0% Owned mutexes: === Platform === Last reset 00:18:19 ago, cause: power up Last software reset at 2023-12-08 02:09, reason: User, Gcodes spinning, available RAM 71756, slot 1 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 16.9, current 35.3, max 35.4 Supply voltage: min 26.7, current 26.8, max 26.8, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.2, under voltage events: 0 Heap OK, handles allocated/used 99/2, heap memory allocated/used/recyclable 2048/48/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: ok Driver 1: ok Driver 2: ok Driver 3: ok Driver 4: ok Driver 5: ok Date/time: 2023-12-09 13:46:25 Slowest loop: 4.30ms; fastest: 0.07ms === Storage === Free file entries: 20 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 3.5ms, write time 0.0ms, max retries 0 === Move === DMs created 125, segments created 0, maxWait 0ms, 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 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], 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 0x0000000 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 5499, received 0, lost 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 5499/0/0 Tx timeouts 0,0,5498,0,0,0 last cancelled message type 30 dest 127 === Network === Slowest loop: 3.95ms; 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
M98 P"config.g"
12/9/2023, 1:48:12 PM M98 P"config.g" HTTP is enabled on port 80 Warning: Sensor number 0 has not been defined Warning: Heater 0 predicted maximum temperature at full power is 321°C Warning: Sensor number 1 has not been defined Error: exactly one of EFHJPSR must be given
Config.g
; Configuration file for RepRapFirmware on Duet 3 Main Board 6XD ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.0-rc.1 on Thu Dec 07 2023 21:03:57 GMT-0600 (Central Standard Time) ; General M550 P"MAKINTA-R1500" ; set hostname ; Network M552 P0.0.0.0 S1 ; configure Ethernet adapter M586 P0 S1 ; configure HTTP ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; External Drivers M569 P0.0 S1 R0 T5:5:10:0 ; driver 0.0 goes forwards and requires an active-low enable signal (X axis) M569 P0.1 S1 R0 T5:5:10:0 ; driver 0.1 goes forwards and requires an active-low enable signal (Y axis) M569 P0.2 S1 R0 T5:5:10:0 ; driver 0.2 goes forwards and requires an active-low enable signal (Y axis) M569 P0.3 S1 R0 T5:5:10:0 ; driver 0.3 goes forwards and requires an active-low enable signal (Z axis) ; Kinematics M669 K0 ; configure Cartesian kinematics ; Axes M584 X0.0 Y0.1:0.2 Z0.3 ; set axis mapping M350 X16 Y16 Z16 I0 ; configure microstepping without interpolation M92 X20 Y20 Z20 ; configure steps per mm M208 S1 X0 Y0 Z0 ; set axis minima M208 S0 X1500 Y1500 Z150 ; set axis maxima M566 X5000 Y5000 Z5000 ; set maximum instantaneous speed changes (mm/min) M203 X10000 Y10000 Z10000 ; set maximum speeds (mm/min) M201 X1000 Y1000 Z1000 ; set accelerations (mm/s^2) ; Endstops M574 X1 P"!io1.in" S1 ; configure X axis endstop M574 Y1 P"!io2.in+!io3.in" S1 ; configure Y axis endstop M574 Z1 P"!io4.in" S1 ; configure Z axis 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 R2.43 D5.5 E1.35 K0.56 B1 ; configure model of heater #0 M950 H1 C"out1" T1 ; create heater #1 M143 H1 P0 T1 C0 S285 A0 ; configure heater monitor #0 for heater #1 M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #1 ; Heated beds M140 P0 H0 ; configure heated bed #0 ; Spindles M950 C"io4.out+pson+led" Q500 L60:10000 ; configure spindle #0 ; Miscellaneous M453 ; select CNC mode
please let me know how can I fix those errors.
Thank you
-
@moe-adams9093 said in CNC Setup Duet 3D 6XD Controller Board:
For this error in M122 (and onscreen in DWC, and in the response to running config.g)
Error in macro line 54 while starting up: exactly one of EFHJPSR must be given
it relates to this line:M950 C"io4.out+pson+led" Q500 L60:10000 ; configure spindle #0
See https://docs.duet3d.com/en/User_manual/Reference/Gcodes#configuration-examples-and-notes
You need an R parameter to denote this output as a spindle, ie
M950 R0 C"io4.out+pson+led" Q500 L60:10000 ; configure spindle #0
I'm not sure these are the best pins for laser control. io4.out and pson are 3.3V signalling, while led is 5V.
For the DWC incompatibility error, check what version of RRF and DWC you are using in the Setting > General and Settings > Machine specific menu options. They should match.
Ian