Training Simulator

The training simulator represents a simplified process consisting of one storage tank, three feed pumps, and two valves (supply and drain). The purpose of the simulator is to provide a realistic, but easy-to-understand,...

Updated 3 min read
On this page (10 sections)
  1. Training Simulator: Tank System
  2. Process Overview
  3. Control Logic
  4. Dynamics
  5. Exposed Variables
  6. Purpose
  7. Tag List: Training Simulator
  8. Pumps
  9. Valves
  10. Notes on Limits & Behavior

Training Simulator: Tank System

The purpose of the simulator is to provide a realistic, but easy-to-understand, process that students can use to design and test their own SCADA applications.

The training simulator represents a simplified process consisting of one storage tank, three feed pumps, and two valves (supply and drain). 

Activate the simulator at Parameters. The simulator listens on opc.tcp://localhost:4845

You can add this simulator as a PLC to the OPC UA devices, and browse and imports its variables.

Process Overview

  • Tank 1 holds liquid up to 10,000 liters.
  • Pumps (1 to 3) can be started and stopped individually and deliver flow into the tank when the supply valve is open. Each pump is equipped with: Start/Stop command (0 = Stop, 1 = Run) Speed reference (0 to 1500 rpm) Actual speed (simulated ramping behavior) Status bits for Run, Error, and Maintenance.
  • Start/Stop command (0 = Stop, 1 = Run)
  • Speed reference (0 to 1500 rpm)
  • Actual speed (simulated ramping behavior)
  • Status bits for Run, Error, and Maintenance.
  • Supply Valve must be open for inflow to occur.
  • Drain Valve allows outflow when open.
  • Both valves support Auto/Manual/Off modes, Error, and Maintenance states.

Control Logic

When the simulator is in Automatic mode, it maintains the tank level around a setpoint using a deadband of ±50 liters:

  • If the tank level falls below (SetLevel - 50) → Pumps start at 1500 rpm, supply valve opens, drain valve closes.
  • If the tank level rises above (SetLevel + 50) → Pumps stop, supply valve closes, drain valve opens.
  • If the tank level is within ±50 liters of the setpoint → All pumps stop, both valves close.

Dynamics

  • Pump speeds are not instantaneous: they accelerate and decelerate with a short ramp, but shut down quickly when stopped.
  • Flow into the tank is proportional to pump speed, with a small random variation to mimic real process noise.
  • The drain valve discharges a fixed outflow when open.
  • The tank is perfectly sealed: no leakage occurs when valves are closed.
  • Tank level is limited between 0 and 10,000 liters.

Exposed Variables

The simulator publishes all process variables over OPC UA. Important tags include:

  • Tank1_LevelTransmitter: current tank level (liters)
  • Tank1_SetLevel: desired setpoint (liters)
  • Tank1_InFlow / Tank1_OutFlow: current inflow and outflow rates (L/s)
  • Pump1/2/3 variables: Start/Stop, Speed, Run, Error, Maintenance
  • SupplyValve and DrainValve variables: Position, Auto/Manual mode, Error, Maintenance
  • SimulatorRandom: a random integer for testing and demo purposes

Purpose

This simulation is designed for SCADA training and exercises. Students can connect their SCADA application to the simulator and practice:

  • Designing faceplates for pumps, valves, and tank instruments
  • Implementing trends and historical logging
  • Setting up alarms (high/low tank levels, pump errors, valve faults)
  • Testing automatic vs. manual control modes
  • Creating operator screens for setpoint entry and monitoring

Tag List: Training Simulator

Below is the complete list of OPC UA variables exposed by the training simulator. Each variable includes: Name, Data Type, Unit, Range, and Description/Usage.

Pumps

Each pump (1 to 3) has the same set of variables. Same structure as Pump 1, but with Pump2_ and Pump3_ prefixes.

Valves

Both the Supply Valve and Drain Valve use the same structure. Same structure as Drain Valve, with SupplyValve_ prefix.

Notes on Limits & Behavior

  • Tank Level is strictly bounded between 0 L and 10,000 L.
  • Pump Speeds ramp up/down to mimic real VSD drives, but stop quickly once commanded to stop.
  • Valves switch instantaneously between open and closed in this version.
  • Auto/Manual/Off Modes: Auto = controlled by simulator logic. Manual = SCADA/operator can directly force commands. Off = safe state (device not available).
  • Auto = controlled by simulator logic.
  • Manual = SCADA/operator can directly force commands.
  • Off = safe state (device not available).
  • Maintenance Flags simulate equipment lockout for service.

The simulator also serves one array node, Sim_FloatArray (ns=2;s=Sim_FloatArray), a Float array with eight elements. Elements 0, 1 and 2 are driven by the simulation as a random value, a sine wave and a counter; the remaining elements keep the last written value. Use this node to commission variable arrays on OPC UA: create a variable with its Name ending in [0], the Node id set to ns=2;s=Sim_FloatArray and the Array size set to the number of elements. The elements receive their values from the single array node, and writing an element only changes its own position in the array.

Something missing or wrong in this article? Contact us