Skip to content

TON — Timer On Delay

Category
Timer / Counter
Type
Output
Availability
All platforms

TON instruction block: Timer TMR[0], Preset 10000, Accum 0, with the EN, DN and TT indicators on the right


TON (Timer On Delay) waits for its rung to have been true for the preset time, then sets its done bit. While the rung is true the accumulator counts up in milliseconds; when it reaches the preset the DN bit turns on and the accumulator stops there. The moment the rung goes false the timer resets to zero and DN turns off. Use TON for any delay that should begin when a condition appears and be abandoned if the condition disappears: a warning horn before a conveyor starts, a debounce on a sensor, a timeout on a motion. Do not use TON when the elapsed time must survive the rung going false; that is RTO.


Operand Type Format Valid Range Required Description
Timer TIMER Tag name or Array[n] A TIMER tag owned by no other timer instruction Yes The structure that holds this timer’s preset, accumulator and status bits. One TON per tag.
Preset DINT Whole milliseconds 1 to 2,147,483,647 (about 24.8 days) Yes How long the rung must stay true before DN sets. Stored in the tag as .PRE; editable online in the Tag Browser.
Accum DINT Milliseconds Read-only on the face — Elapsed time so far, .ACC. Shown live while simulating or online.

The time base is always milliseconds. RSLogix 500 timers have a selectable 0.01 s or 1.0 s base; LadderIDE has neither. A preset of 2500 is two and a half seconds.


EN, TT and DN are cleared and ACC is 0. The preset is loaded from the tag.

The timer resets: EN, TT and DN clear and ACC returns to 0. Any time already accumulated is lost.

On the first true scan the timer starts and EN sets. Each scan the accumulator is updated from the elapsed time. While ACC is below the preset, TT (timer timing) is on and DN is off. When ACC reaches the preset, DN sets, TT clears, and ACC stops at the preset for as long as the rung stays true.

Nothing special. The status bits and accumulator carry into the next scan.


Member Type Set when Cleared when
.EN BOOL The rung is true The rung is false
.TT BOOL The rung is true and ACC is below PRE ACC reaches PRE, or the rung goes false
.DN BOOL ACC reaches PRE The rung goes false, or RES
.PRE DINT The preset, in milliseconds —
.ACC DINT Elapsed milliseconds; stops at PRE The rung goes false, or RES

Read the members anywhere with a contact: XIC TMR[0].DN is the usual output of a TON, and XIC TMR[0].TT is true only while the delay is in progress.


Scenario: A run command must be present for ten seconds before the motor starter is allowed to pull in.

Tags:

  • MotorRun — Motor run output, BOOL
  • TMR[0] — element 0 of a TIMER array named TMR, Preset 10000
  • Starter — Starter coil, BOOL

Rung 1 (the delay):

—|XIC MotorRun|———[TON TMR[0] Preset 10000]———

Rung 2 (the output):

—|XIC TMR[0].DN|———(OTE Starter)———

Values before: MotorRun = 0, TMR[0].ACC = 0, TMR[0].DN = 0, Starter = 0.

Turn MotorRun on. For the first ten seconds the rung is green, the Accum on the block face climbs toward 10000, the EN and TT indicators are lit and DN is dark; Starter stays off. The screenshot below was taken partway through that ten seconds.

Figure 1 — Delay in progress: MotorRun on, TON TMR[0] with the Accum climbing toward 10000, EN and TT lit, DN dark

At 10000 ms DN lights, TT goes dark, and the Accum stops at 10000. Rung 2 now conducts and Starter turns on.

Values after: MotorRun = 1, TMR[0].ACC = 10000, TMR[0].DN = 1, Starter = 1.

Turn MotorRun off and everything clears on the next scan: Accum 0, DN off, Starter off. Turn it on again and the full ten-second delay repeats.


  • TOF — Timer Off Delay (delays the turn-off instead of the turn-on)
  • RTO — Retentive Timer On (keeps its accumulator when the rung goes false)
  • TP — Pulse Timer (fixed-width pulse from an edge)
  • RES — Reset (clears a timer’s accumulator and status bits)
  • CTU — Count Up (count timer cycles for delays longer than one preset)
  • Timer and Counter Instructions — Category index

The accumulator stops at the preset. Once DN is set, ACC reads exactly PRE for as long as the rung is held; it never runs past it. This matches RSLogix 500 and Studio 5000.

Range. PRE and ACC are DINT (32-bit) on every board, so one timer can run for 24.8 days. A preset of 0 or below sets DN on the first true scan.

No one-shot needed. TON starts on its own when the rung goes true; an ONS in front of it changes nothing.

RES on a TON clears ACC and all three status bits while the RES rung is true. The timer restarts from zero on the next scan its own rung is true. RES is rarely needed with a TON, since a false rung already resets it.

Timer arrays. The Timer operand may be an element of a TIMER array, for example Timers[3]. Each element is an independent timer with its own members.

Applies to LadderIDE >=1.2.2 · Last reviewed 2026-09-10 · Screenshots verified 2026-09-10