Guess I’ll put an explanation for everyone here , as I think a lack of understanding is creating unnecessary criticism. This comes from working on industrial instrumentation for over 40 years and having personal experience programming PID control loops.
When you are “calibrating” PID loops, one of the things you shoot for is minimizing overshoot, but you don’t worry about eliminating it. To get a fairly linear slope without a lot of “hunting” (where the temperature swings above and below the setpoint but the swings get smaller with each cycle), you have to set it up with a slower climb to the setpoint. It’s actually faster to get to a setpoint is by allowing a little bit of overshoot and bring it back down to the desired setpoint. To entirely eliminate overshoot, you have to drastically increase the time it takes to get to the setpoint.
On top of that, out of the 4 most commonly controlled parameters (temperature, pressure, level, and flow), temperature changes are the slowest to respond to any input variations The greater the mass the higher you have to push the power supplied to increase the response rate, but then it takes longer for the heat to dissipate after power is decreased. So depending on the wattage of your heaters and the mass and surface area of your bed, the PID programming variables have to change to accommodate those variables.
The graph you showed is most often the typical compromise for obtaining a combination of the quickest change with the least amount of heating and overshoot.
One other issue is how many sensors you have, and where they are placed. The further from the heating elements the slower the response. This variable, along with the fact you lose more heat at the perimeter of the bed than at the center, also affect your response. Heated chambers set to the same temperature of the bed are the only way to overcome this.
So why not have sectors that are individually tracked and adjusted like in the Prusa Mk 4? Well, if you think that printer is expensive, that feature is one of the reasons.
As to ways to compensate.
-
Use gcode to delay the start of the print for a few minutes after the bed reaches temperature (to me this should be a clickable option in EVERY slicer, with an entry for the delay time).
-
Chamber heater- preheat the chamber. VERY slow.
-
If you are putting something in the slicer, set your bed temperature first to preheat, then import your object, do all your positioning and modifications, slice it and then send it to the printer after the bed is at temperature for a few minutes or more.
I use #3 when working with hot bed temperatures like ABS, ASA, and other high temp filaments require. To date, the only adhesion issues I’ve had come from not cleaning the bed often enough.