It is normal for it to take a few minutes to warm up, since the
heat comes from the engine coolant. When you first start the engine, it
is at ambient temperature if it has been sitting for more than about
4-6 hours. So the engine itself has to heat up, then transfer the heat
into the coolant. Once the engine and coolant have absorbed enough
heat, you will start to feel it, and it will stay hot. Usually it takes
3-4 minutes to start feeling heat, but the actual time depends on how
cold it is, and the type of engine.
If you are saying that it takes much longer than that to heat up, then
the typical reason is a failed thermostat. The thermostat regulates the
temperature of the coolant by controlling the flow into the radiator.
It is supposed to maintain a set temperature around 200 degrees F. It
does so by opening and closing to allow radiator flow. If the
thermostat fails by sticking in the open position, the coolant will not
reach the normal set temperature because it will lose too much heat
from the constant radiator flow.
