Skip to main content

Engineering Lab

Complete verification to access the interactive demos.

Loading verification...

Protected by Cloudflare Turnstile

Back to Projects
Interactive Demonstrations

Engineering Lab

Hands-on demonstrations bridging Industrial Automation and Modern Software Engineering — the intersection of Process Control, AI, and Full-Stack Development.

Control Arena

PID Controller vs AI Agent — compete on a non-linear pH neutralization process

🏭 Tank Level Control Arena

Compare: Your PID vs Reference vs Custom

Single Loop Control
Single Loop Control DiagramLTLevelControllerFVInletOutlet
Level → Controller → Valve (Direct control)
Your PID
2.0m
Valve: 50%
Reference
2.0m
Valve: 50%
Custom
2.0m
Valve: 50%
Your PID
Kp10
Ki0.5
Kd1.5
SP:m
Loading Python...

Custom Python

# Basic PID Controller
Kp = 12.0   # Proportional
Ki = 0.8    # Integral  
Kd = 2.0    # Derivative

integral = 0
last_error = 0

def custom_controller(error, dt=0.1):
    global integral, last_error
    integral = max(-50, min(50, integral + error * dt))
    derivative = (error - last_error) / dt
    output = 50 + Kp * error + Ki * integral + Kd * derivative
    last_error = error
    return max(0, min(100, output))

Tank Level (m) — Setpoint: 5m
Your PID
Settle:
Over: 0.0%
IAE: 0
Reference
Settle:
Over: 0.0%
IAE: 0
Custom
Settle:
Over: 0.0%
IAE: 0
Tips: Lower IAE = better control. Click "Pressure Drop" to test disturbance rejection.

🧪 The Challenge

pH control is notoriously difficult due to the non-linear 'S-Curve'. Near pH 7, small changes cause massive swings.

🎛️ Quick Tune Mode

Adjust P, I, D parameters with sliders. Watch how each affects overshoot, settling time, and oscillation.

💻 Code Editor Mode

Write your own controller in Python. Implement advanced algorithms like Model Predictive Control (MPC).

Control Stack

DCS Signal Architecture — watch data flow from field instrument to cloud historian

DCS Signal Architecture

Understand how field signals flow through a DCS system

TRANSMITTER
100.0°C
Range (4-20mA)
4-20mA SIGNAL
12.00 mA
Conversion
4mA = 0°C
20mA = 200°C
DCS DISPLAY
100.0°C
Scale Config
HISTORIAN
Compression
Unified Range Slider
100°C
0°C
4mA
200°C
20mA
0
Lo
200
Hi
-50°C300°C
Drag red handles to set TX range (4-20mA) • Drag cyan handles to set DCS scale • Drag white handle to change process value
Transmitter
4-20mA
DCS Display
Historian (10s)
Combined Signal View

Understanding the Signal Path

Physical Layer (4-20mA)

The transmitter converts physical temperature into a 4-20mA current signal. This "live zero" design means 0mA indicates a fault (broken wire), while 4mA represents the minimum reading.

Digital Conversion (ADC)

The I/O card's 12-bit ADC converts the analog signal to 0-4095 counts. The DCS then scales this back to engineering units (°C) using the configured range (0-200°C).

Latency & Eventual Consistency

Notice the animation delay between layers. In real plants, the HMI updates in milliseconds, but historian archiving may take seconds due to network polling and compression.

IT/OT Convergence

This demonstrates the "Purdue Model" — from Level 0 (Field) through Level 1-2 (Control) to Level 4 (Enterprise/Cloud). Modern plants now stream data directly to cloud historians.

SCADA Control Lab

Complete industrial automation training: Protocols, Architecture, HMI, and Troubleshooting

SCADA Control Lab

Industrial automation training environment for control & instrument engineers

Purdue Model Architecture

LEVEL 3: Site Operations
HMI/SCADA Displays
Historian
LEVEL 2: Area Control
SCADA Server
OPC UA
LEVEL 1: Basic Control
PLC
Modbus TCP
RTU
Modbus RTU
LEVEL 0: Field Devices

Active Alarms (0)

No active alarms

📟 Industrial Protocols

Explore Modbus RTU/TCP frame structure with CRC validation, and OPC UA browse trees. See actual hex bytes on the wire.

🏭 Purdue Model

Visualize the ISA-95 architecture from Level 0 (Field Devices) through Level 2 (SCADA Server) to Level 3 (HMI/Historian).

🖥️ HMI Faceplates

ISA-101 style faceplates with live trends, alarm limits, and mode selection (Auto/Manual/Cascade).

🔧 Troubleshooting

Practice diagnosing common SCADA issues: communication timeouts, CRC errors, scale mismatches, and stale data.