Erratic M109
-
I'm on duetwifi latest 2.x firmware. I have a very weird temperature issue. I initially set the tool temp to 130C, then probe and finally set the temp to the final temp for printing.
Something like this
M140 S85 ; bed temperature M109 S130 ; set tool temp and wait. 130°C to prevent ooze and damage to the print bed while probing M190 S85 ; wait for bed temperature G28 ; home all axes G32 ; true bed leveling M109 S260 ; set initial tool temp and wait
what is happening is that the temp is correctly set to 130C, but the second M109 is completely ignored and the print starts with a warning in the console. As soon as it reaches the second layer where I have a third M109 (I'm lowering the temp at second layer) the temp is correctly set to the new temp.
I'm a little confused... I use a mosquito with a Slice heater and slice thermistor. Any idea? I noticed just now that M109 is deprecated on RRF but I guess internally it converts it to the appropriate commands.
-
@matt3o My guess is that in G28 and or G32 the current tool (probably T0) is being set to standby. Watch what happens to the tool in DWC when you run the start gcode. What happens if you insert
T0
after G32, but before M109 S260?Ian
-
@droftarts said in Erratic M109:
Watch what happens to the tool in DWC when you run the start gcode. What happens if you insert T0 after G32, but before M109 S260?
I tried with T0 after G32 but didn't work. From web interface I can see temp and standby temp set to 130C but not to 260C. When it reaches the second layer the temps are updated.
-
@matt3o M109 should still work. What happens if you type the commands in directly?
Can you confirm what firmware version you are on? Send M115 and post response.
Ian
-
FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 2.04 ELECTRONICS: Duet WiFi 1.02 or later + DueX5 FIRMWARE_DATE: 2019-11-01b1
apparently it's not the latest but close enough
if I set M109 manually it seems to be working... I'm pretty confused... I swear it was working before.
-
okay... I'm a bit ashamed but in my defense the docs are not completely clear
the wiki for M143 says "S Maximum permitted temperature". Apparently the maximum permitted temperature is actually what you define in the S parameter minus 1 (I guess you should give it a good +5 margin anyway).
If you set the temp (with 109) to the max temperature the duet just ignores the command but keeps executing the following gcode. Shouldn't the machine just stop or maybe give an error that tells you we reached a soft temperature limit?
It took me more time than I'd like to admit... my bad... I'll see myself out... sowwy.
-
@matt3o said in Erratic M109:
If you set the temp (with 109) to the max temperature the duet just ignores the command but keeps executing the following gcode. Shouldn't the machine just stop or maybe give an error that tells you we reached a soft temperature limit?
Yes, there should be an error message.
-
@dc42 it's a warning regarding a faulty thermistor, it would be nice that if the maxtemp is reached the duet would just say so
-
@matt3o said in Erratic M109:
the wiki for M143 says "S Maximum permitted temperature". Apparently the maximum permitted temperature is actually what you define in the S parameter minus 1 (I guess you should give it a good +5 margin anyway).
I didn't realise you had M143 set, but then you didn't post your whole config.g! However, well done for working it out. I'd give it a larger margin that just 5 degrees, to allow for overshoot; I'd say 5-10%, so for 260C you probably want the limit to be 280C.
Not sure why you didn't get a warning message. I'll test tomorrow.
Ian
-
I didn't remember I actually set M143, it was an initial configuration and it was set to a very conservative value. I've set it to 290C now.
@droftarts said in Erratic M109:
Not sure why you didn't get a warning message. I'll test tomorrow.
you get a warning but so generic that it was of little use to me. Also the docs put me off a little.
-
@matt3o I've tested this on RRF 2.05.1 (2020-02-09b1), and it works correctly. I set M143 S100, then M109 S99. As temperature overshoots a little (105C), triggered error at 100C, turned off heater and set fault condition. Also works when setting temperature in DWC. The following is copied from console, so is in reverse order, newest first.
13/02/2020, 14:45:31 Error: Heating fault on heater 1
13/02/2020, 14:45:29 M109 S99
13/02/2020, 14:44:31 M109 S100 [Checked to see if setting the temperature limit would turn on... it didn't]
13/02/2020, 14:40:19 M143
Temperature protection item 1 is configured for heater 1 and supervises heater 1 to generate a heater fault if the temperature exceeds 100.0°C
13/02/2020, 14:40:15 M143 H1 S100I also tested this with the bed heater, and it works the same.
Can you try the same in RRF 2.04, and let me know the response? Then update to the latest RRF https://github.com/dc42/RepRapFirmware/releases/tag/2.05.1 and check it works as expected?
You can see the current setting for any heater by sending M143 H[heater number]:
13/02/2020, 15:18:47 M143 H1
Temperature protection item 1 is configured for heater 1 and supervises heater 1 to generate a heater fault if the temperature exceeds 100.0°C
13/02/2020, 15:18:44 M143 H0
Temperature protection item 0 is configured for heater 0 and supervises heater 0 to generate a heater fault if the temperature exceeds 25.0°CIan
-
@droftarts thanks for checking, can you try to set M109 == M143 ?
I'll try to update to 2.05 or 3 at this point
-
@matt3o Yes, I tried setting M109 == M143 (and higher temps), and it does ignore it without warning. On the bed heater you get a warning if you try and set the bed temp at or higher than M143 setting:
Error: Temperature 60.0°C too high for heater 0
13/02/2020, 15:08:35 M143 H0 S25I've flagged this as a bug in 2.05.1 to @dc42
Ian
-
okay so I'm not a complete idiot, it is indeed a bug