Animate a fan symbol from a discrete PLC tag with a timer

5 min read · Published November 14, 2026

An animation bitmap takes a numeric tag, so a discrete fan bit cannot drive rotation. Start a self-resetting on-delay timer with the fan run bit, map its accumulator from 0 to preset onto 360 degrees, and the symbol makes one full turn every timer period. For a flashing symbol, use a dynamic bitmap switched by the discrete tag instead.

An animation bitmap turns, moves, resizes or hides a picture from a numeric tag. A discrete fan bit has two states, 0 and 1, so the tag picker refuses it. Give the rotation a number that keeps changing: the accumulated value of an on-delay timer, started by the fan run bit and reset by its own done bit. Map that accumulator onto 360 degrees and the symbol makes one full turn every timer period. The fan bit still owns the animation, because the timer only runs while the bit is on. A flashing symbol is a different object, a dynamic bitmap, and that one does take the discrete tag.

Decide what the symbol should do

The HMI project software offers five bitmap object types: bitmap button, static bitmap, dynamic bitmap, multi-state bitmap and animation bitmap. Pick the one that matches the behavior you want before you touch the PLC.

The fan should Object Input it needs
Spin the whole time it is commanded on Animation bitmap, rotation on A numeric tag that keeps changing
Flash or swap between two pictures Dynamic bitmap A discrete tag or state condition
Step through drawn frames Multi-state bitmap An integer with a state per frame

The animation bitmap object animates visibility, position, size and rotation, and your HMI's help file lists those four on the object's own tab. Rotation needs a moving value. A bit sits at 0 or 1, which buys two fixed angles at most, and toggling it fast buys a flicker, not a turn. For stepping through drawn frames, a counter-fed multistate object is the route, and the multistate fan counter that stalls covers the failure you hit when the count stops cycling.

What you need

  • The fan run bit: the output or internal bit that commands the fan.
  • One free on-delay timer, T4:1 in the steps below.
  • One free word in the integer file, N7 here, if your HMI driver will not read the timer accumulator directly.
  • The fan picture, drawn square and centered, saved with a transparent background so no box shows around the blades.
  • One HMI tag pointed at the accumulator or at that integer word.

Build the timer logic

  1. Start a free on-delay timer from the fan run bit. T4:1 in this example.
  2. Set the preset to the time one turn should take, 10 s for a steady look. Read the timer's time base off the project and write the preset in counts: 1000 counts at a 0.01 s base.
  3. Reset the timer from its own done bit, so the accumulator sweeps 0 to 1000 and starts over for as long as the fan bit holds on. The self-resetting timer rung shows the pattern.
  4. Move the accumulator into the integer word with a fill file (FLL) or copy file (COP) instruction: source the accumulator, destination one free element such as N7:10, length 1. One word is all the rotation needs. A length of 15 writes the same value into 15 words of the integer file, and those words can hold data something else uses. Your PLC's instruction reference manual prints exactly what each instruction writes.

Point the animation bitmap at the number

  1. Drop an animation bitmap on the screen and load the fan picture.
  2. Open the rotation tab. Tick use rotation animation, pick left or right for the direction, and leave the base point at center so the picture spins about its middle.
  3. Give the object the tag from step 4 above, the N7 word. If your driver lists timer members as tags, point the object straight at the accumulator and skip the copy; reading a PLC timer value through member tags shows that wiring.
  4. Scale the tag onto the angle. Enter the tag's low and high values, 0 and the preset count, and set the degree field to 360.
  5. Download the project and watch the object against the live value.

Example: one turn every 10 seconds

The fan run bit starts T4:1, an on-delay timer with that preset on a 0.01 s time base, its done bit resetting the timer.

Preset in counts: 10 s / 0.01 s = 1000 counts. Object input range: 0 to 1000, mapped onto 0 to 360 degrees. Step size: 360 / 1000 = 0.36 degrees per count. Step rate: one count every 0.01 s, so the picture moves 0.36 degrees every 10 ms. One turn: 1000 counts × 10 ms, then the done bit starts the next turn. Speed: 360 degrees in one sweep = 36 degrees per second.

The same preset on a 1.0 s time base reads 0 to 10, and the object jumps 360 / 10 = 36 degrees once a second. It still finishes one turn per period, in ten visible steps. Use the finest time base the project allows and the motion reads as smooth. A 15 s preset slows the turn to 360 / 15 = 24 degrees per second if 36 feels too brisk.

Check that it worked

  1. Fan on: the accumulator ramps 0 to 1000 and rolls over to 0 without the picture freezing or jumping backward. One clean turn per period.
  2. Fan off: the rung goes false, the timer resets, the symbol stops. If it keeps turning with the fan off, something else is energizing the timer rung; find it before you ship the screen.
  3. Tag changes but no rotation: confirm the object is an animation bitmap, the rotation box is ticked, the tag is the one you watched count, and the scaling high value equals the preset count, not the preset written in seconds.
  4. Rotation stutters or misses positions: the frame-rate side is its own problem, covered in fixing a bitmap animation that skips positions.

The turning symbol shows the command bit and the timer, not the fan shaft. Confirm the fan from its own feedback or a current reading before anyone puts a hand on the machine.

If the symbol should flash instead of turn

Use a dynamic bitmap. Load two pictures, the fan at rest and the fan highlighted, and let the discrete tag pick the state: one image while the bit is off, the other while it is on. That gives a symbol that snaps on with the command and sits still, with no timer in the path. To make it blink, feed a compare on a free-running clock second, or an alternating timer bit, into the state condition, and the picture changes once every 1 s. Animating a pump symbol from a PLC output state walks the same state-from-a-bit wiring on a simpler symbol.

Recommendation: Use the animation bitmap with a self-resetting on-delay timer started by the fan run bit: a 10 s preset on the finest time base the project allows, the accumulator or its one-word integer copy mapped from 0 to preset onto 360 degrees. Choose the dynamic bitmap only when the symbol should flash or swap pictures, because that object takes the discrete tag directly and needs no timer for the snap-on version.

Questions

Why will the animation bitmap not accept a discrete tag?

The object animates visibility, position, size and rotation from numeric values. A discrete tag holds only 0 or 1, which buys two fixed angles at most, so the tag picker leaves those addresses out. Give the object the accumulated value of a timer and the angle has somewhere to go.

How fast does the fan symbol turn with a 10 second timer?

One full turn every timer period: 360 degrees divided by that period is 36 degrees per second. A 15 s preset slows it to 24 degrees per second. Change the preset to change speed, and keep the degree field at 360 so each sweep is a full circle.

Can I make the fan blink instead of rotate?

Yes. Use a dynamic bitmap with two pictures and let the discrete tag select the state, one image for off and one for on. That gives a symbol that snaps on with the command. For a true blink, drive the state condition from something that alternates; the last section of this article shows the wiring.

Does the spinning symbol prove the fan is running?

No. The screen shows the command bit and a timer, and both can be on while the motor has tripped. Confirm the fan from its own feedback, a contact or a current reading before anyone services the machine.

Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.

Keep reading

Build your signAsk for a quote