SCADA — Supervisory Control and Data Acquisition — is the operator's window into an industrial process. While PLCs do the real-time control, SCADA provides visualisation, alarms, historical data, and remote access. Every modern factory, water treatment plant, and energy facility runs on SCADA.
This tutorial walks you through building your first SCADA project, using two of the most popular platforms: Siemens WinCC and Inductive Automation Ignition. By the end, you will know how to configure tags, design operator screens, implement alarms, and log historical data.
What Does a SCADA System Do?
A SCADA system has four core responsibilities:
- Data acquisition — poll PLCs and field devices for current process values.
- Supervisory control — send setpoints, start/stop commands, and recipe parameters.
- Alarm management — detect abnormal conditions and notify operators.
- Historical data — log values over time for trending, reporting, and compliance.
Modern SCADA platforms add: role-based access, web-based clients, mobile dashboards, REST APIs, and integration with IIoT analytics.
Core SCADA Concepts
Tags
A tag is a named data point — usually mapped to a PLC address. Every piece of data on a SCADA screen traces back to a tag.
Example tag definition: ``` Name: Tank1_Level_Percent Address: %MD100 (Siemens) or N7:100 (Allen-Bradley) Data type: REAL Engineering units: % Range: 0–100 Scan rate: 500 ms ```
Screens (HMI Graphics)
Screens are the visual pages operators interact with — overview, detail views, trends, alarm lists. Each screen contains objects linked to tags: numeric displays, bar graphs, buttons, pipes, valves, motors.
Alarms
Alarms are configured conditions (e.g., `Tank1_Level > 90`) that trigger when violated. Each alarm has priority, acknowledgement state, and historical logging.
Historians
A historian is a time-series database that stores tag values over time. Compressed storage allows years of data on modest hardware. Used for trending, reports, regulatory compliance, and analytics.
Tutorial: Your First WinCC Project
We'll build a simple tank level monitoring screen with a pump control and alarm.
Step 1: Create the Project
- Open TIA Portal.
- Create a new project: "Tank_SCADA_Tutorial".
- Add a PC station with WinCC Runtime Professional.
- Add your PLC (e.g., S7-1500 station).
- Connect them via Ethernet in Devices & Networks.
Step 2: Define PLC Tags
In the PLC project, create a DB called `Process_Data`: ``` Tank1_Level : REAL // 0–100% Tank1_Pump : BOOL // Start/stop command Tank1_HighAlarm : BOOL // Set when Level > 90 ```
In WinCC, drag these DB variables to the HMI tag table. They become addressable on every screen.
Step 3: Build the Overview Screen
Create a new screen: `Overview`. Add:
- A rectangle representing the tank.
- An I/O field displaying `Tank1_Level` with 1 decimal place.
- A bar graph object scaled 0–100%, linked to the level tag.
- A button labelled "Pump Start/Stop" with tag action toggling `Tank1_Pump`.
- A graphic with two states: green when pump is on, grey when off.
Step 4: Configure the Alarm
In the alarm editor:
- Trigger tag: `Tank1_HighAlarm`
- Text: "Tank 1 Level High"
- Priority: High
- Acknowledgement: Required
Add an alarm banner to the top of every screen using the `Alarm View` control.
Step 5: Set Up the Historian
In the Tag Logging editor:
- Create a log for `Tank1_Level` at 1 Hz.
- Retention: 30 days.
- Add a Trend Control to a Trends screen to visualise history.
Step 6: Test It
- Compile and download both PLC and WinCC projects.
- Start Runtime.
- Use PLC simulator to change `Tank1_Level`.
- Observe the bar graph, trigger the alarm, check the trend.
Tutorial: The Same Project in Ignition
Ignition takes a different but equally effective approach.
Step 1: Add the OPC UA Device
In the Gateway, go to Config → OPC UA → Device Connections and add your PLC. Ignition auto-discovers tags.
Step 2: Create Tags
In Designer, drag PLC tags from the OPC browser into your Tag folder. Click-rename to `[default]Tanks/Tank1/Level`, `Pump`, `HighAlarm`.
Step 3: Build the Screen in Perspective or Vision
- Add a gauge component bound to `[default]Tanks/Tank1/Level`.
- Add a button with `system.tag.writeBlocking` scripting to toggle the pump tag.
- Add an Alarm Status table.
Step 4: Configure the Alarm
Right-click the Level tag → Alarms → Add alarm:
- Mode: Above Setpoint, Setpoint 90
- Priority: High
- Display path: `Tank 1/High Level`
Step 5: Historian
Right-click the Level tag → Properties → enable History. Select the historian provider. Ignition automatically logs the tag.
Best Practices for SCADA Design
- Separate client and server roles. Operators should never have admin privileges on SCADA clients.
- Use grey, not black, backgrounds. Reduces eye strain on 24/7 control rooms.
- Never hard-code tag addresses. Use aliases or tag paths so you can migrate PLCs without rebuilding screens.
- Rate-limit alarms. Prevent 1000 alarms at once during a process upset — use chattering suppression and delayed alarms.
- Back up everything. Tag databases, screens, historian — nightly backups to at least two locations.
- Design for operators, not engineers. Ask "what does the operator need at 3 AM during a failure?" and design to that answer.
Next Steps
SCADA mastery takes months of practice. At EDWartens UK, our Professional Module dedicates a full week to WinCC and integrates it with Siemens S7-1500 PLCs across real process scenarios: batch reactor control, tank farm management, and discrete manufacturing.
For a deeper understanding of where SCADA is heading, read The Future of SCADA Systems in Industry 4.0.
Ready to build production-grade SCADA systems? Enrol in our Professional Module and work with real industrial hardware under expert instruction.

