Overview
The SIMATIC S7-1500 family ships with an embedded OPC UA server, but support for acting as an OPC UA client was added later in the product lifecycle. Starting with firmware V2.6 on the S7-1500 CPUs and TIA Portal V15.1 as the engineering environment, the controller can actively open sessions to remote OPC UA servers, browse their address space, read and write nodes, call methods, and subscribe to monitored items.
This capability turns the S7-1500 into a data consumer that can pull process values from a higher-level PC-based MES, third-party controller, or even another S7-1500 exposing its server interface. In a typical brownfield scenario, a PC station hosts an OPC UA server (for example, a SCADA gateway, an MES adapter, or a 3rd-party PLC), and the S7-1500 acts as the OPC UA client, exchanging data over the standard TCP/IP transport defined in IEC 62541.
This article consolidates the firmware/software prerequisites, the TIA Portal configuration flow, the available program instructions, security policy selection, certificate handling, programming examples, status code interpretation, performance limits, and a troubleshooting matrix derived from official Siemens documentation.
Evolution of OPC UA Client Support
| TIA Portal Version | Minimum S7-1500 Firmware | OPC UA Client Capability |
|---|---|---|
| V15.0 | V2.5 | Server only; no client instructions |
| V15.1 | V2.6 | Client instructions introduced |
| V16 | V2.6 / V2.7 | Client refinements and additional blocks |
| V17 | V2.9 | Extended security policy options |
| V18 | V2.9 | Performance and method-call improvements |
| V19 | V3.0 | Enhanced subscription diagnostics |
| V20 | V3.1 | Current client instruction library |
Prerequisites
- CPU: any S7-1500 standard, F (fail-safe), or T (technology) variant, plus ET 200SP CPUs and ET 200pro CPUs that expose a PROFINET interface. F-CPUs add the option to publish fail-safe tags via the server interface and consume them via the client side.
- Firmware: V2.6 or higher on the CPU. Firmware V2.6 introduces the OPC UA client instruction set; V2.9 / V3.x add additional security profiles and increased monitored-item throughput.
- TIA Portal: V15.1 or higher (V16+ recommended for long-term support and current security policies).
- STEP 7 optional package: the OPC UA client functionality is part of the standard STEP 7 Professional installer; no extra add-on is required.
-
Network reachability: the S7-1500 PROFINET interface and the OPC UA server must be on the same IP subnet (or routed) with TCP port
4840(default) reachable in both directions. -
OPC UA server endpoint URL: typically
opc.tcp://<server-ip>:4840. - Server authentication method: anonymous, username/password, or certificate-based. The credentials must be available before commissioning.
- Trust list: the OPC UA Global Discovery Server (GDS) or local certificate store on the S7-1500 CPU must trust the server certificate.
OPC UA Client Architecture in S7-1500
Inside the S7-1500 runtime, the OPC UA client is implemented as a system-internal task that runs on the communication processor of the PROFINET interface. It maintains one or more OPC UA sessions, each identified by a session handle, and exposes a set of standard program blocks to the user program. The user program does not talk to TCP/IP directly; it calls the OPC UA client instructions and the runtime performs the wire protocol handling.
Each session consumes runtime resources: connection table entries, monitored-item slots, and certificate storage. The S7-1500 OPC UA client is therefore sized, not unlimited. Use the device's Technical data tab in TIA Portal to read the exact limits for your CPU/firmware combination.
OPC UA Client Instructions
The instruction set is documented under STEP 7 > Communication > OPC UA > Client. Refer to the official reference at OPC UA instructions for client programs (S7-1500) for the definitive instruction signatures. The block families fall into the following categories:
| Category | Purpose | Notes |
|---|---|---|
| Connection management | Open, close, and supervise OPC UA sessions | Asynchronous; the FB returns a handle stored in an instance DB |
| Node handle management | Acquire and release NodeId handles | Reduces browse overhead; handles are required before read/write |
| Read / Write | Synchronous and asynchronous read/write of single or list of nodes | Use list variants for high-throughput |
| Subscription | Create, modify, and delete monitored items | Reports value changes to the PLC program via callback |
| Methods | Invoke server-side methods synchronously or asynchronously | Pass input arguments and retrieve output arguments |
| Diagnostics | Read connection status, last error, traffic counters | Used for HMI diagnostics and program-side health checks |
The number of simultaneously open sessions, the maximum monitored items per subscription, and the maximum number of subscriptions depend on the CPU model and firmware. Always confirm against the device-specific technical data sheet.
Configuring the OPC UA Client in TIA Portal
- Update the device configuration. Open the device view of the S7-1500 CPU, switch to Properties > OPC UA, and enable the OPC UA server role (still required for the local certificate store and GDS interaction).
- Enable the client role. In the same OPC UA properties tab, activate the Activate OPC UA client checkbox. Without this checkbox enabled, the OPC UA client instructions will not compile and link to the runtime.
- Define a client interface. In the project tree, right-click the CPU and choose Add new client interface. The interface contains the connection configuration: endpoint URL, security policy, security mode, transport profile, authentication mode, and the user identity token.
-
Select the security profile. Choose one of:
None(no encryption, anonymous only)
Basic128Rsa15(deprecated; avoid for new projects)
Basic256(deprecated)
Basic256Sha256(legacy interoperability)
Aes128_Sha256_RsaOaep(recommended default)
Aes256_Sha256_RsaPss(highest security; confirm server support) - Configure authentication. For username/password, store the credentials in a protected DB or a credential file referenced by the user program. For certificate-based authentication, export the CPU client certificate (DER or PEM) and install it on the server's trust list.
- Export and exchange certificates. The CPU automatically generates a self-signed OPC UA client certificate at first connection attempt. Drag the certificate into the Trusted clients folder of the server's certificate store (or use a GDS). Import the server certificate into the CPU's Trusted servers folder on the CPU's OPC UA Security page.
- Compile and download. Compile the project (Project tree → right-click → Compile → Software (rebuild all)) and download the hardware configuration to the CPU. The download activates the OPC UA client runtime.
- Generate the program blocks. Drag the OPC UA client instructions from the task card onto an OB or FB, select the client interface, and let TIA Portal generate the associated instance DBs and parameter templates.
Bad_ConfigurationError at the next call.Security Policies and Certificate Management
| Policy URI | Symmetric | Asymmetric | Hash | Recommended Use |
|---|---|---|---|---|
| None | None | None | None | Lab tests only; never on plant networks |
| Basic128Rsa15 | AES-128 CBC | RSA-15 | SHA-1 | Legacy interop; avoid |
| Basic256Sha256 | AES-256 CBC | RSA-OAEP | SHA-256 | Mixed-vendor interop |
| Aes128_Sha256_RsaOaep | AES-128 CBC | RSA-OAEP | SHA-256 | Modern default |
| Aes256_Sha256_RsaPss | AES-256 CBC | RSA-PSS | SHA-256 | Highest security |
The OPC UA specification requires that both peers trust each other's application instance certificates before a secure channel can be established. The S7-1500 stores its own client certificate and the trusted server certificates in the CPU's security memory area. Use the OPC UA Security page in the CPU's online diagnostics to inspect the trust list and to remove revoked certificates.
For production environments with frequent certificate rotation, deploy a Global Discovery Server (GDS) such as the Siemens OPC UA GDS or any compliant third-party GDS to push certificates centrally.
Programming Example: Read/Write Cycle in SCL
The following SCL snippet illustrates a typical cyclic pattern: open a session once, acquire a node handle once, read on a slow cycle (1 s), write on demand, and disconnect on shutdown. Instance DBs are generated by TIA Portal when you drop the blocks; the variable names below match the convention of the OPC UA client instructions.
// Cyclic OB (e.g., OB35, 100 ms)
IF "firstRun" THEN
"firstRun" := FALSE;
// Open session to remote OPC UA server
"dbConnect"(Req := TRUE,
ClientInterface := "OPC_UA_ClientInterface",
SessionTimeout := T#60m);
END_IF;
// Connection supervision
"dbConnectStatus"(Req := "triggerStatus",
SessionHandle := "sessionHandle",
Status => "connState",
Error => BOOL#FALSE,
ErrorID => "connErr");
// Read node list every second
IF "readClock" THEN
"dbReadList"(Req := TRUE,
SessionHandle := "sessionHandle",
NodeHandles := "nodeHandleArray",
ReadResults => "readResultArray",
Error => "readErr",
ErrorID => "readErrID");
END_IF;
// Trigger single write on rising edge of "writeTrigger"
IF "writeTrigger" AND "writeTriggerOld" = FALSE THEN
"dbWriteList"(Req := TRUE,
SessionHandle := "sessionHandle",
NodeHandles := "writeHandleArray",
WriteValues := "writeValueArray",
Error => "writeErr",
ErrorID => "writeErrID");
END_IF;
"writeTriggerOld" := "writeTrigger";
// Disconnect on CPU stop or operator request
IF "shutdownRequest" THEN
"dbDisconnect"(Req := TRUE,
SessionHandle := "sessionHandle");
END_IF;
Diagnostics and Status Codes
The OPC UA client instructions follow the OPC UA status code convention defined in IEC 62541. The two most relevant indicators at the block boundary are:
-
Status (BOOL output):
TRUE= operation in progress or successful,FALSE= not active or completed with error. - ErrorID (DWORD output): a numeric identifier that combines the OPC Foundation StatusCode with Siemens-specific extensions. A non-zero value indicates a fault.
Common high-level conditions reported via the diagnostics block:
| Condition | Typical ErrorID Pattern | Root Cause | Recommended Action |
|---|---|---|---|
| Connection refused (TCP) | 0x80000000 / 0x80050000 | Wrong IP/port or firewall blocking 4840 | Verify port reachability with telnet or curl |
| Bad security policy rejected | 0x80210000 | Server does not accept the configured policy | Reduce or change policy |
| Bad certificate untrusted | 0x801A0000 | Server cert not in CPU trust list or vice versa | Exchange and trust certificates on both sides |
| Bad user access denied | 0x801F0000 | Wrong username/password or denied by ACL | Verify credentials and server-side ACL |
| Bad node unknown | 0x80340000 | NodeId does not exist on the server | Browse server again and correct the NodeId |
| Bad timeout | 0x800A0000 | Server response > configured timeout | Increase timeout or reduce server load |
| Subscription keep-alive lost | 0x802F0000 | Network blip or server restart | Recreate the subscription automatically |
For runtime visibility without disturbing the user program, use the CPU's built-in web server under Diagnostics > OPC UA or expose the diagnostics DB to an HMI via standard tag interface.
Performance Limits and Resource Consumption
| Parameter | Typical Range (firmware-dependent) | Effect of Exceeding |
|---|---|---|
| Concurrent sessions | 2 to 16 | Additional OPC_UA_Connect calls return Bad_ResourceUnavailable
|
| Monitored items per subscription | 100 to 2000 | Excess items not created; status reports per-item error |
| Subscriptions per session | 1 to 8 | Further subscriptions rejected |
| Publish interval minimum | 100 ms (firmware V2.9+) ; 250 ms (V2.6/V2.7) | Server may drop fast intervals |
| Sampling interval minimum | 50 ms | Lower intervals throttled or rejected |
| ReadList payload | limited by OPC UA max message size (default 2 MB) | Truncate lists; split into multiple ReadList calls |
CPU load rises roughly linearly with the number of monitored items and inversely with the publish interval. For high-frequency data, prefer subscriptions with larger publish intervals (e.g., 500 ms) and accept modest latency, or use a server-side aggregation strategy.
Verification and Commissioning Checklist
- Online diagnostics: connect to the CPU online and open Diagnostics > OPC UA > Server. Confirm that the client role shows Active.
-
Watch table: add the session handle, status bits, and ErrorID to a watch table. Force the connection block and verify that
Statustransitions toTRUE. - TIA Portal trace: record the OPC UA client instructions in the trace to capture the sequence of calls, response times, and any error bursts.
- Server-side log: enable verbose OPC UA stack logging on the server (e.g., Siemens OPC UA Server, Kepware, or Prosys) and correlate the session ID with the CPU's diagnostics page.
- Read/write round-trip test: write a known value to a server node and confirm that the same value arrives in the corresponding read result within the configured timeout. Do this for every monitored item at least once during commissioning.
- Subscription storm test: temporarily force a process variable with rapid changes and confirm that the queue overflow handling behaves as configured (DiscardOldest vs. DiscardNewest).
- Certificate audit: export the trust list and verify that only the intended certificates are present. Remove test or expired entries.
-
Security policy audit: confirm that the negotiated policy matches the project's minimum requirement. Disable
Noneon production systems. -
Failure-mode test: disconnect the network cable and verify that the client reports
Bad_CommunicationErrorwithin the configured timeout rather than freezing.
Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic Step | Remediation |
|---|---|---|---|
| Compile error: "OPC UA client not enabled" | OPC UA client role not activated in CPU properties | Device view → Properties → OPC UA → enable client | Enable, recompile, redownload |
| Connection FB never returns Done | Endpoint URL malformed or DNS unresolved | Check IP connectivity from a PC using the same URL via UaExpert | Correct the URL; use IP literal if DNS is unavailable |
| Bad_CertificateUntrusted | Certificates not exchanged | Inspect OPC UA Security → Trusted servers | Import server cert; trust client cert on server |
| Bad_SecurityPolicyRejected | Policy mismatch | Browse server endpoints with UaExpert and list all supported policies | Select a policy the server accepts |
| Bad_UserAccessDenied | Credentials wrong or ACL blocks user | Test login with UaExpert using same credentials | Correct credentials; add user to server-side ACL |
| Read returns Bad_NodeIdUnknown | NodeId deleted on server | Browse server again | Update NodeId in the handle DB |
| Subscription stops after a few minutes | Server has session timeout shorter than keep-alive | Check server sessionTimeout setting | Increase server sessionTimeout or send keep-alive from PLC |
| High CPU scan time | Too many monitored items or too short intervals | Trace cycle time vs. item count | Raise publish interval; reduce item count; aggregate on server |
| Values stale after network recovery | Subscription not recreated | Inspect subscription error status | Add automatic reconnect logic in user program |
| TIA Portal hangs when opening OPC UA properties | TIA Portal version mismatch with firmware | Compare TIA Portal version against firmware compatibility list | Upgrade TIA Portal or downgrade firmware |
Alternative OPC UA Client Implementations
When the S7-1500 firmware predates V2.6, or when the application requires features beyond the built-in instruction set (for example, complex redundancy, batch operations, or historical access), engineers commonly deploy one of the following alternatives:
- PC-based OPC UA client in .NET: a Windows service or containerized application using the OPC Foundation .NET Standard stack reads and writes the S7-1500 server interface (or any other OPC UA server) and bridges the data into the S7-1500 via the existing S7 communication path. This was the official Siemens recommendation before the firmware V2.6 release and remains the highest-throughput option.
- OPC UA Companion Specification clients: for machinery that publishes Companion Specification models (for example, EUROMAP, ADI, or Weihenstephan Standards), a wrapper around the S7-1500 client instructions can map NodeIds into PLC DBs by walking the published model.
- Third-party OPC UA client middleware: products such as TOP Server provide an S7-1500 driver that exposes both server and client roles from a PC. The S7-1500 then exchanges data with the PC through its native S7 protocol rather than OPC UA, which can be more deterministic on legacy projects.
- Edge gateway: a small industrial edge device (for example, an IoT gateway) acts as the OPC UA client and pushes the data into the S7-1500 via PUT/GET or via the OPC UA server interface of the S7-1500.
For projects that must remain entirely inside the PLC, prefer the firmware V2.6+ client instructions. For projects that already include a PC station or an edge gateway, the PC-based client reduces the load on the S7-1500 and simplifies certificate management.
FAQ
What is the minimum firmware on the S7-1500 CPU to run an OPC UA client?
Firmware V2.6 is the minimum. Earlier firmware (V2.5 and below) supports only the OPC UA server role. Firmware V2.9 and V3.x extend security policy options and increase monitored-item throughput.
Which TIA Portal version first introduced OPC UA client instructions for the S7-1500?
TIA Portal V15.1 was the first version to expose OPC UA client instructions. V16 and later versions refined the instruction library and added new diagnostics. The current online help is published for V20.
Does the OPC UA client on the S7-1500 require an additional license?
No. The OPC UA client functionality is part of the standard runtime on the S7-1500 CPU firmware V2.6+. It is enabled by a checkbox in the CPU's OPC UA properties and does not consume a separate license count on top of the OPC UA server entitlement.
How many OPC UA sessions can a single S7-1500 open simultaneously?
The exact limit depends on the CPU model and firmware version; typical values range from 2 to 16 concurrent sessions. Always consult the device-specific technical data sheet that TIA Portal shows under Properties → General → Technical data.
Which security policy should I choose for a new project?
Select Aes128_Sha256_RsaOaep as the default. Move to Aes256_Sha256_RsaPss only when the OPC UA server explicitly supports it. Avoid None, Basic128Rsa15, and Basic256 on production networks.
Where can I download the official Siemens sample project for the S7-1500 OPC UA client?
Refer to the Siemens Industry Online Support entry S7 user block for the OPC UA client of a SIMATIC S7-1500 for ready-made function blocks and example projects that demonstrate session management, read/write, and subscription handling.