Skip to content

TP — Pulse Timer

Category
Timer / Counter
Type
Output
Availability
All platforms

TP instruction block: Timer Pulse_TMR, Preset 1000, Accum 0, with the EN, DN and TT indicators on the right


TP (Pulse Timer) produces one pulse of a fixed width when its rung goes true. The pulse is the timer’s TT bit: it turns on the scan the rung rises and stays on for exactly the preset, whatever the rung does in the meantime. A rung that drops early does not shorten the pulse, and a rung held true does not stretch it or start another. Use TP for anything that must be on for a set time from an event: a horn, a solenoid kick, a stamp, a status flash. Do not use TP where the output should follow the input; that is OTE, and do not use it as a delay; that is TON. TP is borrowed from IEC 61131-3 and has no equivalent in RSLogix 500 or Studio 5000.


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 pulse timer’s preset, accumulator and status bits. One TP per tag.
Preset DINT Whole milliseconds 1 to 2,147,483,647 (about 24.8 days) Yes The pulse width. Stored in the tag as .PRE; editable online.
Accum DINT Milliseconds Read-only on the face — Time elapsed in the current pulse, .ACC.

The time base is always milliseconds.


TP has three states, encoded in the existing timer bits: pulsing (TT on), complete (DN on), and idle (neither).

All status bits clear and ACC is 0. The timer is idle.

  • Idle: this is the rising edge. TT sets and the pulse starts; ACC begins counting from 0.
  • Pulsing: ACC is updated. When it reaches the preset TT clears, DN sets, and ACC stops at the preset. The rung being true has no other effect.
  • Complete: nothing changes. The timer waits, with DN on, for the rung to go false.

EN follows the rung.

  • Pulsing: the pulse continues unaffected; ACC keeps counting and TT stays on until the preset is reached.
  • Complete: the timer re-arms: DN clears and ACC returns to 0. It is now idle and the next true scan starts a new pulse.
  • Idle: nothing.

Nothing special.


Member IEC name Set when Cleared when
.TT Q The rung rises from idle; this is the pulse ACC reaches PRE
.DN — The pulse ends The rung goes false after the pulse
.EN IN The rung is true The rung is false
.PRE PT The pulse width in milliseconds —
.ACC ET Elapsed time in the pulse; parks at PRE while DN is on The timer re-arms

Wire the output from .TT, not from the bare tag. A bare TIMER reference in a contact reads .DN, which for a pulse timer means “pulse finished”, the opposite of what an output usually wants. XIC Pulse_TMR.TT → OTE Horn is the idiom.


If you are coming from RSLogix, TP will feel wrong the first time you try it: hold its rung true with a plain XIC and you get exactly one pulse, then TT goes dark, DN lights, the Accum parks at the preset, and nothing more happens for as long as you hold the rung. That is not the timer being stuck. It is a one-shot that has fired and is waiting to be re-armed.

The difference is that a TON follows the rung level and a TP fires on the rung edge.

A TON times while the rung is true. Reach the preset and DN sets and stays set for as long as the rung is held; drop the rung and everything resets. Hold it and you get one delay followed by DN on indefinitely.

A TP starts its pulse on the false-to-true transition and then ignores the rung. Release the rung mid-pulse and the pulse still runs to its full width. Keep holding the rung and the pulse still ends on time. When it ends, TT drops and DN sets, and the timer sits in that “fired” state until the rung has gone false. Only after it has seen a false rung will it accept a new rising edge.

Rung input TON TP
Held true Output on after PRE, stays on Output on for PRE, then off
Tapped briefly (shorter than PRE) Nothing; the delay is abandoned A full PRE-wide pulse
Released while timing Resets The pulse completes

Those last two rows are what TP is for: a fixed-width output from a trigger whose length you do not control. A momentary button tap giving a one-second horn, a sensor blip stretched long enough to drive a solenoid, a “ding” that is the same length no matter how long the operator leans on the button. A TON cannot do any of those, because it needs the rung held for the whole preset and then never turns off on its own.

So to make a TP pulse repeatedly, something has to take the rung false after each pulse. The example below does that with an XIO on the timer’s own DN bit. DN sets when the pulse ends, the XIO opens, the rung goes false for one scan, the timer re-arms, the XIO closes again, and that false-to-true transition is a fresh rising edge. DN is the “pulse over, please restart” signal, which is also why it is the right bit to re-trigger from and the wrong bit to drive an output from.


Scenario: A free-running one-second pulse train, built from a single TP that retriggers itself. The XIO in front of the timer is not decoration; without it the TP fires once and waits (see TP versus TON above).

Tags:

  • Pulse_TMR — Pulse Timer, TIMER, Preset 1000
  • Beacon — Beacon lamp, BOOL

Rung 1 (the pulse):

—|XIO Pulse_TMR.DN|———[TP Pulse_TMR Preset 1000]———

Rung 2 (the output):

—|XIC Pulse_TMR.TT|———(OTE Beacon)———

At start-up DN is 0, so the XIO conducts and the rung is true: the pulse starts, TT lights and Beacon turns on. For one second the Accum climbs toward 1000. When it gets there TT goes dark, DN lights, and Beacon turns off. On the next scan the XIO sees DN = 1 and the rung goes false, so the timer re-arms: DN clears and the Accum returns to 0. One scan later the XIO conducts again and a new pulse begins. The result is a one-second on, one-scan off pulse train that runs for as long as the sketch does.

Figure 1 — TP mid-pulse: the rung true through the XIO, Accum climbing toward 1000, TT lit

For an even on/off flash use two timers, one for the on time and one for the off time. A TP on its own gives a fixed on time and an off time of one scan.


  • TON — Timer On Delay (a delay, not a pulse)
  • ONS — One-Shot Rising (a one-scan pulse; TP is a timed one)
  • RES — Reset (aborts a pulse in progress)
  • Timer and Counter Instructions — Category index

Non-retriggerable. A second rising edge during the pulse is ignored. The pulse neither restarts nor extends. This is what separates TP from a TON wired to hold its own output.

Trigger width does not matter. The rung may be true for a single scan or for a minute; the pulse is exactly one preset either way. That makes TP the right tool for a pushbutton that must produce a fixed-length output no matter how long it is held.

One pulse per rung cycle. After the pulse ends DN stays on until the rung has been false at least once. A rung held true forever produces exactly one pulse. If you want a pulse every time an event happens, make sure the rung drops between events; if you want a pulse train, feed the rung through XIO <timer>.DN as in the example.

RES on a TP aborts the pulse and returns the timer to idle. Because the timer re-arms from the rung level, a rung still held true starts a fresh pulse on the very next scan.

Range. PRE and ACC are DINT (32-bit) on every board, so a pulse can be as long as 24.8 days.

Timer arrays. The Timer operand may be an element of a TIMER array.

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