Bed heating from Pronterface works, but not from LCD menu nor from SD print Running my Ultrabase (glass plate) through a MOSFET on an stock A8 board with Marlin 1.1.8. When I do PID tune through Pronterface (by using the M303 E-1 C8 S70 command) the bed heats up no problem and completes the tune, but when printing from SD or using the Preheat PLA command on the printer to heat the bed, nothing happens and then I get "Bed heating failed".

As its working through Pronterface I know the wiring is okay.

Configuration.h

Configuration_adv.h

Anet A8 Stock Board
Ultrabase 220x200 12v
PID Values extracted from Pronterface Via M303 E-1 C8 S70 from cold bed
Message take about 1 minute to appear, seems to be a timeout as opposed to an instant error

Disabling PIDTEMPBED and enabling MAX_BED_POWER resolves the issue allowing the printer to heat the bed

Thermal protection for bed set to    

#define WATCH_BED_TEMP_PERIOD 180               // Seconds
#define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius


When using PIDTEMPBED the LED on the bed does not light, but when using MAX_BED_POWER / PIDTUNE it does
I thought this was an easy problem to fix as the previous Configuration.h you shared had PID incorrectly configured. 

I'm guessing that you experience this LCD screen:



What I experienced myself when PID tuning the bed is that it matters whether the bed is preheated or not. At first attempt the command such as the  M303 E-1 C8 S70 you used did result a failed PID tuning (note that you should perform the test from a cold bed). 

Your PID values:

// PIDTune from Pronterface
#define DEFAULT_bedKp 305.95
#define DEFAULT_bedKi 60.24
#define DEFAULT_bedKd 388.4805


are similar results as I have for a 24V 300 x 300 x 3 mm bottom cork insulated heat plate with 3 mm glass.

You have not added the "Configuration_adv.h", but this file contains the advanced settings for the printer and most probably contain:


#if ENABLED(THERMAL_PROTECTION_BED)
  #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
  #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius

  /**
   * As described above, except for the bed (M140/M190/M303).
   */
  #define WATCH_BED_TEMP_PERIOD 60                // Seconds
  #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
#endif


This describes that the software waits for 60 seconds for the bed to increase 2 &deg;C. If the temperature increase is not observed, there is no heat input to the bed, or it does not reach the set temperature. Please check your values.