OK, thought about it and I think that I can explain how TIMERs work.
1. TIMERs are implemented in PLC firmware.
2. Each TIMER has a data structure managed by the PLC firmware. This data
structure for each TIMER includes these things and probably a few other items:
TIMER SV
TIMER PV
TIMER control input state
TIMER contact state
OK, with that in mind, this is how I think a TIMER works:
1. Following reset, the input state for all TIMERs is set to zero to indicate that the TIMERs are inactive.
The contact associated with each TIMER is set to 0 to indicate that the TIMER has not timed out.
2. On the each scan of the ladder logic the evaluates the control input state for each structure during the
ladder logic scan. This state is maintained in the data structure associated with the TIMER.
3. If the ladder logic scan determines that the TIMER control input is 0 or false, the contact associated with the
TIMER is set to 0 or de-asserted.
4. If the ladder logic scan detects that the TIMER control input has transitioned to l, then the TIMER is active.
The TIMER SV is reloaded and the TIMER's contact is set to 0 or FALSE. These changes happen when the
rung of ladder logic that controls the TIMER is executed. These changes are visible to all other rungs of ladder
logic that follows the rung that controls the TIMER.
5. At the start of each ladder logic scan, each TIMER that is active at the end of the previous scan may have its PV
decremented based on either a 0.1 second or 0.01 clock. If the TIMER's PV is now 0, then the contact associated
with this TIMER will be set asserted (set TRUE). Please note that contact transitions for 0..1 at the start of the
ladder logic scan and NOT at the rung of code that controls the TIMER.
The most important points to take away from this long winded guess on TIMER behavior is that a TIMER's contact is set TRUE (1) at the beginning of the scan and the contact is set FALSE (0) the ladder logic rung that controls the TIMER is evaluated.
The fact that the TIMER contact is set and cleared at different points in the execution of the ladder logic explains why the TIMER contact can be "seen" as TRUE before the ladder rung that controls the TIMER and is never seen after this rung in my one line PLC code to implement an oscillator.
This is a bit of tricky TIMER stuff but it is not broken, but it is now documented.
Best regards,
Gary D*ckinson