You have to play to the timer's strengths, not its weaknesses.
A timer's weakness is the PLC scan. As long as you remain dependent on the scan you are going to accumulate error in your time totalizer. AB PLCs use a rolling time stamp that is stored in the first 8 bits of word 0 of the timer element. Each time the timer is executed the current time is compared to the time stamp stored the last time the timer instruciton updated its ACC word. If a time period in excess of the time base (1 sec or .01 sec) has expired then the timer count (.ACC) is incremented, and a new time stamp is stored in the low order byte of word 0. Because the time stamp is a single byte you must execute a timer instruction at least once every 2.54 seconds.
So how do you take advantage of this without adding scan time into your time total? The answer is easier than you might think. You never let the timer reach its preset. You manipulate the value in the .ACC as you totalize your time.
For an example of how to do this see this download:
http://forums.mrplc.com/index.php?autocom=downloads&showfile=576I'm blowing my own horn here, but I have used this to keep accurate time for durations of time that far exceed a timers max of 32767 and 327.67 seconds.
I have used variants of this basic routine many times and find that it works well with good accuracy. One variant is to subtract 3600 from a single .01 sec timer's ACC every 36 seconds and upcount a .01 hour register to track 1/100ths of an hour.
-------------------------------------------------------------------------------------------------------------------
Exercise question to ponder: What happens to timer T4:0 if the rung
XIC B3/0 TON T4:0 .01 1000 0
is programmed in two or more places in the same program? Why? and, Why would one program that rung multiple times in the same program?