Configure the Siemens S7 Plus Connector
Configure Siemens S7 Plus instances and symbolic items, discover PLC variables, use arrays and UDTs, and troubleshoot S7CommPlus communication.
The Siemens S7 Plus Connector reads and writes symbolic variables in Siemens S7-1200 and S7-1500 PLCs. Use it for optimized data blocks, symbolic tag paths, arrays, user-defined types, and direct input, output, or marker access.
This guide explains instance configuration, item discovery, symbolic and direct addressing, supported data types, array and UDT handling, and troubleshooting.
Use the Siemens S7 Connector instead when you need absolute addressing for S7-300, S7-400, S7-1200, or S7-1500 controllers.
Prerequisites
- Install the Siemens S7 Plus Connector.
- Use a Siemens S7-1200 or S7-1500 PLC that supports S7CommPlus communication.
- Connect SIA Connect and the PLC to networks where they can reach each other.
- Allow ISO-on-TCP communication on TCP port
102. - Download the current PLC program and place the PLC in the required operating state.
- Configure PLC users, passwords, and access rights when authentication is enabled.
- Identify the exact symbolic paths and data types when creating items manually.
Only configure write access for variables that are safe to change. A write can affect PLC logic and connected equipment.
Configure a Siemens S7 Plus instance
- Open Workspace > Instances.
- Create an instance and select the Siemens S7 Plus Connector.
- Enter a clear instance name.
- Enter the PLC IP address or hostname in Address.
- Enter the PLC Username and Password when authentication is required.
- Set the connection Timeout.
- Create the instance.
The Connector communicates on TCP port 102. The port cannot be changed in the instance parameters.
Instance parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
| Address | Yes | None | IP address or resolvable hostname of the PLC. |
| Username | When required by the PLC | Empty | PLC username used by newer authentication configurations. |
| Password | When required by the PLC | Empty | Password used for PLC authentication. |
| Timeout | Yes |
5000 ms |
Maximum time allowed for connection and communication operations. Enter a positive value in milliseconds. |
The Connector attempts a secure S7CommPlus connection first. It can automatically try a compatible legacy S7CommPlus connection when the PLC rejects TLS initialization.
Discover items
The Siemens S7 Plus Connector supports item discovery on an existing instance. It does not support instance discovery.
- Open the Siemens S7 Plus instance.
- Start item discovery.
- Wait while the Connector connects to the PLC and browses its symbols.
- Review the discovered candidates and warnings.
- Select the required candidates.
- Import the selected items.
Discovery uses the instance Address, Username, Password, and Timeout. It imports supported scalar leaf symbols and assigns their detected data types.
Discovery does not import complete array roots or complete STRUCT and UDT roots. Supported scalar members inside structures can appear as individual candidates. Unsupported data types are skipped and reported in the discovery warnings.
Discovered items are configured for read and write access. Confirm the PLC permissions and the intended item direction before using a discovered item as a mapping receiver.
Configure an item manually
- Open the Siemens S7 Plus instance.
- Create an item.
- Enter a clear item name.
- Enter the PLC tag path or direct memory address in Symbol.
- Select the matching Type.
- Configure the item's access and polling settings as required.
- Create the item.
The selected Type must match the PLC variable or array element type. A mismatch can cause incorrect values, failed writes, or skipped operations.
Item parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
| Symbol | Yes | None | Symbolic PLC path, array element, UDT member, or direct I, Q, or M address. |
| Type | Yes | REAL | Siemens data type used to format reads and convert writes. |
Address symbolic variables
Use the data block and variable names exactly as defined in TIA Portal.
| Purpose | Symbol example |
|---|---|
| Data block variable | Data_block_1.Counter |
| Nested structure member | Data_block_1.Motor.Speed |
| Array root | DB_Arrays.IntArray |
| Array element | DB_Arrays.IntArray[3] |
| Member inside a UDT array element | DB_Process.Motors[2].Speed |
Quoted and unquoted names are accepted. For example, "DB_Arrays"."IntArray" and DB_Arrays.IntArray refer to the same symbolic path.
Use direct input, output, and marker addresses
| Address type | Examples |
|---|---|
| Input bit |
I0.0, I1.7
|
| Output bit |
Q0.0, Q2.3
|
| Marker bit | M10.2 |
| Input byte, word, double word, or long word |
IB0, IW2, ID4, IL8
|
| Output byte, word, double word, or long word |
QB0, QW2, QD4, QL8
|
| Marker byte, word, double word, or long word |
MB0, MW10, MD20, ML24
|
- An optional percent prefix is accepted. For example,
%MW10is treated asMW10. -
I0,Q0, andM0use byte access when no size letter or bit number is provided. - Analog forms such as
AIW0andAQW0are not supported. - PLC input memory is normally read-only. The PLC will usually reject writes to an
Iaddress.
Supported data types
| Type | Size | Value |
|---|---|---|
| BOOL | 1 bit |
0 or 1
|
| BYTE | 1 byte |
0 to 255
|
| WORD | 2 bytes |
0 to 65535
|
| DWORD | 4 bytes |
0 to 4294967295
|
| LWORD | 8 bytes |
0 to 18446744073709551615
|
| SINT | 1 byte |
-128 to 127
|
| USINT | 1 byte |
0 to 255
|
| INT | 2 bytes |
-32768 to 32767
|
| UINT | 2 bytes |
0 to 65535
|
| DINT | 4 bytes |
-2147483648 to 2147483647
|
| UDINT | 4 bytes |
0 to 4294967295
|
| LINT | 8 bytes |
-9223372036854775808 to 9223372036854775807
|
| ULINT | 8 bytes |
0 to 18446744073709551615
|
| REAL | 4 bytes | 32-bit floating-point value |
| LREAL | 8 bytes | 64-bit floating-point value |
| STRING | Variable | Single-byte Siemens string |
| WSTRING | Variable | Wide-character Siemens string |
For BOOL writes, 0 and false are written as false. 1 and true are written as true. Any other non-empty value is also treated as true.
Read and write arrays
Read a complete array
Use the array root symbol without an index. The value is returned as a compact JSON array.
Example: DB_Arrays.IntArray can return [0,1,2,3,4].
BOOL arrays are returned as numeric values, such as [1,0,1,0].
Read or write one element
Add the PLC array index to the symbol. For example, DB_Arrays.IntArray[4] reads or writes only element 4.
The Connector respects arrays whose lower bound is not zero. An array declared as Array[1..10] accepts indexes from 1 to 10.
Write a complete array
Use the array root symbol and write a valid JSON array, such as [10,20,30,40]. The Connector expands the value into indexed writes starting from the PLC array's lower bound.
- The JSON array must contain at least one element.
- The number of supplied elements cannot exceed the PLC array length.
- The configured Type must match the PLC array element type.
- Full and indexed writes to STRING and WSTRING arrays are not supported.
- Indexed writes to multidimensional arrays are not supported.
Read and write UDTs and structures
| Operation | Example | Behavior |
|---|---|---|
| Read or write a member | DB_Process.Motor.Speed |
Uses the member's normal scalar Type. |
| Read a complete UDT or STRUCT | DB_Process.Motor |
Returns a compact JSON object. |
| Write a complete UDT or STRUCT | {"Running":1,"Setpoint":12.5,"Mode":2} |
Expands the JSON object into writes for supported child fields. |
| Read or write a scalar member inside a UDT array element | DB_Process.Motors[2].Speed |
Targets the selected element and member. |
Complete UDT writes support primitive scalar fields and primitive arrays. Missing or unknown JSON fields are ignored, which allows partial object updates. For example, {"Setpoint":33} updates only the matching Setpoint field.
BOOL fields in returned UDT JSON use 0 and 1.
Writing a complete element of a UDT array is not supported. Writing an indexed array member inside a UDT array element, such as DB_Process.Motors[2].Values[1], is also not supported.
Verify communication
- Enable the Siemens S7 Plus instance and its items.
- Confirm that the instance has no connection or authentication error.
- Confirm that scalar item values match the corresponding PLC variables.
- Check array and UDT values for valid JSON formatting.
- For a writable variable, perform a controlled write only when it is safe.
- Confirm the value in TIA Portal and verify that the item reads back the expected result.
Troubleshoot the Siemens S7 Plus Connector
| Issue or message | Cause | Action |
|---|---|---|
Failed to connect to PLC or TCP connection failed
|
The PLC address cannot be reached or TCP port 102 is unavailable. |
Confirm the Address, PLC power, network configuration, routing, and firewall. Test the PLC address with the Ping tool. |
ISO-on-TCP connection failed |
The TCP connection opened, but the ISO-on-TCP session was rejected or interrupted. | Confirm that the target is a supported S7-1200 or S7-1500 and that port 102 is not being redirected or filtered. |
TLS handshake failed or SSL certificate error
|
The PLC and Connector could not establish the secure S7CommPlus session. | Check the PLC firmware, security configuration, date and time, and network path. Update the PLC or Connector when required. |
Authentication failed or Legitimation rejected by PLC...
|
The username, password, or PLC access rights are incorrect. | Confirm the credentials and the assigned PLC role. Leave Username empty when the PLC uses password-only authentication. |
PLC requires legacy (non-TLS, symmetric-key) S7CommPlus mode |
The PLC rejected TLS initialization and requires its legacy security profile. | Confirm that the current Connector package is installed. Retry after restarting the instance. Update the PLC security configuration when legacy access remains unavailable. |
Legacy auth helper is not configured or a legacy authentication failure |
The required legacy authentication component is missing or could not complete authentication. | Reinstall or update the Siemens S7 Plus Connector. Confirm the PLC security configuration and credentials. |
Failed to resolve symbol: ... |
The symbolic path does not match a variable returned by the PLC browser. | Copy the exact data block and variable names from TIA Portal. Check spelling, nesting, quotation marks, and array indexes. |
Invalid tag configuration |
Symbol is empty, Type is invalid, or the array-index syntax cannot be parsed. | Enter a valid Symbol and select a supported Type. Use one numeric index inside square brackets. |
Symbol is not an array |
An index was added to a scalar variable. | Remove the index or select the correct PLC array symbol. |
Array index ... out of range (bounds ...) |
The selected index is outside the PLC array bounds. | Use an index within the bounds defined in TIA Portal, including any non-zero lower bound. |
Read error: failed to extract indexed struct member |
The Connector could not extract the requested member from the selected UDT array element. | Confirm the array index, member path, UDT definition, and selected Type. Try the member as a separately exposed PLC variable when necessary. |
Read failed: ..., Write failed: ..., or a hexadecimal read error |
The PLC returned a connection, permission, address, or data-type error. | Review the complete error and Connector logs. Confirm the PLC state, access rights, Symbol, Type, and value format. |
PLC browse failed with error ... |
Item discovery connected but could not browse the PLC symbol table. | Confirm credentials, PLC access rights, Timeout, and the availability of symbols in the downloaded PLC program. |
Browse completed, but no importable leaf symbols were found... |
The browse returned only arrays, structures, or unsupported symbols. | Create supported array roots, UDT roots, or members manually. Confirm that scalar variables use supported data types. |
| A write has no effect and no item error remains | The Connector can skip unsupported array, structure, or value conversions and record the reason in the Connector logs. | Review the logs. Confirm valid JSON, matching Type, supported array dimensions, supported member access, and a value within the data-type range. |
| A complete REAL array contains repeated values | The current Connector source duplicates each REAL element during JSON serialization. | Create one indexed item per required REAL element until the Connector is corrected. |