For the sake of completeness, I just want to post an update that this is all working now. The net result is that when changing from a filament which prints at 290 deg C to one which needs 210, the cool down time is reduced from 122 seconds to 38 by blowing air over the lower part of the hot end with a 40mm blower fan that I had laying around. So a worthwhile upgrade especially as it cost me nothing. 🙂
I used the same while loop principal to wait for the nozzle to heat when the opposite happens (i.e. when changing from a low temperature filament to a high temperature one), instead of using M116. There are two reasons for this. Firstly, M116 will wait for all heaters associated with a tool to stabilise and in my application, I don't much care what the secondary heater is doing because it doesn't change between tools and has a wide allowable tolerance. The second reason for not using M116 is that it waits for all heaters to be within 1 deg C which with this hot end, can take a while and is unnecessary - I'm happy if the heaters are with 3 or 4 deg of the set point.
Here is an annotated example of the tpost.g file I've ended up with in case it's of any use to anyone who might stumble upon this thread.
; tpost0.g
; called after tool 0 has been selected
G4 S1 ; wait a sec
;the following will force cool the nozzle only to within 4 deg of the active temp if it's too hot
while (heat.heaters[1].current > heat.heaters[1].active+4)
M291 P"Force cooling nozzle" R"Tool Change Macro" S1 T1; display message
M106 P2 S255; turn on force cooling fan
G4 S1 ; wait a sec
M106 P2 S0 ;turn fan off
; the following will wait for the nozzle only to heat to within 3 degrees of it's active temp if it's too cold
; it won't wait for the combining block temperaure to change
while (heat.heaters[1].current < heat.heaters[1].active-3)
M291 P"Waiting for Tool 0 to reach temperature" R"Tool Change Macro" S1 T1
G4 S1
M291 P"Purging Tool 0" R"Tool Change Macro" S1 T4
M98 P"0:/macros/SinglePurge.g" ; purge nozzle
M291 P"Wiping nozzle" R"Tool Change Macro" S1 T4
M98 P"0:/macros/Nozzle wipe" ; wipe nozzle
M400 ; wait for moves to complete
G1 R2 X0 Y0 U0 V0 A0 B0 Z0 F18000 ; return gantries to wence they came prior to tool change
G11; unretract