← All Posts

Ladder Logic vs Structured Text: Do You Need PLC Programming for SCADA?

Two questions come up constantly for engineers new to industrial automation. Which PLC language should I learn, ladder logic or Structured Text? And do I need either one before I can use SCADA software at all?

Short answers: if you can already code, start with Structured Text (ST); if you come from an electrical background, start with ladder diagram (LD); and no, you do not need PLC programming to configure SCADA monitoring. PLC programming and SCADA configuration are separate disciplines with different tools and different learning curves.

PLC Programming vs. SCADA Configuration: Two Different Jobs

In a typical industrial project, the PLC programmer and the SCADA engineer are often two different people, sometimes from two different companies. The PLC programmer works for the machine builder or the controls contractor. The SCADA engineer works for the system integrator or the end user. They meet at the tag list.

Dimension
PLC Programming
SCADA Configuration
Who Does It
Controls engineer, machine builder
System integrator, plant engineer
Primary Goal
Control physical processes
Monitor, visualize, alert
Languages
Ladder logic, structured text, FBD, SFC
No code: configuration panels, tag mapping
Output
Machine behavior, safety interlocks
Dashboards, trend charts, alarm rules
Runtime
Cyclic scan, typically milliseconds
Polling at an interval you configure, often seconds
Failure Impact
Machine stops, safety risk
Lost visibility, missed alerts
Typical Tool
TIA Portal, Studio 5000, CODESYS
Voltrus SCADA, Ignition, VTScada

You can be productive with SCADA on day one without ever opening a PLC IDE. If you understand what data lives where, which is a much simpler problem than writing control logic, you are ready to configure SCADA.

What You Need to Know for SCADA

SCADA configuration does not require programming, but it does require knowing a few things about the PLCs you connect to. All of it can be learned in a day or two.

1. Register Addresses and Memory Areas

Every PLC exposes its data through named memory areas. On a Siemens S7 that means knowing the difference between DB1.DBW0 (a data block word), I0.0 (an input bit in the process image, such as a wired digital input), and MW10 (a marker word); see the S7 Communication Protocol Guide. On a Modbus device it means knowing that holding register 40001 is read with function code 03. The 4xxxx and 3xxxx numbers are a documentation convention: on the wire the first holding register is address 0, and some tools and manuals count from 1. You do not need to know what the PLC does with that data, only where it lives.

Memory Area Quick Reference

The four Modbus memory areas you will meet most often when configuring SCADA tag addresses:

  • Holding Registers (4xxxx): Read/write values. Temperatures, setpoints, counters. Function codes 03/06/16.
  • Input Registers (3xxxx): Read-only values from sensors. Function code 04.
  • Coils (0xxxx): Single-bit outputs. Motor run commands, valve open/close. Function codes 01/05/15.
  • Discrete Inputs (1xxxx): Single-bit inputs. Limit switches, proximity sensors. Function code 02.

A full breakdown is in What Is Modbus?

2. Data Types

A 16-bit integer might be signed or unsigned. A 32-bit float might span two consecutive holding registers with the words swapped. Knowing the common gotchas (byte order, word order, signed vs. unsigned ranges) prevents most tag configuration headaches.

3. Protocol Basics

You do not need to implement Modbus from scratch. You do need to know that Modbus TCP uses port 502 by default, that every request carries a unit ID, and that baud rate and parity only matter for Modbus RTU over serial. On RTU the unit ID is the slave address (1-247); on TCP it is usually ignored by a device that has its own IP address, but a TCP-to-serial gateway uses it to select the device behind it, so use the value your device's manual gives. S7 communication uses the PLC's IP address plus rack and slot numbers. This is configuration knowledge, not programming knowledge.

What Ladder Logic Does (And Why SCADA Does Not Use It)

Ladder logic is a graphical language modeled on electrical relay schematics. It runs on the PLC CPU in a scan cycle: every rung is evaluated in order, every few milliseconds, forever. It reads inputs, evaluates conditions, and writes outputs. That is what controls a machine.

SCADA does something different. It polls the PLC periodically (every 500 milliseconds, every second, every 5 seconds) and reads values for display, logging, and alerting. SCADA watches the process; it does not run it. That is why SCADA architecture uses completely different technology from PLC control code.

Key insight: Ladder logic runs at the speed of the machine (milliseconds). SCADA runs at the speed of human attention (seconds). The PLC programmer worries about scan cycle jitter. The SCADA engineer worries about whether the maintenance team will actually look at the dashboard.

SCADA can write to PLC registers to send setpoints, acknowledge alarms, or toggle outputs. Even then, a setpoint write is a single command to a known address, while ladder logic for a conveyor involves many rungs with timers, interlocks, safety conditions, and fault handling.

Ladder Logic vs Structured Text: Which Should You Learn?

If you do want to program PLCs, the oldest argument in the field is ladder diagram versus Structured Text. Ladder partisans say if it is not ladder, it is not PLC. ST advocates point out that a PID controller or a string parser in rungs is misery. Both are right about the other's weaknesses.

If you have programming experience: learn ST first. If you come from electrical or maintenance work: learn LD first, because it is what the plant floor reads. Eventually learn both; most modern PLC platforms support mixed-language projects.
Factor
Structured Text (ST)
Ladder Diagram (LD)
Complex logic
Strong: IF/ELSE, CASE, loops
Gets tangled past a dozen rungs
Math operations
Native expressions and functions
One ADD/MUL block per operation
Boolean / I/O
Fine: AND, OR, NOT
Excellent: visual signal tracing
Data processing
Arrays, strings, structs, loops
Very limited
Version control
Plain text diffs well in git, where the tool stores it that way
Usually vendor binary or XML
Maintenance readability
Requires code literacy
Electricians can trace rungs
Learning curve (programmers)
Low: familiar syntax
Medium: graphical paradigm
Learning curve (electricians)
Medium: programming concepts
Low: looks like schematics

Where Ladder Wins

  • Plant floor readability. When a machine faults at 2 AM, the maintenance electrician needs to trace the logic fast. In ladder, power flows left to right and you can see which contact is blocking the motor. In ST you read code and trace variable assignments.
  • Simple boolean logic. Start/stop circuits, interlocks, and permissives map naturally onto rungs.
  • Safety logic. Many safety programs are written graphically (ladder or function block) because the logic can be verified visually by an auditor without reading code. Check what your safety PLC vendor supports.

Where Structured Text Wins

  • Math and data processing. A moving average over 100 readings is a short FOR loop in ST. In ladder it becomes a long chain of shift and add blocks.
  • State machines. A CASE statement handles transitions cleanly. In ladder, state machines turn into latched coils and self-resetting rungs that are hard to follow.
  • String handling. Parsing a barcode or formatting a message is routine in ST and painful in pure ladder.
  • Reusable function blocks. ST defines function blocks with typed inputs and outputs natively, which makes libraries easier to build and review.

The Same Logic, Both Ways

Motor start/stop with overload and seal-in, the most common PLC pattern. The stop button and the overload contact are wired normally closed, so stop_ok and overload_ok read TRUE when healthy and a broken wire stops the motor. Stop and overload take priority over start.

Structured Text:

  • motor := (start OR motor) AND stop_ok AND overload_ok;

Ladder (one rung):

  • |--+--| start |--+--| stop_ok |--| overload_ok |--( motor )
  •   |--| motor |--+ (the parallel branch is the seal-in: motor holds itself on after start is released)

Both are clear for this case. Add a timer delay, a counter, an alarm threshold, and a state machine, and the ST version tends to stay a readable page of code while the ladder version grows into many rungs with nested branches.

The Pragmatic Answer: Use Both

  1. ST for main control logic, calculations, data processing, state machines, and function blocks.
  2. LD for I/O mapping, interlocks, and simple permissives that maintenance needs to read at 2 AM.
  3. SFC for the overall sequence, if your platform supports it.

The language is a tool. Pick whichever makes the specific task clearest. For syntax and worked examples, see the Structured Text guide, and for the other three languages, the five IEC 61131-3 languages explained.

When PLC Knowledge Helps SCADA Work (But Is Not Required)

Debugging Communication Issues

When SCADA shows a stale value, the cause could be the PLC program (nothing updates that register), the network (a firewall blocking port 502), or the SCADA configuration (wrong address). Being able to open the PLC project and check whether a register is actually written saves time. In most projects, though, the person who wrote the program is a phone call away.

Understanding the Process

Reading ladder logic shows what the machine is supposed to do, which helps you build better dashboards. If a rung latches a fault bit when temperature exceeds 85°C, you know to alarm on that register. That is reading comprehension, not programming ability.

Small Integrator Projects

Some integrators do both jobs. If you are a one-person shop, learning both makes you more valuable, but they are still learned separately.

The Learning Path for SCADA

If you want to set up monitoring, this is the order that makes sense. PLC programming is not on it.

  1. Learn the network. IP addresses, subnets, port numbers. Most connection problems are network problems.
  2. Learn one protocol. Start with Modbus TCP: simple, widely supported, easy to test.
  3. Learn register addressing. Get comfortable with the memory map of one PLC family, such as Modbus holding registers or Siemens S7 data blocks.
  4. Learn the SCADA tool. Each platform has its own tag configuration, dashboard builder, and alarm engine.
  5. Optional: learn to read ladder logic. Reading, not writing, so you can follow a PLC project someone sends you.

Start Monitoring Without Writing a Single Rung

Voltrus SCADA connects to Modbus TCP, Siemens S7, and EtherNet/IP devices through configuration, not code. Point it at a PLC IP address, map tags, and build dashboards and alarms.

Explore Voltrus SCADA

Further Reading