Learn PLCs free
Timers & CountersBeginnerIEC 61131-3

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

NameTypeDescription
INBOOLTimer enable input - starts timing when TRUE
PTTIMEPreset time value (e.g., T#5s for 5 seconds)

Outputs

NameTypeDescription
QBOOLTimer done output - TRUE when ET >= PT
ETTIMEElapsed time - current timer value

Timing Diagram

IN:  ___/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\___
ET:  ___/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
        0s              5s
Q:   _______________/‾‾‾‾‾\___
                    ^PT=5s

Ladder 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

S

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.

AB

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).

C

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.

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.

20
Ready-Made Templates
LD + ST
Both Languages Included
$29
One-Time Purchase
Get Instant Access -- $29

Instant download - 30-day money-back guarantee - Use on unlimited projects

Free PLC simulator

Wire this block up and run it

Drop the instruction into a rung, hit Run, and watch it execute in your browser. 12 guided lessons across 8 PLC dialects — free account, no credit card.

Practice PLCs free →