IEC 61131-3 gives you five languages under one standard, and most real PLC programs end up using at least two of them without anyone treating it as unusual. The question that actually matters isn't "ladder or structured text" as a project-wide policy — it's which one fits the routine in front of you.
Why ladder still wins on the plant floor
Ladder logic maps directly onto the relay logic it replaced, which is exactly why an electrician with no software background can trace a rung, follow a seal-in circuit, and find the open contact that's stopping a motor from starting — at 2 a.m., under pressure, without opening a manual. That's not a nostalgia argument. It's a genuine maintainability property that structured text doesn't have on the plant floor, no matter how clean the code is.
For discrete I/O interlocking, sequencing and anything where a technician needs to force a rung or trace a fault live against physical wiring, ladder's directness is the feature, not the limitation.
Where ladder starts to strain
The same directness that makes ladder traceable makes it verbose for anything beyond simple logic. Try expressing a PID auto-tune calculation, a recipe table lookup, or string parsing for a protocol handler in rungs, and you end up with either a wall of obscure math blocks strung across dozens of rungs, or a workaround that quietly defeats the purpose of using ladder in the first place.
Ladder also resists the tooling every other kind of software takes for granted. Meaningful diffs between versions, code review on a pull request, unit testing a calculation in isolation — all of that assumes text, and ladder is fundamentally a graphical representation that doesn't diff or review cleanly.
Where structured text earns its keep
- Math-heavy logic — PID tuning, unit conversions, scaling, anything with more than basic arithmetic.
- Data structures — arrays, structs, recipe tables, alarm tables: anything that's naturally a collection rather than a set of discrete contacts.
- String and protocol handling — parsing a Modbus payload, building a message for an external system, anything that touches text.
- Loops and iteration — walking an array of 40 tank levels is one
FORloop in ST and forty near-identical rungs in ladder. - Logic that changes often — recipe parameters, alarm thresholds, anything a commissioning engineer will tune repeatedly benefits from text that's fast to edit and easy to diff between revisions.
A practical rule, per routine
Ask two questions before writing a new routine. First: will someone need to trace this live against physical wiring while troubleshooting? If yes, lean ladder. Second: does this routine involve math, data structures, string handling or logic that will be edited often? If yes, lean structured text. Most routines answer clearly to one or the other; the ones that don't are usually a sign the routine is doing two jobs and should be split.
The goal isn't picking a language. It's matching the tool to who has to read the code next — a technician with a multimeter, or an engineer with a diff tool.