A PLC functional specification describes, in plain language, how a machine or process must behave under control: its modes, sequences, interlocks, alarms and interfaces. It is written before the code, agreed by the process owner, and used afterwards to write test cases. A good one lets a programmer who has never seen the plant build the right software, and lets an operator check that it is right.

Different industries call it different things: functional design specification (FDS), control philosophy, control narrative or functional requirements. In regulated sectors it sits within a wider lifecycle such as ISPE GAMP 5. The content is broadly the same everywhere.

A section-by-section structure for a PLC functional specification

SectionWhat it contains
1. Scope and referencesWhat is in and out of scope, drawings, P&IDs, standards, related documents
2. System overviewProcess description, equipment list, control architecture, network sketch
3. Operating modesAuto, manual, maintenance, cleaning, and how the operator moves between them
4. SequencesStep-by-step logic for each unit, with entry and exit conditions
5. Interlocks and permissivesWhat must be true before anything moves, and what stops it
6. Alarms and eventsEach alarm, its trigger, priority, operator action and reset
7. HMI requirementsScreens, navigation, user levels, trends
8. InterfacesSignals and data exchanged with SCADA, MES, other PLCs and package units
9. Safety functionsReference to the risk assessment and safety requirements specification
10. Data and reportingCounters, batch records, OEE, energy, retention
11. Test approachHow each section will be verified at FAT and SAT

Writing sequences that cannot be misread

Sequences cause most arguments, so be precise. For each step, state the action, the condition to move on and what happens if that condition is not met within a time limit. A table works better than prose.

StepActionNext step whenFault if
10Open infeed gate, start infeed conveyorProduct sensor B12 onB12 not on within 8 s
20Stop conveyor, clamp productClamp closed switch S21 onS21 not on within 2 s
30Start labeller cycleLabeller done signalLabeller fault or 5 s timeout
40Unclamp, start outfeedProduct clear of B14B14 blocked for more than 4 s

What is a Functional Design Specification (FDS)?

RealPars

This video is hosted on YouTube. Playing it loads content from Google, which may set cookies.

Watch on YouTube
A short introduction to what an FDS covers and why it matters.

Use existing models rather than inventing your own

For batch processes, structure the specification around the ISA-88 physical and procedural models: units, equipment modules, phases. For packaging and discrete machines, consider the PackML state model from OMAC, adopted by ISA as ISA-TR88.00.02. Using a recognised model means programmers, integrators and the next maintenance engineer share a vocabulary, and machines from different builders behave consistently.

Inclined cleated belt conveyor with a geared motor carrying material in a factory
Even a simple conveyor needs its start, stop, jam and restart behaviour written down.

The mistakes that cause rework

  • Describing the code instead of the behaviour. 'Use a TON timer in FB12' belongs in the design, not the specification.
  • Leaving out abnormal operation. Power loss, e-stop recovery, partial batches and manual intervention are where most bugs live.
  • Vague alarms. 'Alarm if pressure is high' needs a value, a delay, a priority and an operator action.
  • No owner. If operations never signs it, the first real review happens at SAT.
  • Never updated. Changes agreed on site must flow back into the document, or it becomes fiction.

From specification to test cases

Number every requirement. Each sequence step, interlock and alarm should map to at least one test case. This traceability is what makes a factory acceptance test objective rather than a demonstration, and it is the input you need to test code against a simulated machine before site. It is also the best prompt you can give an AI coding assistant, as we discuss in AI for PLC programming.

Example: an alarm table that leaves nothing to guess

AlarmTriggerPriorityEffectOperator action
Infeed jamB12 on for more than 4 s while conveyor runningMediumInfeed stops, upstream heldClear jam, press reset
Clamp faultS21 not on 2 s after clamp commandHighStation stops in step 20Check air, inspect clamp, reset
Low air pressurePS01 below 5.5 bar for 3 sHighControlled stop at end of cycleCheck supply, call maintenance

Written this way, the programmer knows exactly what to build, the HMI designer knows the text and priority, and the tester has a ready-made test case for each line. It also exposes gaps early: if nobody can say what should happen to upstream equipment during a jam, better to find out in a review meeting than during start-up.

Who should write it?

Ideally, a controls engineer writes it with the process owner, and operators review the modes and alarms. When a supplier writes it, the buyer must still own the review; a specification written only by the party being paid to meet it tends to be easy to meet. On remote projects the specification matters even more, because it replaces many of the informal conversations that happen on site.

Wartens can write or review functional specifications as the first phase of a project, then engineer and test the software against them. See our automation engineering service or send us your current document for a review.