Skip to main content

TOFR — Off-Delay Timer

Structured Text off-delay timer function block. Uses FBD_TIMER; the ST equivalent of ladder TOF.

Operands

NameType
timerFBD_TIMER

FBD_TIMER Tag Members

MemberTypeMeaning
.EnableInBOOL1 lets the instruction run; 0 holds all outputs unchanged. Normally 1.
.TimerEnableBOOL1 runs the timer and advances ACC; 0 stops timing
.PREDINTPreset target time in milliseconds
.ResetBOOL1 clears EN, TT, DN and sets ACC to 0
.EnableOutBOOL1 while the instruction is executing normally
.ACCDINTAccumulated time in milliseconds
.ENBOOL1 while TimerEnable is 1 and Reset is 0
.TTBOOL1 while the timer is actively counting toward PRE
.DNBOOLDone status — each timer (TONR, TOFR, RTOR) decides when this turns on
.StatusDINTPacked status word — combines InstructFault and PresetInv bits
.InstructFaultBOOL1 when the instruction hit an execution error
.PresetInvBOOL1 when PRE is outside its valid range

How It Works

TOFR is the Structured Text function-block equivalent of the ladder TOF instruction. It operates on an FBD_TIMER tag.

.DN holds 1 while TimerEnable is 1, and remains 1 for the preset duration after TimerEnable drops to 0.

Example

ExhaustTimer.TimerEnable := MachineRunning;
ExhaustTimer.PRE := 30000;
TOFR(ExhaustTimer);

ExhaustFan := ExhaustTimer.DN;

Common Mistakes

  • Setting .EnableIn := 0 to pause the timer. EnableIn = 0 freezes all outputs — .ACC, .EN, .TT, .DN — without advancing them. To stop timing, drop .TimerEnable to 0 instead and leave .EnableIn at 1.
  • TOF — the ladder-logic equivalent
  • TONR, RTOR — other ST timer function blocks