Tank Level Control

Building one control loop from PLC to HMI

This case is less about one HMI screen and more about a readable control loop. I worked through ladder conditions, Modbus TCP exchange, and the state an operator sees in Ignition.

I started with modes and interlocks in OpenPLC. Then connected Runtime to Ignition, checked addresses and tag quality, and only after that built the Perspective screen.

The goal was practical: follow a command from the operator to the process and back again. This is a training prototype, not a production or safety-certified system.

PLC → HMI

modes, interlocks and Modbus TCP
OpenPLC
Ignition
Tank Level Control Summary
OpenPLC and ladder

Modes, thresholds, and interlocks

I started with what the PLC needs to decide. The ladder covers Auto and Manual, level thresholds, E-stop, and pump and outlet-valve interlocks. The point was to define which logic is allowed to send a command, not simply energise an output.

Tank Level Control Overview
Operating modes

I started with two modes. In Auto, the PLC holds the level. In Manual, the operator sends a request, but the final command still goes through ladder logic.

Operating band

The scenario is simple: the pump starts at 35% and stops at 70%. It shows basic level holding without a PID loop.

Interlocks

High-high blocks the pump. Low-low closes the valve. E-stop removes both commands. These limits apply in either mode.

Tank Level Control Step
Modbus and Ignition

Check the signal chain

After the logic, I connected OpenPLC Runtime to Ignition through Modbus TCP. Every signal has a fixed address, type, and direction. Then I checked the chain step by step: PLC bit, OPC tag, Good quality, and only then HMI display.

Tank Level Control Overview
OpenPLC Runtime

Runtime exposes PLC memory to Ignition. After an upload, I checked that Modbus was active and port 502 was available.

Tag map

Every signal has a fixed address, type, direction, and owner. This separates a connection problem from a tag writer conflict.

Check the chain

I checked one signal at a time: PLC bit, OPC tag, Good quality, HMI display. That way the interface does not hide a connection problem.

Tank Level Control Step
Ignition Perspective

Show state in process context

Once the exchange was stable, I built the operator screen in Perspective. It brings together modes, commands, level, equipment state, alarms, and a trend. The screen reads PLC state instead of storing its own version of it.

Tank Level Control Overview
Operator screen

One screen brings together modes, commands, level, actual equipment state, and alarms. The HMI shows PLC data, not a local assumption about state.

Level trend

The 15-minute trend shows what happens to level after a command. Polling keeps the realtime window moving.

Scenario checks

I checked Auto-fill, manual commands, high-high, low-low, and E-stop. The point was not only the screen but the full signal path.

What this prototype demonstrates:

  1. How ladder logic, Modbus, and HMI work as one chain
  2. How to check a process in Ignition instead of isolated tags and rungs
  3. A reusable base for future controls projects
Tank Level Control Step

Other projects

Part Production Cell — MES & OEE Project

Part Production Cell — MES & OEE

OpenPLC, Ignition Perspective and SQLite: order in events, KPIs and downtime causes.

View case study Arrow
Conveyor Sorting Project

Conveyor Sorting

OpenPLC and Ignition: ladder logic, a Structured Text state machine, sensor feedback, and verifiable normal cycles.

View case study Arrow
Monitoring — UPL Project

Monitoring — UPL

Enterprise monitoring for a nuclear plant: system states, engineering constraints, and 3D storage logic.

View case study Arrow