Strange Behaviour in RRF3.0
-
M950 has to come before and M308's
See https://duet3d.dozuki.com/Wiki/Gcode#Section_M950_Create_heater_fan_or_GPIO_servo_pin -
Ok thanks I will correct it but the configurator put it in that order!
Any ideas on the need for the M140 command with the false description? -
I would suggest that the M140 can be disabled.
I don't have one in either of my machines configs -
This is what I now get by making those changes:
Here is my full config.
; Configuration file for Duet 3 (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time); General preferences
M555 P2 ; Set Marlin-style output
G21 ; Set dimensions to millimetres
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"Duet3" ; set printer name
M558 P0 S1 ; Enable http
M586 P1 S1 ; Enable FTP
M586 P2 S1 ; Enable Telnet
M669 K1 ; select CoreXY mode; Drives
M569 P0 S1 ; X physical drive 0.0 goes forwards
M569 P1 S1 ; Y physical drive 0.1 goes forwards
M569 P2 S0 ; Z0 physical drive 0.2 goes backwards
M569 P3 S0 ; Z1 physical drive 0.3 goes backwards
M569 P4 S0 ; E0 physical drive 0.4 goes backwards; Set drive mapping
M584 X0 Y1 Z2:3 E4 ; Dual Z make sure drive 2 is left hand Z and 3 is right hand
M92 X80.00 Y80.00 Z400.00 E96.00 ; set steps per mm
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation; Accelerations, speed and jerk
M98 P"/macros/print_scripts/default_speed.g";M566 X600.00 Y600.00 Z12.00 E120.00 ; Set maximum instantaneous speed changes (mm/min) - Jerk
;M203 X18000.00 Y18000.00 Z180.00 E1500.00 ; set maximum speeds (mm/min)
;M201 X3000.00 Y3000.00 Z100.00 E10000.00 ; set accelerations (mm/s^2) (print moves)M906 X1000 Y1000 Z1000 E1100 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Leadscrew positions: The measurement is taken from X=0, Y=0. Therefore X will be negative, Y positive and middle of bed = 160
M671 X-100:415 Y160:160 S2.0; Axis Limits
M208 X-15 Y-12 Z0 S1 ; Set axis minima (adjust to make X=0 and Y=0 the edges of the bed)
M208 X310 Y310 Z380 S0 ; set axis maxima; Endstops
M574 X1 S1 P"!io0.in" ; configure active-low endstop for low end on X via pin io0.in
M574 Y1 S1 P"!io1.in" ; configure active-low endstop for low end on Y via pin io1.in
M581 P"^!io2.in" T0 C0 ; configure active-low endstop to perform an e-stop and let it trigger at any time without restrictions
M581 P"!io4.in" T2 C0 ; configure active-low switch to perform filament unload macro
M581 P"!io5.in" T3 C0 ; configure active-low switch to perform filament load macro; Filament Run Out Sensor
;M591 D0 P1 C4 S1 ; Code requires conversion Filament runout Sensor for Extruder E0 P1 = signal HIGH.; Z-Probe
M558 P1 C"io3.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds
; G31: the P is the reported Z value when triggered. X,Y are offset coordinates. Z is trigger height, you can decrease value if nozzle is too close
; or increase if too far away.
G31 P500 X-30 Y-5 Z2.18 ; set Z probe trigger value, offset and trigger height; Mesh Grid
; The following M557 commands are not needed if you are using a bed.g file to perform bed compensation
;*** Adjust the XY coordinates in the following M557 commands to suit your build and the position of the Z probe
M557 X10:280 Y20:280 S50 ; Define small mesh grid
;M557 X10:280 Y10:280 S20 ; Define large mesh grid; Bed thermistor/heater
M950 H0 C"out0" T0 ; bed heater H = heater no. C = output T = temperature sensor no. defined below.
M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; bed thermistor
M143 H0 S120 ; set temperature limit for bed heater 0 to 120C
M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit
;M140 H0 ; map heated bed to heater 0 ??????????????; Extruder thermister/heater
M950 H1 C"out1" T1 ; ext heater H = heater no. C = output T = temperature sensor no. defined below.
M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; extruder thermistor
M143 H1 S280 ; set temperature limit for extruder heater 1 to 280C
M307 H1 B0 S1.00 ; disable bang-bang mode for the nozzle heater and set PWM limitM307 H0 A108.4 C735.4 D1.4 S1.00 V12.5 B0 ; Autotune result for bed
M307 H1 A299.8 C109.4 D4.0 S1.00 V12.3 B0 ; Autotune result for hotend;CPU Temperature Calibration
M912 P0 S-10.0;M308 S20 Y"mcu-temp" A"CPU" ; Defineix sensor S20 for CPU temperature
;Expansion pins
;M307 H2 A-1 C-1 D-1 ; Code requires conversion Make heater2 on extruder2 available and use it for pwm led lighting; Fans
M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency (parts fan)
M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"out8" Q500 ; create fan 1 on pin out8 and set its frequency (ext fan)
M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on;Re-assigned fan pins
;CPU fan
M950 F2 C"out9" ; create fan 2 (CPU fan)
M308 S3 Y"mcutemp" A"mcutemp" ; set up a virtual sensor for cpu fan
M106 P2 T30 H3 ; set fan 2 value. Fan comes on when cpu temp is above 30 degrees (Cool the pi as well!)
;Led Lighting
M950 F3 C"out4" Q500 ; create a fan 3 output to use for led lighting control on pin out4
M106 P3 S0 ; set output default to off; Tools
M563 P0 S"Extruder0" D0 H1 F0 ; define tool 0
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C; Custom settings
;CPU Temperature Calibration
;M912 P0 S-15.8 ; Find correct value
;M42 P2 S255 ; Turn led lighting on full
;M98 P"LevelLeadscrews.g" ; Option to perform leadscrew levelling
;M98 PEnable Mesh Levelling ; Option to enable on start up
T0 ; select first tool -
You can remove "M307 H1 B0 S1.00 ; disable bang-bang mode for the nozzle heater and set PWM limit"
As you have the correct PWM settings on the row below.
Nothing else jumps out as being incorrect though -
This is strange. I have removed M307 and here's what I get...
This is with command M140 commented out.
No bed heater showing in DWC!
..and here's with M140 back in.....
Still config error messages showing but heaters are working!!
But, if I put the M950 commands for both the bed and extruder AFTER the M307 commands AND the M307 autotune settings commented out for the bed heater I get this...…
All heaters working, no errors but no autotune settings available for the bed heater!!!!!
-
Odd.
Might be one for @dc42 to jump in on -
-
This post is deleted! -
@jay_s_uk said in Strange Behaviour in RRF3.0:
M950 has to come before and M308's
See https://duet3d.dozuki.com/Wiki/Gcode#Section_M950_Create_heater_fan_or_GPIO_servo_pinNo, M308 should come before the M950 that uses it, so that the sensor number used in the T parameter of a M950 H command already exists. OTOH any command that refers to a heater or fan number must come after the M950 command that creates that heater or fan.
-
Even with that though I cant get my bed heater to show up on DWC or work without the M140 (set bed temperature) command that RRF configurator put in and the M307 autotune settings commented out.
-
What does the command M140 H0 actually mean?
It is not documented. -
@chas2706 said in Strange Behaviour in RRF3.0:
What does the command M140 H0 actually mean?
It is not documented.It's mentioned at https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M140_Set_Bed_Temperature_Fast but not well documented. It tells RRF that the first bed heater is heater 0. I'll add some more examples to the documentation.
-
@dc42
OK thanks.
In my current config I have the commands in the correct order and includes the M140 command. All is well unless I uncomment my autotune setting for Heater HO.
The actual settings are:M307 H0 A108.4 C735.4 D1.4 S1.00 V12.5 B0 ; Autotune result for bed
When uncommented I get this:
Thanks in advance.
-
M307 must come later in config.g than then M950 command that creates that heater.
More generally, where a command references some entity (e.g. a heater, fan, sensor, GPIO port, or additional axis), that entity must be created first. Example:
M308 S2 ... ; create sensor 2
M950 H0 T2 ... ; create heater 0, uses sensor 2
M307 H0 ... ; uses heater 0
M140 H0 ; uses heater 0 -
@dc42
Thanks David that works great now!