TON (Timer On-Delay)
Starts timing on rising edge, output activates after preset delay.
The TON (Timer On-Delay) is one of the most commonly used function blocks in PLC programming. It starts counting when the input (IN) transitions from FALSE to TRUE, and sets the output (Q) to TRUE after the preset time (PT) has elapsed. While the input remains TRUE, the elapsed time (ET) continues to increment until it reaches PT. When the input goes FALSE, both Q and ET are immediately reset to their initial values. TON timers are essential for implementing time delays, debouncing inputs, sequence control, and motor start delays in industrial automation systems.
Parameters
Inputs
| Name | Type | Description |
|---|---|---|
| IN | BOOL | Timer enable input - starts timing when TRUE |
| PT | TIME | Preset time value (e.g., T#5s for 5 seconds) |
Outputs
| Name | Type | Description |
|---|---|---|
| Q | BOOL | Timer done output - TRUE when ET >= PT |
| ET | TIME | Elapsed time - current timer value |
Timing Diagram
IN: ___/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\___
ET: ___/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
0s 5s
Q: _______________/‾‾‾‾‾\___
^PT=5sLadder Logic Example
// Ladder Logic - TON Timer // Rung 1: Start timer when Start_Button is pressed // // |----[ Start_Button ]----[TON Timer_1]----| // | IN: Start_Button | // | PT: T#5s | // | Q: Motor_Run | // | ET: Elapsed | // // Rung 2: Use timer output // |----[ Timer_1.Q ]-------( Motor_Enable )--|
Structured Text Example
// Structured Text - TON Timer Example
VAR
Timer_1 : TON; // Timer instance
Start_Button : BOOL; // Input
Motor_Enable : BOOL; // Output
Elapsed_Time : TIME; // Elapsed time
END_VAR
// Call the timer
Timer_1(IN := Start_Button, PT := T#5s);
// Use outputs
Motor_Enable := Timer_1.Q;
Elapsed_Time := Timer_1.ET;20 Production-Ready Ladder Logic Templates
Stop writing the same rungs from scratch. Get copy-paste-ready templates for motor control, PID loops, safety interlocks, conveyors, and more.
Platform-Specific Implementation
Siemens (TIA Portal)
In TIA Portal, use IEC_Timer (TON) or legacy SFB 4 (TON_TIME). Access via 'Timer operations' in the instruction tree. Data type is IEC_TIMER for S7-1200/1500.
Allen-Bradley (Studio 5000)
Use TON instruction in Studio 5000/RSLogix 5000. Preset (PRE) is in milliseconds by default. Timer data type is TIMER. Access .DN (done), .TT (timing), .ACC (accumulated).
CODESYS
Standard IEC TON available in Standard library under Timers. Time literals use T# prefix (e.g., T#5s, T#100ms). Fully IEC 61131-3 compliant.
Common Applications
- Motor start delay
- Debouncing inputs
- Sequence timing
- Watchdog timers
- Pump priming delay
Common Mistakes to Avoid
- Forgetting that ET resets when IN goes FALSE
- Using TON when TOF is more appropriate for off-delay
- Not accounting for scan time in very short timer presets
- Assuming timer continues after IN goes FALSE
Frequently Asked Questions
What is TON (Timer On-Delay) in PLC programming?
Starts timing on rising edge, output activates after preset delay. The TON (Timer On-Delay) is one of the most commonly used function blocks in PLC programming. It starts counting when the input (IN) transitions from FALSE to TRUE, and sets the output (Q) to TRUE after the preset time (PT) has elapsed.
What are common applications of TON (Timer On-Delay)?
TON (Timer On-Delay) is commonly used for: Motor start delay, Debouncing inputs, Sequence timing, Watchdog timers, Pump priming delay.
How do I use TON (Timer On-Delay) in different PLC platforms?
Siemens: In TIA Portal, use IEC_Timer (TON) or legacy SFB 4 (TON_TIME). Access via 'Timer operations' in the instruction tree. Data type is IEC_TIMER for S7-1200/1500. Allen-Bradley: Use TON instruction in Studio 5000/RSLogix 5000. Preset (PRE) is in milliseconds by default. Timer data type is TIMER. Access .DN (done), .TT (timing), .ACC (accumulated). CODESYS: Standard IEC TON available in Standard library under Timers. Time literals use T# prefix (e.g., T#5s, T#100ms). Fully IEC 61131-3 compliant.
Related Function Blocks
TOF (Timer Off-Delay)
Output stays TRUE for preset time after input goes FALSE.
View Reference →TP (Timer Pulse)
Generates a fixed-duration pulse on rising edge of input.
View Reference →RTO (Retentive Timer On)
Timer retains accumulated value when input goes FALSE; requires manual reset.
View Reference →CTU (Counter Up)
Counts up on each rising edge; output activates when count reaches preset.
View Reference →TONR (Timer On-Delay Retentive)
Siemens retentive on-delay timer that accumulates time across multiple enable cycles.
View Reference →RTOR (Retentive Timer On with Reset)
Retentive on-delay timer with integrated reset input for accumulated time clearing.
View Reference →Stop Writing Ladder Logic From Scratch
Get 20 production-ready ladder logic templates for $29 -- download instantly and use them on your next project today.
Instant download - 30-day money-back guarantee - Use on unlimited projects