Overview
The timetable feature in OpenTTD is a very specific addition, that can be used to control the movement of trains using shared orders.
Whenever several vehicles share orders, for example busses or trains that run the same schedule, they are supposed to maintain a regular service of the stations, they should spread evenly across the route. This can manually be ensured at the initial setup of the service. However, as time passes, breakdowns, service intervals, differing loading times and so on will lead to a pile up of vehicles. At some point, all vehicles will queue up behind each other. This reduces the ratings of the stations, because they are serviced infrequently.
The solution to this pile-up problem are timetables. Using them one can set a specific time, how long a vehicle should wait at a station, and how long it should take for the trip to the next one. Thus, a vehicle cannot get nearer and nearer to the other ones running on the same schedule.
First, the orders have to be created. From the standard orders view one can change to the timetable view using the appropriate button. In this example the schedule is very simple and has only two entries.
At the beginning, no times have been set or collected, so the plan looks a bit empty. Now some base values can be collected, using the autofill option. After pressing the button, the vehicle should run through its schedule once. The times that have been collected during that run are probably quite optimistic, because the vehicle might not have had breakdowns, did not get blocked in traffic and so on. This timetable is too optimistic and needs to be adapted in order to be usable.
This is the timetable with the optimistic times. Especially the times in the stations are unrealistic, because there was nothing to load during the first trip. So one simply selects the lines and changes the values.
Every entry of a timetable consists of two lines. The first one ("Go to station 1 and stay for 1 day") tells how long the vehicle will stop at the corresponding station. The other line ("Travel for 6 days") shows how much time a vehicle is given to reach the next entry of the timetable. The last line of the timetable therefore shows how long the train may take to reach the first station (remember the wrap-around of the order list at the end).
if you now simply extend the waiting time for the train in a station, it will shift all further timetable entries accordingly. That makes sense, if the train can only start the journey a day later, it will also arrive at the next station a day later (assuming it will run at the same speed).
Whenever a train, for whatever reason, is arriving late at a station (having had to wait at a red signal for example), it will try to make up the time by reducing (as far as possible) the waiting time at the station. If for example the train is timetabled to wait three days at a station and it is arriving one day late, it will only wait for two days and then leave on time. However, that will only work if the (un)loading is finished within these two days! So if the planned waiting time is not enough to fully unload and load a train, it will leave the station late and may have to make up time while travelling to the next station.
That means there are two ways to ensure the trains are running on time, although that is kind of an art in itself. First relevant point is to set realistic travel times which contain a bit of a buffer, as there might be red signals along the way, causing some delays. Having such a buffer easily reduces the probability of a train running late. On top of that, the stopping times in the stations should also contain a bit of a buffer, especially in hub stations with many passengers, where loading may take a while.
When running multiple vehicles on the same line, all vehicles should share the same orders and timetable. They should also all use the same engine type and same number of carriages, to make sure they can all run the same speeds and travel times, otherwise setting up the timetable becomes unnecessarily complicated. One can define a speed limit for the travelling, but at least in my opinion that only makes sense for lines where no other trains are operating, and it also prevents trains from making up time by just going as fast as they can.
Multiple vehicles
As long as you only have one vehicle on a line you can mostly ignore timetables completely. It becomes more interesting once you have multiple vehicles on a line (be it trains or ships or buses). Most likely, these should run in a fixed time difference to each other, as in reality, where typically you have a bus service with buses running every 30 minutes, and not 90 minutes without bus and then three in a row. This can be realized using timetables. First you set up the timetable by running a single vehicle, then clone that vehicle until you have the number of vehicles you want to run on the line. Now you only need to start the timetable while holding the Ctrl-key to ensure all vehicles start with some proper offset, so that the vehicles are evenly spaced around the line. Now you only need to take care to start the vehicles in the correct order so that they really run according to the timetable and not try to catch up with an imaginary delay.