Topic
Programming
45 guides across the knowledge base.
Controller Memory and Addressing
How a controller organizes its data: data tables and tags, the input and output images, the elementary data types and what they hold, and the naming discipline that keeps a program readable years later.
8 min readUpdated Sep 5, 2026
Tasks and Execution Priority
How a controller schedules its work: the continuous task, periodic tasks at a fixed rate, event tasks triggered by something happening, how priority preempts, and where each kind of logic belongs.
7 min readUpdated Sep 5, 2026
The Watchdog Timer
What the scan watchdog protects against, why it faults the controller instead of pausing it, what makes a scan run long, and why raising the limit is the wrong first response.
6 min readUpdated Sep 5, 2026
Retentive Memory
What survives a power cycle in a controller and what does not, how retention is backed up by battery, capacitor, or nonvolatile storage, what should be retentive, and how retained data gets lost.
8 min readUpdated Sep 5, 2026
IEC 61131-3
The standard behind PLC programming languages: the five languages, the common elements of data types, variables, and program organization units, what conformance actually means, and how the standard shows up in real platforms.
9 min readUpdated Sep 5, 2026
Structured Text
The text language of IEC 61131-3: syntax, control structures, how it fits alongside ladder, the conventions that keep it readable for the next person, and the mistakes that make structured text a liability in a plant that troubleshoots online.
10 min readUpdated Sep 5, 2026
Function Block Diagram
The graphical data-flow language of IEC 61131-3: how blocks, pins, and wires work, execution order, where FBD beats ladder and structured text, building reusable equipment blocks, and the habits that keep a diagram readable.
9 min readUpdated Sep 5, 2026
State Machines in PLC Programs
Writing sequences as explicit states instead of tangled interlock chains: what a state is, how transitions are written, the pattern in structured text and in ladder, publishing the state to the HMI, and the failure handling every state machine needs.
11 min readUpdated Sep 5, 2026
Permissives
The conditions that must be true before a device may start: how permissives differ from interlocks and trips, the list a pump or feeder usually needs, coding them so the HMI can say why a start was refused, and the rules for time delays and bypasses.
9 min readUpdated Sep 5, 2026
Sequencers
Step-based control for operations that always run in the same order: backwash, pump and valve startup, batch makeup, membrane cleans. What every step needs, three ways to implement one, handling faults and power loss mid-sequence, and what the HMI shows.
10 min readUpdated Sep 5, 2026
Program Organization
Structuring a controller program so that someone else can maintain it: a layout that follows the plant, one routine per job, standard device blocks, I/O mapped in one place, a fixed execution order, naming that means something, and comments that say why.
10 min readUpdated Sep 5, 2026
Control Strategies
Choosing how a loop is controlled before choosing how to program it: on-off with deadband, staging, PID, ratio and feedforward, cascade, split range, and override, with the water and wastewater applications each fits and the questions that pick between them.
11 min readUpdated Sep 5, 2026
Alarms in the Controller
Generating alarm conditions in the controller rather than in the graphics: why the PLC should own the alarm state, a standard alarm block with setpoints, deadband, and delays, equipment alarms, and packing alarm bits for SCADA.
9 min readUpdated Sep 5, 2026
Sequential Function Chart
The IEC 61131-3 language for sequences: steps, transitions, actions and their qualifiers, alternative and simultaneous branches, where it fits in water and wastewater, and the rules that keep a chart from sticking in a step.
9 min readUpdated Sep 5, 2026
Program Faults
Faults the program causes: an index out of range, division by zero, an invalid indirect address, a missing routine, a type mismatch, or task overlap. Reading the fault record, what a fault handler should do, clearing safely, and logic that does not fault.
8 min readUpdated Sep 5, 2026
Watchdog Faults
A task that did not finish in time: what the watchdog protects, why the scan grew, and how to fix it. Measuring task times, finding the loop or instruction that took the time, communications load, and when raising the watchdog is legitimate.
7 min readUpdated Sep 5, 2026
Control Expert
Field notes on Control Expert, the Schneider Electric engineering software for the Modicon M340 and M580: project structure, the five languages and derived function blocks, versions and files, online changes, upload information, and security settings.
8 min readUpdated Sep 5, 2026
Unity Pro
Field notes on Unity Pro, the earlier name of Control Expert and the software behind most installed Modicon M340, Quantum, and Premium applications: versions, moving projects to Control Expert, keeping an old version alive, and the Concept and PL7 originals.
7 min readUpdated Sep 5, 2026
Studio 5000
Field notes on Studio 5000, the Rockwell Automation software for ControlLogix and CompactLogix: the version-to-firmware rule, side-by-side installs, project files, add-on instructions, online editing, documentation in the controller, source protection.
8 min readUpdated Sep 5, 2026
Siemens
Field notes on Siemens controllers in water and wastewater: the S7-1200 and S7-1500 with TIA Portal, the older S7-300 and S7-400, PROFINET and PROFIBUS, the block model and memory cards, protection levels, and why it arrives inside packaged equipment.
8 min readUpdated Sep 5, 2026
AutomationDirect
Field notes on AutomationDirect controllers in water and wastewater: the Productivity, Do-more and BRX, and CLICK families with free software, the legacy DirectLOGIC line, Modbus and EtherNet/IP support, what they suit, and what to check on site.
8 min readUpdated Sep 5, 2026
Filtering Analog Inputs
How to damp a noisy analog input in the controller without hiding a real process change: the first-order filter, the moving average, the median, where each belongs, and what never to filter.
8 min readUpdated Sep 5, 2026
Deadband and Hysteresis
Why a single setpoint chatters, how a deadband turns it into a start point and a stop point, how wide to make it, and where deadbands belong in alarms, level control, and controller outputs.
7 min readUpdated Sep 5, 2026
Signal Validation
Catching a failed analog input in logic before it runs a pump on a dead transmitter: range checks, module status bits, frozen-value detection, rate checks, and what the program does with a bad value.
8 min readUpdated Sep 5, 2026
SQL Integration
Connecting SCADA and historian data to relational databases: why a utility does it, the methods, a schema that handles time series, the query patterns for totals and reports, the mistakes that flood a database or stall a server, and security.
10 min readUpdated Sep 5, 2026
Ignition
Field notes on Ignition from Inductive Automation: gateway and modules, unlimited licensing per server, Perspective and Vision clients, the SQL-based historian, Python scripting, redundancy, Edge for small sites, and what to decide before building on it.
8 min readUpdated Sep 5, 2026
Lift Station Pump Alternation
Which pump leads, how the lead role rotates, what an alternator relay does, and why equal run hours are not always the goal. Includes the logic rules that keep alternation from causing trouble.
10 min readUpdated Sep 5, 2026
Membrane Control
The control system of a membrane skid: the loops for permeate flow, recovery, and dosing, the permissives and trips, the start, run, flush, and shutdown sequences, and the data the operators and the membrane supplier need from the historian.
9 min readUpdated Sep 5, 2026
Clean-in-Place
Cleaning membranes in place: the triggers from the normalized trends, the low pH clean for scale and the high pH clean for organics and biofouling, the sequence of flush, heat, recirculate, soak, and rinse, and how automation makes cleaning repeatable.
9 min readUpdated Sep 5, 2026
Pump Sequencing Strategies
The strategies for sequencing wastewater pumps: level bands with alternation, lead and lag and standby with runtime balancing, a drive lead with constant speed lag, pump-down against steady-flow operation, and how each strategy fails and recovers.
9 min readUpdated Sep 5, 2026
Controller Hardening
What can be locked down on a PLC or RTU: keyswitch and mode, credentials, unused services, access lists, firmware, and the engineering workstation that is the real target.
12 min readUpdated Sep 5, 2026
Controller Mode Switch and Keyswitch
The physical switch on the front of a controller: what RUN, REMOTE, and PROGRAM mean, why most controllers are left in REMOTE and why that matters, a policy for a utility, how mode is monitored and alarmed, and what to do on platforms with no keyswitch.
8 min readUpdated Sep 5, 2026
Controller Program Integrity
Knowing that the program in the controller is the one that was approved: checksums and change counters, the scheduled compare against the trusted backup, signed and protected projects, what an unexplained difference means, and making the check routine.
8 min readUpdated Sep 5, 2026
Program Change Detection
Knowing when a controller program changed and whether it was supposed to: change counters and signatures the SCADA can alarm on, scheduled compares, audit logs, mode and network monitoring, what each catches, and what to do when one fires.
9 min readUpdated Sep 5, 2026
How to Create a PID Loop in a PLC
Set up a PID instruction from scratch: scale the PV and CV, pick the action, set the execution rate, configure limits and anti-windup, tune conservatively, and test the manual and auto transitions before it controls anything.
10 min readUpdated Sep 5, 2026
How to Build a Sequencer
Build a step sequencer in a controller that will not stick, restart into the wrong step, or leave equipment half way: define the steps from the narrative, choose a step register, and test every path before the plant depends on it.
9 min readUpdated Sep 5, 2026
How to Build a Tag
Create a SCADA tag that is correct, documented, and consistent with every other tag: name it by the convention, bind it to the right controller address or name, and verify it against the live value and the I/O list before it goes on a screen.
7 min readUpdated Sep 5, 2026
Program Will Not Download
The software refuses to download, or the download starts and fails. The version, path, mode, memory, and protection problems behind it, and the order to check them in.
7 min readUpdated Sep 5, 2026
Logic Not Executing As Expected
The rung looks right and the plant does something else. The scan-order, duplicate-output, unscheduled-routine, and data-type traps behind it, and how to find which one you are in.
8 min readUpdated Sep 5, 2026
Wrong Register Data
The poll succeeds and the numbers are nonsense: an offset by one, the wrong table, swapped words in a 32-bit value, a float read as an integer, signed read as unsigned, a scale factor not applied, a stale gateway value, or the wrong unit answering.
8 min readUpdated Sep 5, 2026
Sequences of Operation
Writing the ordered, step-by-step description of what a system does: states, transitions, timeouts, and the format that lets a programmer implement it and a tester verify it without interpretation.
8 min readUpdated Sep 5, 2026
The Backup That Would Not Restore
A controller failed on a Friday, the spare was on the shelf, and the saved program would not go in. What a PLC backup has to contain to actually put a system back, why the program file alone is not enough, and how a small utility keeps backups that work.
9 min readUpdated Sep 5, 2026
Ladder Logic Fundamentals
Rungs, contacts, coils, and the relay conventions the language inherited — plus the patterns you will meet in almost every industrial program.
10 min readUpdated Aug 11, 2026
Analog Scaling: Raw Counts to Engineering Units
The arithmetic that turns an analog card reading into feet, psi, or gallons per minute — plus the range mismatches that silently corrupt it.
8 min readUpdated Jul 16, 2026
Interlocks and Permissives
A permissive lets you start. An interlock stops you. Confusing the two produces equipment that either will not run or will not protect itself.
7 min readUpdated Jun 27, 2026
Other topics
Direct contact
Have a controls question?
Reach Eric Sullivan directly about anything on this site, a controls or automation topic, or one of his personal projects.