Section 11 · Practice Questions

Priority, Selection & Industrial Applications

Three problems on selection and conversion logic — a three-team quiz buzzer with first-press lockout, a read-only status checker that displays a fan’s state without altering it, and a Celsius-to-Fahrenheit conversion implemented as a short MUL/DIV/ADD ladder.

3Questions
3Worked Solutions
All practice sections

First-press priority is a classic seal-in pattern with a global "any-active" interlock; read-only displays simply gate the indicator on the value without offering any write path; and arithmetic conversions are three rungs of math instructions in sequence.

Q1

Three-team quiz buzzer with first-press lockout

Three teams take part in a quiz: pupils, high-school students and professors. To answer a question the team must press its buzzer first; as soon as one team has pressed, the others are unable to light their indicators. Output Y0 turns ON if either input X0 or X1 is pressed (pupils). For the high-school team, output Y1 turns ON when input X2 is pressed. For the professors, both X3 and X4 must be pressed together for Y2 to turn ON. When the host presses input X5, outputs Y0, Y1 and Y2 are all reset. Once one team has been selected, the others must be locked out until the host resets the system.

ShowHide worked solution

Each team has a seal-in latch on its output. An ANY_ON helper bit is the OR of all three team outputs — the /ANY_ON contact appears in every team rung as a global interlock, so the first team to energise locks the other two out. The host reset X5 forces every coil OFF and ANY_ON drops automatically.

Ladder program
Rung 1 — combined "any team locked-in" flag:
|---[ Y0 ]----+----( ANY_ON )----|
|---[ Y1 ]----+
|---[ Y2 ]----+

Rung 2 — pupils: X0 OR X1, only if no other team active:
|---[/ANY_ON]---+----[ X0 ]----+----( Y0 )----|
|               |              |
|               +----[ X1 ]----+
|---[ Y0 ]------+ (seal-in)

Rung 3 — high-school: X2 only:
|---[/ANY_ON]---[ X2 ]----+----( Y1 )----|
|                         |
|---[ Y1 ]----------------+

Rung 4 — professors: X3 AND X4 simultaneously:
|---[/ANY_ON]---[ X3 ]---[ X4 ]----+----( Y2 )----|
|                                  |
|---[ Y2 ]-------------------------+

Rung 5 — host reset on X5:
|---[ X5 ]----(/Y0)----|
|---[ X5 ]----(/Y1)----|
|---[ X5 ]----(/Y2)----|

As soon as one team’s coil energises, ANY_ON goes true and the /ANY_ON contact in the other rungs opens — preventing any further latching.

Final AnswerEach team latches through a seal-in gated by /ANY_ON, where ANY_ON is the OR of all three outputs. X5 forces every coil OFF, ready for the next question.
Q2

Ceiling fan with a read-only TEST status check

Write a PLC program that controls the state of a ceiling fan using Start and Stop push-buttons. If the operator wishes to check the state of the fan, a TEST button is provided. Pressing TEST produces an indicator light (ON or OFF) that reflects the current state of the fan, but it must not alter that state.

ShowHide worked solution

The control rung is the standard 3-wire Start/Stop seal-in. The TEST rung lives entirely separately — it lights the LAMP only when TEST is pressed AND the FAN coil is currently true. Because nothing in the TEST rung feeds back into the FAN coil, pressing TEST cannot start or stop the fan; it can only observe it.

Ladder program
Rung 1 — FAN with seal-in (standard 3-wire control):
|---[/STOP]---+----[ START ]----+--------( FAN )----|
|             |                 |
|             +----[ FAN ]------+   (seal-in)

Rung 2 — TEST indicator shows current fan state without altering it:
|---[ TEST ]---[ FAN ]----( LAMP )----|

Pressing TEST alone produces nothing; pressing TEST while the fan is running lights the indicator.

The key design principle is that TEST has no contact anywhere in Rung 1. Read-only access is enforced by the topology of the ladder itself — not by a permission flag.

Final AnswerTwo independent rungs — one for FAN (Start/Stop seal-in), one for the LAMP gated by TEST AND FAN. TEST is read-only by construction; it has no path into the FAN coil.
Q3

Celsius to Fahrenheit conversion in ladder

Write a PLC program that takes a Celsius temperature (C) as input, converts it to Fahrenheit (F) and stores the result in a register. The Celsius-to-Fahrenheit relationship is (F − 32) × 5 = 9 × C.

ShowHide worked solution

Rearranging the formula

Solve the given relation for F:

(F − 32) × 5 = 9 × C F − 32 = 9 · C / 5 F = 9 · C / 5 + 32

That decomposes neatly into three sequential math instructions: multiply by 9, divide by 5, add 32. Use an intermediate register so each instruction reads a clean value rather than chaining live operations.

Ladder program
Rung 1 — multiply C by 9:
|---[ ALWAYS ]----(MUL C_INPUT, 9, TEMP1)----|

Rung 2 — divide by 5:
|---[ ALWAYS ]----(DIV TEMP1, 5, TEMP2)----|

Rung 3 — add 32 to get the Fahrenheit reading:
|---[ ALWAYS ]----(ADD TEMP2, 32, F_OUTPUT)----|

Verification

Take a known value: C = 100°C should give F = 212°F.

F = (9 × 100) / 5 + 32 = 900 / 5 + 32 = 180 + 32 = 212 ✓

Note that on a fixed-point PLC the DIV by 5 truncates: for C = 25°C, MUL gives 225, DIV gives 45 (truth: 45.0), ADD gives 77 — correct because 25°C is exactly 77°F. For values where the intermediate result has a fractional part, either swap to a floating-point data type, or multiply by 9 last to preserve precision.

Final AnswerThree ladder rungs — MUL by 9, DIV by 5, ADD 32 — with the result stored in F_OUTPUT. For non-integer-clean Celsius values, switch to floating-point arithmetic to avoid truncation.