Resolving SIOME LocalizedText Error on S7-1200 OPC UA Server

David Krause10 min read
S7-1200SiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Problem Statement

When a Companion Specific OPC UA server interface is generated with the Siemens OPC UA Modeling Editor (SIOME) version 2.8.7 and imported into a SIMATIC S7-1200 CPU 1215C running TIA Portal V18 Update 4, the resulting OPC UA server interface fails to load the LocalizedText node type. The TIA Portal OPC UA server interface editor renders the affected nodes with a red error indicator in the Node type column, while every other node displays its expected data type (Int32, Boolean, String, DateTime, etc.). The same SIOME-generated XML imported into an S7-1500 CPU (e.g. 6ES7511-1CK02-0AB0 / S7-1511C-1 PN) produces a fully populated, error-free interface.

This article documents the affected firmware versions, the diagnostic procedure used to reproduce the fault, the architectural reason the S7-1200 OPC UA server handles LocalizedText differently than the S7-1500, and the engineering workarounds that restore a usable companion specification on the S7-1200 platform.

Affected Hardware and Software Environment

Component Variant Tested Result with SIOME XML
CPU SIMATIC S7-1215C DC/DC/DC (6ES7215-1AG40-0XB0) LocalizedText node red
Firmware (CPU 1215C) V4.5.0 Fault reproduced
Firmware (CPU 1215C) V4.6.0 Fault reproduced
Firmware (CPU 1215C) V4.7.0 (with TIA V20) Fault reproduced
CPU (reference, working) SIMATIC S7-1511C-1 PN (6ES7511-1CK02-0AB0) OK – all nodes load
Firmware (S7-1511C-1 PN) V2.9.0 OK
TIA Portal V18 Update 4 Reproduces the error
TIA Portal V20 Reproduces the error on 1215C
SIOME V2.8.7 Generates XML with LocalizedText nodes

The fault is independent of the firmware line tested on the 1215C; both the V4.5, V4.6 and V4.7 firmware tracks show the same red indicator on the LocalizedText row, which confirms that the issue is not a regression in a single firmware release but a structural limitation in how the S7-1200 OPC UA server stack accepts companion-specific extensions.

Symptoms and Visual Indicators

After importing the SIOME XML in Devices & Networks > CPU > Properties > OPC UA > Server interface the engineer observes:

  • One or more rows in the interface table are flagged with a red square in the Node type column.
  • The Name, Access and Value columns of the same row remain populated; the binding to a PLC tag is preserved.
  • A download to the S7-1200 CPU completes, but the OPC UA client (e.g. UaExpert) cannot subscribe to the affected nodes – the nodes are simply missing from the server address space.
  • Diagnostics in the S7-1200 web server under Diagnostics > OPC UA show a partial server address space and a warning that one or more companion nodes could not be instantiated.

The S7-1500 reference build, compiled with the identical XML, populates the same rows with a green status and the data type LocalizedText (OPC UA built-in type 21), so the XML itself is well-formed.

Root Cause Analysis

The S7-1200 OPC UA server implements a deliberately reduced subset of the OPC UA specification. The S7-1200 server is intended for straightforward tag exposure and small companion specifications. The runtime OPC UA stack on the S7-1200 accepts the basic built-in data types (Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double, String, DateTime, Guid, ByteString, NodeId, ExpandedNodeId, StatusCode, QualifiedName and LocalizedText) only when the corresponding node is added through the TIA Portal server interface editor as a typed variable of a SIMATIC data structure.

When SIOME is used to author a companion specification, the generated XML uses the OPC UA UA_TYPES.LOCALIZEDTEXT identifier and embeds the locale strings directly. The S7-1200 OPC UA server runtime accepts LocalizedText on the address-space level (a description, for example, is a LocalizedText), but it does not expose a public, configurable LocalizedText variable in the same way the S7-1500 does. The S7-1200 server has no internal buffer for the locale and text pair that a user-defined tag would require; the type is consumed only by the system, not by user variables.

The TIA Portal server-interface compiler detects this and marks the node with the red status – the import is syntactically correct but semantically incompatible with the S7-1200 server profile. The S7-1500 implements the full built-in type table in the runtime OPC UA server; the S7-1200 implements a reduced profile that excludes LocalizedText as a public variable data type.

ByteString, the other data type mentioned in the related TIA Portal documentation, is handled in a different manner: it is a permitted built-in type on the S7-1200 but it must be declared through a SIMATIC data structure of type Array of Byte or a derived ByteString UDT that the interface editor converts to OPC UA ByteString (built-in type 15). LocalizedText has no such SIMATIC counterpart, so it cannot be coerced.

Verification and Diagnostic Procedure

  1. Open the project in TIA Portal and select the S7-1200 CPU.
  2. Navigate to Properties > OPC UA > Server and confirm the OPC UA server is enabled. Note the server port (default 4840) and the security policy.
  3. Open Properties > OPC UA > Server interface; the table lists every node produced by the imported SIOME XML.
  4. Identify the row(s) marked with a red square in the Node type column. Hover the mouse over the cell to display the tooltip – it will read Data type not supported by the S7-1200 OPC UA server.
  5. Open the SIOME XML file in a text editor and locate the affected <UAObject> or <UAVariable> node. The DataType attribute will be i=21 (the OPC UA namespace-0 node id of LocalizedText).
  6. Cross-check by importing the same XML into an S7-1500 CPU in a parallel project. If the S7-1500 interface loads without red marks, the issue is confirmed as an S7-1200 platform limitation rather than a defect in the XML.
  7. Compile both projects and download. Use an OPC UA client (UaExpert, Prosys OPC UA Browser) to confirm the address space difference: nodes are present on the S7-1500 and absent on the S7-1200.

Workarounds and Solutions

There is no firmware update that adds full LocalizedText user-variable support to the S7-1200 OPC UA server. The fix is to redesign the companion specification so that the affected variables are exposed with a supported data type. Apply the following options in order of preference.

Option 1 – Replace LocalizedText with String

In SIOME, change the data type of the affected variables from LocalizedText to String. The OPC UA client then receives a UTF-8 text. If locale-specific rendering is required, encode the locale as a prefix (e.g. en-US:Pump running) and let the client split the value. This is the most widely deployed approach on S7-1200 sites.

Option 2 – Split into two String variables

For each LocalizedText create two String variables in SIOME, one for the locale tag (e.g. en-US, de-DE) and one for the actual text. A wrapper block in the PLC maintains the consistency. This is the cleanest semantic match for multi-lingual deployments.

Option 3 – Use an S7-1500 as the OPC UA front-end

When the project is a multi-CPU architecture, route the data through an S7-1500 that exposes the LocalizedText variables natively, and use the S7-1200 purely as a controller. The S7-1200 exchanges data with the S7-1500 over PUT/GET, S7 communication, or PN/PN coupler.

Option 4 – Expose LocalizedText as a description

Keep the SIOME variable as a supported type (e.g. String) and place the human-readable label into the OPC UA Description field of the node. The S7-1200 server supports LocalizedText in the Description attribute of every node; the label is therefore visible to the client in the standard browse dialog without consuming a public variable slot.

Validated Configuration Matrix

Workaround Eng. effort Client compatibility Recommended for
String substitution Low All OPC UA clients Single-locale sites, retrofits
Locale + text split Medium All OPC UA clients, custom parsing Multi-lingual HMI/SCADA
Route via S7-1500 High Native LocalizedText New greenfield plants
Description attribute Very low Browse/inspector UIs only Static labels, diagnostics

OPC UA Data Type Support on S7-1200

The S7-1200 OPC UA server implements the built-in OPC UA data types listed below as public variable data types (i.e. they can be assigned to a user-exposed tag in the server interface).

OPC UA built-in id Data type S7-1200 supported? How to declare in TIA
i=1 Boolean Yes BOOL tag or DB element
i=2 SByte Yes CHAR (USINT)
i=3 Byte Yes BYTE / USINT
i=4 Int16 Yes INT
i=5 UInt16 Yes UINT / WORD
i=6 Int32 Yes DINT
i=7 UInt32 Yes UDINT / DWORD
i=8 Int64 Yes LINT
i=9 UInt64 Yes ULINT / LWORD
i=10 Float Yes REAL
i=11 Double Yes LREAL
i=12 String Yes WSTRING / STRING
i=13 DateTime Yes DTL / DATE_AND_TIME
i=14 Guid Yes (limited) 16-byte array
i=15 ByteString Yes (as Array of Byte) Array of BYTE via UDT
i=16 XmlElement No (system only) n/a
i=17 NodeId No (system only) n/a
i=18 ExpandedNodeId No (system only) n/a
i=19 StatusCode No (system only) n/a
i=20 QualifiedName No (system only) n/a
i=21 LocalizedText Description only Use as Description attribute, not as a public variable
i=22..25 DiagnosticInfo, etc. No (system only) n/a

The exact mechanism used by the TIA Portal server-interface editor to translate a SIMATIC data structure of type Array of Byte into an OPC UA ByteString (and the corresponding limitation for LocalizedText) is described in the official TIA Portal documentation in the section LocalizedText and ByteString data types: LocalizedText and ByteString data types – TIA Portal documentation.

Best Practices for SIOME Companion Specifications on S7-1200

  1. Author the model in SIOME 2.8.7 (or later) using only the data types listed as supported in the table above. Treat LocalizedText as a system-only type.
  2. Maintain a parallel version of the same companion specification for S7-1500 where the native LocalizedText can be retained. This allows the same conceptual model to be deployed on either platform.
  3. Keep the total number of OPC UA variables on the S7-1200 within the platform limit (≤ 2 000 server-interface entries, ≤ 1 000 monitored items, ≤ 100 concurrent subscriptions – verify in the CPU's OPC UA server properties sheet for the exact value of the installed firmware).
  4. Always compile the project before downloading – the TIA Portal compiler emits the red error during compile, before runtime, which makes the issue easier to catch at engineering time.
  5. After downloading, validate the live address space with UaExpert and compare it against the SIOME model. A missing node indicates a data-type incompatibility rather than a network or security issue.
  6. Document the data-type substitution in the project FDS (Functional Design Specification) so the SCADA team knows that a String variable carries a previously LocalizedText value.

Verification After the Workaround Is Applied

  1. Open the modified SIOME project, regenerate the XML and re-import it into the S7-1200 server interface.
  2. Compile the TIA Portal project. No red squares should remain in the Node type column.
  3. Download the project to the S7-1215C and power-cycle (or perform an OPC UA server restart from the web server) so the address space is rebuilt.
  4. Connect UaExpert to opc.tcp://<CPU-IP>:4840, accept the certificate and browse the address space. The previously missing nodes must now be present with the substituted type.
  5. Subscribe to the variables and verify the value updates correspond to the PLC tags in the watch table.

Frequently Asked Questions

Why does the same SIOME XML load on the S7-1500 but fail on the S7-1215C?

The S7-1500 OPC UA server implements the full OPC UA built-in type table and exposes LocalizedText (built-in id 21) as a public, user-configurable variable data type. The S7-1200 server implements a reduced profile where LocalizedText is reserved for system use (browse names, descriptions) and is not available as a public variable. TIA Portal flags the unsupported usage with a red indicator in the server-interface table.

Is there a firmware update that adds LocalizedText user-variable support to the S7-1200?

No. The limitation is documented in the S7-1200 OPC UA server profile; the data type is not exposed as a public variable in firmware V4.5, V4.6 or V4.7. Use a supported data type such as String or move the data to an S7-1500 OPC UA front-end.

Can I use ByteString on the S7-1200 the same way I use it on the S7-1500?

Partially. The S7-1200 accepts ByteString as a public variable, but only when the underlying SIMATIC data is an Array of Byte declared inside a UDT and exposed through the TIA Portal server-interface editor. Direct embedding of a raw OPC UA ByteString tag in SIOME without the matching SIMATIC structure is not supported.

How do I keep multi-lingual labels visible to the OPC UA client without a LocalizedText variable?

Move the label to the OPC UA Description attribute of the node. The S7-1200 server renders Description as a LocalizedText that any OPC UA client can read through the standard Read service on the Description attribute – no public variable slot is consumed.

What SIOME and TIA Portal versions are confirmed affected?

The fault was reproduced with SIOME V2.8.7, TIA Portal V18 Update 4 and TIA Portal V20 on a CPU 1215C DC/DC/DC with firmware V4.5.0, V4.6.0 and V4.7.0. A reference S7-1511C-1 PN with firmware V2.9.0 imported the same XML without errors.

Back to blog