March 13, 2026

Water Filling and Discharging Process Using PLC

Problem Description

In many industries and plants, water storage systems are still operated manually. These manual systems, although simple, present several disadvantages:

Lack of accuracy in maintaining water levels

Time delays due to human intervention

Loss of liquids from overfilling or underfilling

Time-consuming operations that reduce efficiency

Dependence on operators, requiring dedicated personnel for machine operation

Water wastage, which is common in manual systems

Because of these limitations, manual water filling systems are inefficient and unsuitable for modern industrial requirements. Automation using PLCs provides a reliable solution that improves accuracy, reduces wastage, and eliminates the need for constant human supervision.

Problem Diagram: -

 

Problem Solution: -

To overcome the limitations of manual water filling systems, we implement an automated control system using the Siemens S7‑1200 PLC programmed in TIA Portal. The PLC continuously monitors the tank level through sensors and controls solenoid valves to manage filling and discharging cycles.

System Components

Sensors:

High-Level Sensor (TLB2) – Detects when the tank is full.

Low-Level Sensor (TLB1) – Detects when the tank is nearly empty.

Valves:

SOV1 (Feeding Valve) – Controls the water inflow during the filling cycle.

SOV2 (Discharge Valve) – Controls the water outflow during the discharge cycle.

Additional Devices:

Mixer Motor (M) – Operates during discharge to ensure proper mixing.

Buzzer (Q0.4) – Provides an alarm when the tank reaches high level.

START/STOP Push Buttons – Allow manual control of the cycle.

 

Filling Cycle

When the Low-Level Sensor (TLB1) detects that the water level has dropped below the minimum threshold, the PLC activates SOV1 (Feeding Valve).

Water begins to fill the tank automatically.

Once the High-Level Sensor (TLB2) is triggered, the PLC deactivates SOV1, stopping the filling process.

Discharging Cycle

When the High-Level Sensor (TLB2) detects that the tank is full, the PLC activates SOV2 (Discharge Valve).

Simultaneously, the Mixer Motor (M) is turned ON to mix the water during discharge.

The Buzzer (Q0.4) also activates to alert the operator that the tank has reached high level.

When the Low-Level Sensor (TLB1) is triggered again, the PLC deactivates SOV2 and the mixer, stopping the discharge cycle.

Manual Control

The operator can start the cycle by pressing the START button (I0.0).

The cycle can be stopped at any time by pressing the STOP button (I0.1), which resets all outputs and halts the process.

 

Program: -

Here is PLC program for Water filling and discharging process using S7-1200 PLC.

List of inputs/outputs

Type

Address

Tag/Name

Description

Digital Input

I0.0

START PB

Start push button to initiate cycle

Digital Input

I0.1

STOP PB

Stop push button to halt cycle

Digital Input

I0.2

Level Low

Sensor detects low water level

Digital Input

I0.3

Level High

Sensor detects high water level

Digital Output

Q0.0

Cycle ON

Indicator showing cycle is active

Digital Output

Q0.1

SOV1 (Feed)

Solenoid valve for filling cycle

Digital Output

Q0.2

SOV2 (Discharge)

Solenoid valve for discharge cycle

Digital Output

Q0.3

Mixer (M)

Mixer motor ON during discharge

Digital Output

Q0.4

Buzzer

Alarm buzzer ON at high level

 

Ladder diagram for Water filling and discharging process using S7-1200 PLC.

// Cycle control logic

IF NOT "STOPPB" AND ("STARTPB" OR "Cycle ON") THEN

    "Cycle ON" := TRUE;

ELSE

    "Cycle ON" := FALSE;

END_IF;

 

// SOV 1 Control / Feeding Process ON

IF "Cycle ON" AND NOT "Level High" AND ("Level Low" OR "SOV1 (Feed)") THEN

    "SOV1 (Feed)" := TRUE;

ELSE

    "SOV1 (Feed)" := FALSE;

END_IF;

 

// SOV 2 Control / Discharge Process ON

IF "Cycle ON" AND NOT "Level Low" AND ("Level High" OR "SOV2 (Discharge)") THEN

    "SOV2 (Discharge)" := TRUE;

ELSE

    "SOV2 (Discharge)" := FALSE;

END_IF;

 

// Motor COntrol

IF "SOV2 (Discharge)"  THEN

    "MOTOR" := TRUE;

ELSE

    "MOTOR" := FALSE;

END_IF;

 

// Buzzer Control

IF "Level High" THEN

    "Buzzer" := TRUE;

ELSE

    "Buzzer" := FALSE;

END_IF;

 

Program Description

For this application, we used the Siemens S7‑1200 PLC and TIA Portal software for programming.

Cycle ON Latching A latching circuit is implemented for the Cycle ON (Q0.0) output. The cycle can be started by pressing the START push button (I0.0) and stopped by pressing the STOP push button (I0.1).

System Operation Once the cycle is ON, the PLC continuously monitors the tank level.

If the tank level is low, the feeding process begins automatically.

If the tank level is high, the discharge process starts automatically.

Sensor Logic For simplicity, NO (Normally Open) contacts are used for both sensors in the program. In practice, this can be implemented using relay logic in the field or by selecting appropriate sensor types.

When the tank detects low level, TLB1 (Low Level, I0.3) is activated, and the feeding cycle (SOV1, Q0.1) turns ON.

Here, an NC (Normally Closed) contact of TLB2 (High Level, I0.2) is used so that when the PLC detects high level, it automatically stops the feeding cycle.

When the tank detects high level, TLB2 (High Level, I0.2) is activated, and the discharging cycle (SOV2, Q0.2) turns ON.

During discharge, the Mixer (Q0.3) also runs for mixing purposes.

An NC contact of TLB1 (Low Level, I0.3) ensures that when the PLC detects low level, the discharge cycle stops.

Alarm Function When the tank reaches high level (TLB2, I0.2), the Buzzer (Q0.4) is activated to alert the operator.

Throughout all operations, the Cycle ON (Q0.0) signal must remain active. If the STOP button is pressed, the cycle halts and all outputs reset.


Runtime Test Cases

Inputs

Outputs

Physical Elements

I0.0 = 1

Q0.0 = 1

Cycle ON

I0.2 = 1

Q0.1 = 1

Feeding Cycle ON (SOV1 active)

I0.3 = 1

Q0.2 = 1, Q0.3 = 1, Q0.4 = 1

Discharge Cycle ON (SOV2 active), Mixer ON, Buzzer ON

I0.1 = 1

Q0.0 = 0, Q0.1 = 0, Q0.2 = 0, Q0.3 = 0, Q0.4 = 0

Cycle STOP – all outputs reset