---
title: "Siemens Enhanced Driver"
---
# Siemens Enhanced Driver
> :::caution Using the Siemens Enhanced Driver with Ignition 8.3.3+
> The AGLink library has been updated to support Siemens S7-1200 G2 PLCs. With this update, the Siemens Enhanced Driver module also now requires a GLIBC version of 2.34 (or newer) on x64 platforms and 2.17 for ARM platforms. This prevents the Siemens Enhanced Driver module from running on the following distros with an x64 architecture: Ubuntu 20.04, Debian 10, and Debian 11.
> :::
The Siemens Enhanced driver supports browsing, symbolic addressing, and access to optimized data blocks when S7-1200 and S7-1500 device types are selected in the connection settings. Symbolic addressing is not supported for S7-300 and S7-400 devices.
:::caution
There is a known issue for Siemens S7-1500 PLCs running versions 4.0.0 or 4.0.4 that can cause the Siemens Enhanced Driver to lose connection to the PLC. This has been resolved in version 4.1.2 of the PLC firmware. If you are running into this issue, try updating your PLC firmware.
:::
Note that the Siemens driver has a device connection limit of 250 devices.
:::note Required Symlinks
If you are installing Ignition on a clean Linux environment and you want to use secure connections when connecting to a PLC, you will need to create symlinks for your specific OpenSSL version. You can create the symlinks by installing the package `libssl-dev`, or you can manually create the symlinks with `ln`. Two symlinks are necessary. One symbolic link named `libssl.so` that links to your specific libssl library and another named `libcrypto.so` that links to your specific `libcrypto` library. Since these libraries are loaded by a native DLL, these symlinks must exist within the `LD_LIBRARY_PATH`. If you are using OpenSSL 3.0 on a 64-bit Ubuntu installation, you might create the symlinks by running:
```
:~# cd /usr/lib/x86_64-linux-gnu
:/usr/lib/x86_64-linux-gnu# ln -s libssl.so.3 libssl.so
:/usr/lib/x86_64-linux-gnu# ln -s libcrypto.so.3 libcrypto.so
```
These symlinks are provided automatically in the Docker images.
:::
## Connecting to a Device
The Siemens Enhanced Driver module requires the OPC UA module to be installed and enabled. If the OPC UA module is not installed or is disabled, this module will fault with a warning in the logs and display the state as "Faulted Missing Dependency" on the **Platform** > **System** > **Modules** page.
1. Go to the **Connections** section of the Gateway Webpage.
2. Select **Devices** > **Connections**.
3. On the Devices page, click on **Create Device Connection +**.
4. On the Select Driver form, select **Siemens Enhanced Driver** and click **Next**.
5. On the Configure Device form, leave all the default values and type in the following fields:
* Name: **S7_Symbolic**
* Hostname: Enter the IP address, for example 10.20.4.71.
6. Under **Device Settings**, select your Device Type.
* **S7-1500**
* **S7-1200**
* **S7-300**
* **S7-400**
7. Select Symbolic or Absolute for the **Address Type**.
:::note S7-300 and S7-400 Addressing
If your Device Type is either a S7-300 or S7-400, you must select Absolute as your Address Type to establish a connection.
:::
8. Click **Create Device Connection**.
The Devices page is displayed showing the Siemens device is successfully created and added to Ignition. The Status will show as Disconnected and then Connected.
## Addressing Syntax
The Siemens Enhanced driver supports two addressing types: Absolute and Symbolic. Absolute addressing accepts the same syntax as the [Siemens drivers](../siemens-drivers/siemens-drivers.md#configuring-siemens-addressing), as well as a variation that resembles the syntax used in the TIA portal, with the addition of supporting arrays. This variation is described in the [Absolute Addressing](#absolute-addressing) section. If you've connected with the Symbolic address type, refer to the [Symbolic Addressing](#symbolic-addressing) section.
### Absolute Addressing
|Data Type | Syntax Address |
|--|--|
|Numeric - Inputs, Outputs, Flags|`[ArrayDimensions]`|
|Numeric - Data Blocks|`DB.[DB][ArrayDimensions]`|
|Boolean/Bit - Inputs, Outputs, Flags|`X[.BitNumber][ArrayDimensions]`|
|Boolean/Bit - Data Blocks|`DB.[DB]X[.BitNumber][ArrayDimensions]`|
|String - Inputs, Outputs, Flags|`STRING[Length]`|
|String - Data Blocks|`DB.[DB]STRING[Length]`|
|Timer|`T`|
|Counter|`C`|
#### Manual Addressing Examples
|Address | Description |
|--|--|
| `IW0` | 16 bit unsigned integer (Word) from offset 0.|
| `QI12` | 16 bit signed integer (Int) from offset 12.|
| `MD5[2]` |Array of two 32 bit unsigned integers (DWord) from offset 5.|
| `IW0[3,2,2]` | Multidimensional array (with dimensions [3,2,2]) of Words from offset 0.|
|`DB500.DBREAL10` |32-bit floating point number from offset 10. |
|`DB400.DBDI52[4,8]` |Array with 4 rows of 8 columns of 32-bit signed integer (32 Int32 values in total) from offset 52. |
|`DB1.DBX9.7`| Bit 7 from offset 9 |
|`DB1.X8` | Bit 0 from offset 8 |
|`DB1.DBX8[8]` | Array of 8 booleans, Bit 0 from offset 8.|
| `DB500.STRING255[7]` | String of up to 7 characters from offset 255.|
| `T9` | Timer from offset 9.|
| `C4` | Counter from offset 4.|
#### Data Types
| S7 Data Type | OPC UA Data Type |
|--|--|
|BOOL |Boolean |
|BYTE |Byte |
|WORD |UInt16 |
|DWORD |UInt32 |
|LWORD |UInt64 |
|SINT |SByte |
|INT |Int16 |
|DINT |Int32 |
|LINT |Int64 |
|USINT |Byte |
|UINT |UInt16 |
|UDINT |UInt32 |
|ULINT |UInt64 |
|REAL |Float |
|LREAL |Double |
|S5TIME |UInt32 **Note**: Represents some number of milliseconds between 0 and 9990000. |
|TIME |Int32**Note**: Represents some number of milliseconds between Int32.MIN and Int32.MAX. |
|LTIME |Int64**Note**: Represents some number of nanoseconds between Int64.MIN and Int64.MAX.|
|DATE |UInt16**Note**: Represents the number of days since 01-01-1990. |
|TIME_OF_DAY (TOD) |UInt32**Note**: Represents the number of milliseconds since the beginning of the day. |
|LTOD (LTIME_OF_DAY) |UInt64**Note**: Represents the number of nanoseconds since the beginning of the day. |
|DT (DATE_AND_TIME) |DateTime|
|LDT |UInt64**Note**: Nanoseconds since epoch (01-01-1970 00:00:00.000000000). |
|DTL |N/A **Note**: Structured representation of a date and time. |
|CHAR |String |
|WCHAR|String |
|STRING |String |
|WSTRING|String |
### Symbolic Addressing
The Symbolic address type for S7-1200 and S7-1500 makes tag browsing possible in the Designer.
1. From the Designer, in the Tag Browser, click the **Add**  icon.
2. Select **New Standard Tag**, then **OPC Tag**.

3. In the Tag Editor window, you will need to enter a Name, select a Data Type, and select the **Ignition OPC-UA Server** as your OPC Server.
4. For the OPC Item Path field, select the Devices  icon to browse the OPC UA Server. Use the dropdowns to navigate to your desired tag path and click **Apply**. The OPC Item Path will now be filled.

5. Click **OK**. Now you can see your tag in the Tag Browser.
## Device Settings
### General
| Setting | Description |
|:---|:---|
| Name | The name of the Device Connection. |
| Description | A description for the Device Connection. The description will appear on the Devices page on the Gateway. |
| Enabled | Whether or not the connection is active. Disabling this setting terminates communication with the device. |
### Connectivity
| Setting | Description |
|:---|:---|
| Hostname | The hostname or IP address of the device. |
| Port | The port to use when connecting to the device. The default is 102. |
| Timeout | The maximum amount of time to wait for a response, specified in milliseconds. The default is 3,000. |
### Device Settings
| Setting | Description |
|:---|:---|
|Device Type | The type of S7 model used for this driver connection. Options include S7-300, S7-400, S7-1200, and S7-1500. |
|Address Type | The type of addressing used for this driver connection. Options include **Absolute** or **Symbolic** for S7-1200 and S7-1500 devices. S7-300 and S7-400 devices can only use **Absolute** addressing. If Symbolic is selected, an **Export PLC Symbols** option will be available in the device connection's three dots menu. |
|Rack Number | The number of the rack that the device is positioned in. The default is 0. |
|Slot Number | The slot number assigned to the CPU. The default is 0. |
### Advanced Settings
| Setting | Description |
|:---|:---|
|Optimize Writes | When enabled, tag writes will be batched. |
| Secure Connection Mode | Controls how secure connections (TLS) are handled. Options include: REQUIRED: The device will only use a secure connection.PREFERRED: The device will attempt to use a secure connection if available, but will use an unsecure connection if not.DISABLED: The device will only use unsecure connections. In versions 8.3.3 and earlier, this property was called **Force Secure Connection**. Secure Connection Mode will be automatically set if upgrading from a previous version that used Force Secure Connection. If Force Secure Connection was enabled, Secure Connection Mode will use REQUIRED.If Force Secure Connection was disabled, Secure Connection Mode will use PREFERRED. Default is PREFERRED.
|Password | The password selections available for this connection. Options include None, Embedded, and Referenced. |