1. Overview
Integrating a Siemens SIMATIC S7-1200 PLC with a supervisory control and data acquisition (SCADA) platform is the standard path for distributed remote monitoring in discrete and process automation. The S7-1200 family (CPU 1211C, 1212C, 1214C, 1215C, 1217C) ships with a built-in PROFINET interface on every CPU variant, making it Ethernet-native out of the box. SCADA connectivity is implemented either directly through the PROFINET stack, through OPC UA on firmware V4.4 and later, or through legacy S7 communication / Modbus TCP on older firmware.
This reference covers the full integration pipeline: hardware selection, TIA Portal project setup, protocol selection, SCADA driver configuration for both Ignition by Inductive Automation and Siemens WinCC (TIA Portal and WinCC V7), tag historian design, alarm routing, and cybersecurity hardening for remote access. The target reader is a control or automation engineer commissioning a small-to-medium plant with one or more S7-1200 stations reporting to a central SCADA server.
2. Prerequisites
Before starting, verify the following hardware and software are available:
- PLC: SIMATIC S7-1200 CPU with PROFINET port (any CPU 1211C/1212C/1214C/1215C/1217C). Reference the S7-1200 System Manual.
- Firmware: V4.4 or later for OPC UA server capability; V4.2 minimum for stable PROFINET IO operation. Confirm firmware with TIA Portal under Online > Accessible Nodes or via the CPU's web server.
- TIA Portal: V17 or later for current OPC UA security policy support; V16 SP1 minimum. Match the TIA Portal version with the S7-1200 CPU firmware per the TIA Portal Compatibility Tool.
- SCADA platform: Ignition 8.x (any edition) or WinCC Professional V17 / WinCC V7.5 SP2.
- Network: Managed industrial Ethernet switch (e.g., SCALANCE XC-200 or equivalent), Cat 6A cabling, isolated 24 VDC power supply (Sitop PSU100S or equivalent).
- Engineering workstation: Windows 10/11, administrator rights, static IP address on the same subnet as the PLC.
3. S7-1200 Hardware & Firmware Considerations
CPU selection is driven by I/O count, program memory, and the number of simultaneous SCADA connections required. Each S7-1200 CPU supports a fixed number of open PROFINET / OPC UA / S7 communication connections, which directly limits how many SCADA clients can subscribe simultaneously.
| CPU Model | Work Memory (Program/Data) | Bit Memory (M) | DB Count Limit | Max PROFINET Devices (IO Controller mode) | Max Connections (PG/OP/HMI) |
|---|---|---|---|---|---|
| CPU 1211C DC/DC/DC | 75 KB / 50 KB | 4096 B | 1024 | 16 | 3 (PG), 5 (OP) |
| CPU 1212C DC/DC/DC | 100 KB / 75 KB | 4096 B | 1024 | 16 | 3 (PG), 5 (OP) |
| CPU 1214C DC/DC/DC | 150 KB / 100 KB | 8192 B | 2048 | 16 | 3 (PG), 7 (OP) |
| CPU 1215C DC/DC/DC | 200 KB / 150 KB | 8192 B | 2048 | 16 | 3 (PG), 7 (OP) |
| CPU 1217C DC/DC/DC | 400 KB / 250 KB | 16384 B | 2048 | 32 | 3 (PG), 9 (OP) |
Values per the SIMATIC S7-1200 Programmable Controller System Manual, edition 06/2021.
4. Communication Protocol Selection
Three protocols are practical for S7-1200 to SCADA communication. Choose based on firmware version, SCADA platform, and security requirements.
| Protocol | Transport | Min Firmware | Security | Best Use Case |
|---|---|---|---|---|
| PROFINET (S7 communication) | TCP/IP, ISO-on-TCP (RFC 1006) | All | None native; relies on network segmentation | Siemens-native HMI/SCADA (WinCC) over the same plant network |
| OPC UA Server | TCP, binary | V4.4 (license required for >3 sessions) | Sign & Encrypt, certificates, user/token auth | Multi-vendor SCADA (Ignition, WinCC Unified), cross-platform, internet-facing |
| Modbus TCP | TCP port 502 | All (via MB_SERVER / MB_CLIENT instructions) | None native | Legacy SCADA, third-party equipment, simple register polling |
4.1 PROFINET / S7 Native Communication
PROFINET on the S7-1200 runs on the CPU's integrated two-port switch. For SCADA polling, TIA Portal exposes the PLC's data via standard PUT/GET or via configured S7 connections. WinCC Professional uses the SIMATIC S7-1200, S7-1500 channel natively. Ignition connects using the Siemens S7 Ethernet driver from Cirrus Link or Inductive Automation's built-in driver, which uses the S7 comm protocol over TCP port 102.
Enable S7 communication under CPU Properties > Communication > Access > Permit access with PUT/GET communication. Without this, the SCADA cannot read DB tags.
4.2 OPC UA
OPC UA on S7-1200 firmware V4.4 is implemented as a server embedded in the CPU runtime. It exposes OPC UA address space mapped from the PLC's DB blocks. Three licensing tiers apply:
- Free: 3 concurrent sessions, no security policy beyond None.
- Basic: 10 sessions, supports SecurityPolicy Basic128Rsa15 / Basic256, no discovery.
- Plus: 50 sessions, full SecurityPolicy None/Basic128Rsa15/Basic256Sha256, server certificate management.
Configure OPC UA in TIA Portal under CPU Properties > OPC UA Server. Enable the server, select the security policy, set the port (default 4840), and define which DB blocks are exposed. Generate the server certificate and export the SCADA client's certificate into the CPU's trusted certificate store.
4.3 Modbus TCP
Modbus TCP is the fallback for legacy SCADA. The S7-1200 uses MB_SERVER (server mode) and MB_CLIENT (client mode) instructions in the program. Each instance consumes one connection. Modbus register mapping uses the standard 4xxxx holding register space, mapped to DBW addresses starting at the configured offset.
5. Network Architecture & IP Planning
SCADA integration requires a deterministic network with isolated broadcast domains. The recommended topology separates the control plane (engineering access) from the SCADA plane (data acquisition).
[Corporate LAN] --- [Firewall] --- [DMZ/Historian Server] --- [Firewall] --- [Industrial LAN / SCADA VLAN] --- [SCADA Server] --- [S7-1200 PROFINET]
| Device | Role | Suggested IP | VLAN |
|---|---|---|---|
| SCADA Server (Ignition Gateway / WinCC) | Data server | 10.50.10.20/24 | 10 |
| Historian / SQL Server | Storage | 10.50.10.21/24 | 10 |
| S7-1200 CPU 1 | PLC | 10.50.10.101/24 | 10 |
| S7-1200 CPU 2 | PLC | 10.50.10.102/24 | 10 |
| Engineering Station (TIA Portal) | Programming | 10.50.10.50/24 | 10 |
| Managed switch (SCALANCE XC-208) | Backbone | 10.50.10.1/24 | 10 |
| Remote Operator Client | View-only | Corporate DHCP | DMZ via VPN |
6. TIA Portal Configuration for SCADA Connectivity
Follow this step-by-step for a clean SCADA-ready project:
-
Create the project and add the S7-1200 station. Set the CPU's IP address and PROFINET device name (e.g.,
plc-line1-station01) under Device View > PROFINET Interface > Ethernet Addresses. - Enable access protections: Under CPU Properties > Protection > Access Level, set HMI access to "Read/Write" and password-protect the Full Access level. Without a password, anyone on the network can download new logic.
- Enable PUT/GET: CPU Properties > Communication > Access > Permit access with PUT/GET communication = checked.
- Disable optimized block access for DB blocks read by SCADA, or ensure the SCADA driver supports optimized block symbolic access (Ignition's S7 driver does; legacy WinCC channel does not).
-
Configure OPC UA (if used): CPU Properties > OPC UA Server > Server = activated, set port 4840, select SecurityPolicy
Basic256Sha256, and add the SCADA client certificate under Trusted Clients. -
Create a DB block named
DB_ScadaInterfacecontaining only the tags required for SCADA. This isolates SCADA traffic from the live control DBs and simplifies OPC UA address space design. - Download the project to the CPU and verify the PROFINET port status LED is solid green, indicating an active link with no faults.
6.1 Sample Tag Definition for SCADA Interface
The following structured snippet shows how to declare a SCADA-facing DB. Symbolic naming is critical for OPC UA and Ignition's S7 driver, which reads tag names directly.
DATA_BLOCK "DB_ScadaInterface"
{ S7_Optimized_Access := 'TRUE'; S7_SetPoint := 'FALSE' }
VERSION : 0.1
NON_RETAIN
STRUCT
Line1_Running : BOOL; // 0.0 - line run feedback
Line1_Fault : BOOL; // 0.1 - line fault latched
Line1_Speed_RPM : INT; // 2.0 - actual speed
Line1_Setpoint_RPM : INT; // 4.0 - commanded speed
Tank1_Level_Pct : REAL; // 6.0 - 0-100% scaled
Tank1_Temp_C : REAL; // 10.0 - deg C
Shift_Counter : DINT; // 14.0 - production count
Last_Fault_Code : WORD; // 18.0 - 0x0000 = none
END_STRUCT;
END_DATA_BLOCK
7. SCADA Platform Selection: Ignition vs WinCC
Both platforms work natively with S7-1200. The choice hinges on whether the project is vendor-aligned or vendor-neutral, and on licensing economics.
| Criterion | Ignition 8.x (Inductive Automation) | WinCC Professional V17 (TIA Portal) | WinCC Unified (TIA Portal) |
|---|---|---|---|
| Vendor lock-in | Vendor-neutral | Siemens-only | Siemens-only |
| Native driver for S7-1200 | Siemens S7 Ethernet (built-in) / OPC UA | SIMATIC S7-1200 channel | OPC UA only |
| Tag historian | Built-in Tag Historian module, stores to PostgreSQL / SQL Server / MySQL | SQL Server via WinCC/Connectivity Pack | SQLite / SQL Server via Unified PC |
| Web client | Native, mobile-friendly, zero install | WinCC WebNavigator (per-client license) | Unified Web UX (per-tag licensing) |
| Redundancy | Active-active gateway redundancy built in | WinCC Redundancy (add-on) | Unified redundancy (add-on) |
| Licensing model | Unlimited tags per server, per-client connection fee | PowerTags (RT + archive tags) 256/1024/4096/16k tiers | Per-tag licensing |
| Recommended for | Mixed vendor fleets, web-first remote monitoring | All-Siemens plants, deep TIA integration | New Siemens Unified Comfort Panel deployments |
8. Ignition Configuration Steps
- Install Ignition on the SCADA server. The Linux or Windows installer creates an Ignition Gateway on port 8088 by default.
-
Configure the Siemens driver: In the Gateway web interface, navigate to Config > Devices > Create Device. Select Siemens S7 Ethernet. Set the hostname/IP to the S7-1200 CPU (e.g.,
10.50.10.101), set the rack/slot to0/1(S7-1200 always uses slot 1 for CPU 1), and set Connection Type to PG or OP as appropriate. Check Enable Symbol Loading to pull tag names from the PLC. -
Configure OPC UA (alternative): Add an OPC UA Server device type, point to
opc.tcp://10.50.10.101:4840, set Security Policy toBasic256Sha256, and upload the PLC's certificate into Ignition's trust store. -
Add tags: For each DB tag, create a tag with the address matching the DB offset, e.g.,
[DB_ScadaInterface]Line1_Runningfor symbolic addressing orDB100,X0.0for absolute. - Enable the Tag Historian module: Under Config > Modules, install the Tag Historian module. Configure a system DSN pointing to PostgreSQL or SQL Server. Tag storage defaults to record-on-change; change the deadband to limit noise on analog tags.
- Build a perspective project for remote monitoring. Perspective is Ignition's web-based, mobile-friendly visualization framework.
- Configure alarm notification: Install the Alarm Notification module. Set up email pipelines (SMTP) and SMS pipelines (Twilio / SMS gateway). Configure alarm pipelines with priority and routing rules.
9. WinCC Configuration Steps (TIA Portal)
- Add the HMI device in the TIA Portal project: Add New Device > HMI > WinCC RT Professional. Establish an HMI connection to the S7-1200 PLC.
- Configure the connection: Set the connection to use S7 Communication, with the PLC's PROFINET interface address and rack/slot 0/1.
- Define tags: Mirror the DB tags into the WinCC tag database with matching data types. BOOL/INT/REAL/DINT/WORD mapping must be exact.
- Configure logging: Add a tag logging database (cycle or change-driven), set archive size limits, and configure swap-out to disk. Configure WinCC/Connectivity Pack to expose archives to SQL Server.
- Configure alarms: In the HMI tags, define limit values and configure alarm classes (Warning, Fault, System). Configure the alarm logging for persistence and configure the WinCC AlarmControl on the desired screen.
- Configure WebNavigator for remote access. WebNavigator requires a per-client license and runs on the WinCC Runtime PC. Alternatively, deploy WinCC Unified for modern browser-based access.
10. Data Logging & Tag Historian
Effective historian design prevents database bloat and reduces query latency. Apply the following rules:
- Sample rate: Operator trends at 1 s, regulatory trends at 100 ms, slow utilities (level, temp) at 5-10 s.
- Storage trigger: Use "record on change with deadband" for analog tags. For a 0-100% level, set a 0.5% deadband; for a 4-20 mA pressure tag, set a deadband equal to the sensor's accuracy specification.
- Partition strategy: SQL Server partition tables by month; PostgreSQL use pg_partman or native declarative partitioning. Drop partitions older than the retention policy.
- Compression: Ignition's built-in historian stores deadband-filtered numeric values. For analog tags sampled at 1 Hz with 0.1% deadband, expect a compression ratio of 200:1 to 1000:1 over raw storage.
- Database sizing: Budget 4 bytes per FLOAT, 1 byte per BOOL, plus 16 bytes of metadata per record. For 10,000 tags at 1 s average sample and 500:1 compression, expect ~30 GB/year.
11. Alarm Management
Configure alarms in three tiers per ISA-18.2 and IEC 62682 guidance:
| Priority | Class | Acknowledgement | Notification | Examples |
|---|---|---|---|---|
| 1 (Highest) | Critical / Safety | Required, page operator | SMS + Email + Audible | E-stop, Overtemperature, Gas detection |
| 2 | Operational | Required | Email + Dashboard popup | Motor fault, Tank high-level, Communication loss |
| 3 (Lowest) | Advisory | Not required | Dashboard log only | Maintenance due, Filter change, Trend deviation |
Each alarm message must include: Tag name, Equipment ID, Description, Timestamp (UTC), Operator action. Avoid cryptic codes like F201 without the human-readable expansion.
12. Cybersecurity Hardening for Remote Access
Remote monitoring expands the attack surface. Apply defense-in-depth per IEC 62443-3-3.
12.1 Network Segmentation
Place the SCADA server in an industrial DMZ. Use a stateful firewall (Cisco ASA, Fortinet, Palo Alto, or pfSense with industrial rulesets) to enforce one-way or controlled two-way traffic. Never expose port 102 (S7), 4840 (OPC UA), or 502 (Modbus TCP) directly to the corporate network or internet.
12.2 VPN for Remote Operator Access
Use a VPN with mutual certificate authentication. WireGuard or OpenVPN with X.509 client certificates are recommended for site-to-client; IPsec with IKEv2 for site-to-site. Reject PSK-only configurations.
12.3 Firewall Rules
| Source | Destination | Port | Protocol | Action |
|---|---|---|---|---|
| SCADA Server (10.50.10.20) | S7-1200 (10.50.10.101) | 102 | TCP | Allow |
| SCADA Server | S7-1200 | 4840 | TCP | Allow (OPC UA only) |
| Engineering Station | S7-1200 | 102 | TCP | Allow (programming only) |
| Corporate LAN | SCADA Server | 443 | TCP | Allow (HTTPS Web Client) |
| Internet | Any | 102, 4840, 502 | TCP | Deny |
| Any | S7-1200 | All other | Any | Deny |
12.4 Role-Based Access Control (RBAC)
Configure three roles in the SCADA:
- Viewer: Read-only access to graphics and trends; no acknowledgement, no control.
- Operator: Acknowledge alarms, write setpoints within authorized ranges, no project editing.
- Engineer: Full project edit, download to PLC, recipe management. Restrict to on-site engineering stations.
12.5 Firmware and Patch Management
Subscribe to Siemens ProductCERT security advisories. Track current firmware with TIA Portal Online > Accessible Nodes > Firmware Version. Test firmware updates on a non-production bench before deploying. Apply Windows patches to the SCADA server monthly; test Ignition / WinCC compatibility after major OS updates.
13. Commissioning & Verification
Before going live, run the following verification checklist:
-
PLC reachability: From the SCADA server,
ping 10.50.10.101returns <10 ms with <1% packet loss. - Connection establishment: In TIA Portal Online > Online & Diagnostics, the OPC UA server or S7 connection shows "Established". In Ignition, the device shows a green status indicator with the configured poll rate.
- Tag read/write: Force a value in the SCADA, observe the change in TIA Portal's watch table. Force a value in TIA, observe the SCADA tag update within the configured poll interval (typically 250 ms to 1 s).
- Alarm round-trip: Trigger a test alarm by forcing the alarm tag. Verify (a) alarm appears in SCADA, (b) email/SMS received, (c) acknowledgement removes it from active list, (d) archive records the event with UTC timestamp.
- Historians: Wait 60 s, then query the SQL database for the test tag. Confirm a record exists.
- Network load: Monitor switch port utilization. SCADA traffic should remain <5% of link bandwidth on a 100 Mbps industrial link.
- Failover test (if redundant): Disconnect the primary SCADA server. Confirm secondary takes over within 30 s with no data loss beyond the failover window.
14. Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic Step | Remediation |
|---|---|---|---|
| SCADA shows "Not Connected" to all tags | Network unreachable or PLC CPU in STOP |
ping from SCADA server; check CPU RUN/STOP LED |
Fix IP/subnet; switch CPU to RUN via TIA Portal |
| SCADA shows "Quality: Bad" on DB tags only | PUT/GET disabled in CPU properties | Check CPU Properties > Communication > Access | Enable "Permit access with PUT/GET" and re-download project |
| OPC UA connection refused | Security policy mismatch or certificate not trusted | Check OPC UA error code in PLC diagnostic buffer | Match SecurityPolicy (None/Basic256Sha256); import SCADA cert into PLC trust store |
| Intermittent connection drops | OP connection limit exceeded | Check CPU diagnostic buffer for "no resources" entries | Reduce SCADA poll rate; upgrade CPU; migrate to OPC UA |
| Tags show stale values | Optimized block access prevents symbolic read | Verify DB block access attribute in TIA Portal | Disable "Optimized block access" or switch driver to symbolic mode |
| SCADA server CPU at 100% | Tag poll rate too aggressive or too many tags | Monitor Ignition Gateway status; check tag count | Increase poll rate to 500 ms-1 s; use subscription mode instead of polling |
| WinCC "Connection failed: HMI to PLC" | Wrong rack/slot or VLAN mismatch | Verify WinCC connection settings; check switch port | Set rack 0, slot 1 for S7-1200 CPU 1; configure trunk port for HMI VLAN |
| Alarm not delivered by email | SMTP not configured or TLS error | Check Ignition Gateway log for SMTP handshake | Verify SMTP host, port 587 with STARTTLS; allow through firewall |
| TIA Portal cannot download to CPU | CPU protection level mismatch or wrong IP | Use Online > Accessible Nodes to find CPU | Set correct password for protection level; correct IP/subnet |
| PROFINET device name conflict | Duplicate PROFINET name on network | Check CPU diagnostic buffer | Assign unique device names per PROFINET naming convention |
15. Common Error Codes Reference
| Diagnostic Buffer Code | Meaning | Resolution |
|---|---|---|
| 0x001E (30 dec) | Connection refused, no resources | Reduce OP connection count or upgrade CPU |
| 0x0138 (312 dec) | OPC UA: certificate not trusted | Import client cert into CPU trust store |
| 0x0139 (313 dec) | OPC UA: security policy mismatch | Match SecurityPolicy on SCADA and PLC |
| 0x02AE (686 dec) | S7-connection: partner unreachable | Verify network path, switch port status, IP routing |
| 0x02AF (687 dec) | S7-connection: timeout | Increase watchdog timeout; check for intermittent network |
| 0x0503 (1283 dec) | PROFINET: name conflict | Assign unique PROFINET device name |
| 0x0504 (1284 dec) | PROFINET: IP address conflict | Assign static unique IP; disable DHCP for PROFINET |
16. Best Practices Summary
- Start small: Integrate one PLC with ten tags first; verify end-to-end before scaling to the full plant.
-
Use a dedicated SCADA DB block (e.g.,
DB_ScadaInterface) so the SCADA never reaches into control logic DBs. - Document tag names, IP addresses, and PROFINET device names in a central network register spreadsheet. Update on every change.
- Disable optimized block access for any DB read by SCADA drivers that don't support symbolic read.
- Prefer OPC UA for any deployment where SCADA clients exceed two or where the SCADA server sits in a different security zone than the PLC.
- Test alarms end-to-end: Trigger, deliver, acknowledge, and verify the audit trail records the full lifecycle with UTC timestamps.
- Schedule firmware updates on a quarterly cycle; review Siemens ProductCERT advisories monthly.
Which protocol is best for S7-1200 to SCADA: PROFINET, OPC UA, or Modbus?
PROFINET (S7 communication) is fastest and simplest for single-vendor Siemens installations and is supported natively by WinCC. OPC UA is best for cross-platform SCADA like Ignition, multi-client scenarios, and any deployment requiring authentication or encryption (firmware V4.4+). Modbus TCP is a fallback for legacy SCADA and consumes more setup time per tag.
What is the minimum S7-1200 firmware for OPC UA server?
Firmware V4.4 is the minimum for OPC UA server capability. OPC UA Basic license allows up to 10 sessions with Basic128Rsa15 / Basic256 security; OPC UA Plus allows 50 sessions with Basic256Sha256. The free tier supports only 3 sessions with SecurityPolicy None.
How many SCADA clients can connect to one S7-1200 CPU?
Depends on the CPU model: CPU 1211C/1212C supports up to 5 OP connections, CPU 1214C/1215C supports 7, CPU 1217C supports 9. Each SCADA tag subscription typically uses one OP connection unless the SCADA multiplexes. For more than 9 simultaneous clients, migrate to OPC UA which uses a single session for thousands of tags.
Why does the SCADA show "Quality: Bad" on every DB tag?
The most common cause is that PUT/GET access is disabled in the CPU properties (CPU Properties > Communication > Access > Permit access with PUT/GET communication = unchecked). Enable this option, re-download the project, and the SCADA tags will recover. A secondary cause is wrong rack/slot: S7-1200 CPU 1 is always rack 0 / slot 1.
How do I secure remote SCADA access over the internet?
Place the SCADA server in an industrial DMZ, expose only HTTPS (port 443) to the corporate network, terminate remote users on a VPN with mutual certificate auth (WireGuard, OpenVPN, or IPsec IKEv2). Never forward ports 102, 4840, or 502 to the internet. Enable role-based access control on the SCADA so remote users default to Viewer-only access.
Which database should the SCADA historian use?
PostgreSQL is the recommended open-source choice for Ignition deployments due to its native partitioning, time-series performance with BRIN indexes, and zero licensing cost. SQL Server is appropriate for WinCC environments with existing Microsoft infrastructure. Both support standard ODBC/JDBC and tolerate industrial historian workloads of millions of records per day with proper partitioning and index maintenance.