---
title: Heidenhain 530 Ethernet
slug: manufacturing-connect-edge/quickstart-guide/industrial-systems-connection-guide/heidenhain/heidenhain-530-ethernet
description: Review the following information for setting up and configuring the Heidenhain 530 Ethernet driver.
createdAt: 2026-10-29T20:51:09.616Z
---

Review the following information for setting up and configuring the Heidenhain 530 Ethernet driver. The driver connects to the control as an LSV/2 client over TCP. It reads and writes PLC memory, and reads run information, machine parameters, tool table entries, and control files.

:::hint{type="info"}
**Note:** This driver is experimental. Some features might not work as expected.
:::

# Manufacturing Connect Edge compatible series

| Compatibility parameter      | Compatible items                                                                                                      |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Driver type**              | Ethernet                                                                                                              |
| **Validated devices/series** | [Heidenhain iTNC 530](https://content.heidenhain.de/doku/tnc_guide/pdf_files/iTNC530/34049x-05/zyklen/670_388-20.pdf) |

To set up and configure this device in Manufacturing Connect Edge (LE), do the following:

- Step 1: Set up and configure the PLC device
- Step 2: Set up the PLC device in Manufacturing Connect Edge DeviceHub
- Step 3: Configure the list of registers

# Step 1: Set up and configure the PLC device

If the device is configured for Ethernet access, find its network parameters. Otherwise, use PLC software on your computer to configure the device for Ethernet access.

The control must have the LSV/2 (DNC) option enabled and must be reachable on the LSV/2 port, `19000` by default. The driver uses one LSV/2 connection for each device.

# Step 2: Set up the PLC device in Manufacturing Connect Edge DeviceHub

Configure the following parameters when you [Connect a Device](docId\:sLbBOxOe2YnmEJcIo9pbn) with this driver. Update default values to the specific setup of your device.

| Parameter          | Value                                                                                                    |
| ------------------ | -------------------------------------------------------------------------------------------------------- |
| **Type**           | Heidenhain                                                                                               |
| **Driver**         | Heidenhain 530 Ethernet                                                                                  |
| **NetworkAddress** | The IP address of the control you defined in Step 1. Default value `192.168.0.1`                         |
| **NetworkPort**    | The LSV/2 port of the control. This must match the port configured on the control. Default value `19000` |

The following parameter is under **Advanced Parameters**.

| Parameter       | Value                                                                                                                 |
| --------------- | --------------------------------------------------------------------------------------------------------------------- |
| **ReadTimeout** | How long the driver waits for a response, in milliseconds. Enter a value from `1000` to `60000`. Default value `2000` |

For the **Meta Data**, **Status Register**, and **Optional Settings** options, see [Connect a Device](docId\:sLbBOxOe2YnmEJcIo9pbn).

# Step 3: Configure the list of registers

When you [Add Tags](docId\:QHi0cRdt0A6Ba-q7WixFw) to the connected device, see the following register table and tag parameters. This driver does not support browsing tags.

See the following additional resources if necessary:

- [Organize Device and Tag Data by Using Metadata](docId\:NeHejQ2TZs90jfOsEZhO7)
- [Tag Formula Variables](docId\:mIX8d-3i6Wrs0He3QX9r0)

:::hint{type="info"}
**Note:** The `W` (PLC Word memory) register replaces the `PLC` register from the Gen 1.3 driver. To read the Gen 1.3 value types, use `uint8` for `byte`, `uint16` for `word`, and `uint32` for `dword`. The `W` register also supports other value types.
:::

## Register table

The registers fall into two groups:

- **PLC memory** (`M`, `W`, `I`, `O`, and `T`): the address is a 0-based byte offset in the memory area.
- **Control data** (all other registers): each register returns one object, published as JSON. The address is ignored, except for `IJHTool`, where the address is the tool number.

| **Name**                      | **Value Types**                                                                                                             | **Access Type** | **Address Format** | **Min Address** | **Max Address** |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------- | ------------------ | --------------- | --------------- |
| M                             | bool, bool\[]                                                                                                               | R/W             | DDDDDD             | 0               | 999999          |
| W                             | int8, uint8, int16, uint16, int32, uint32, float64, int8\[], uint8\[], int16\[], uint16\[], int32\[], uint32\[], float64\[] | R/W             | DDDDDD             | 0               | 999999          |
| I                             | bool, bool\[]                                                                                                               | R/O             | DDDDDD             | 0               | 999999          |
| O                             | bool, bool\[]                                                                                                               | R/O             | DDDDDD             | 0               | 999999          |
| T                             | uint32, uint32\[]                                                                                                           | R/O             | DDDDDD             | 0               | 999999          |
| DNC\_EXEC\_MODE               | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| DNC\_EVT\_PROGRAM             | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| DNC\_ERROR\_CLASS             | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| IJHProgramPosition            | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| GetOverrideInfo               | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| RUNINFO\_AXES\_POSITION       | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| RUNINFO\_CUTTER\_LOCATION     | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| RUNINFO\_TOOL                 | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| RUNINFO\_NC\_UPTIME           | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| RUNINFO\_MACHINE\_UPTIME      | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| RUNINFO\_MACHINE\_RUNNINGTIME | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| MachineParameter              | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| PLC\_SYMBOLIC                 | custom                                                                                                                      | R/O             | D                  | 0               | 0               |
| IJHTool                       | custom                                                                                                                      | R/O             | DDDD               | 0               | 9999            |
| FILE                          | string                                                                                                                      | R/W             | D                  | 0               | 0               |

:::hint{type="info"}
**Note:** For FILE register, make sure syntax used in the inject node for write is accurate. The value you read in flows for FILE register is the same value you inject for write to work as expected.
:::

## Tag parameters

- **Name**: Select a register name from the drop-down list. The available options depend on the names in the register table.
- **Value Type**: Select a data type from the drop-down list. The available options depend on the register name selected.
- **Address**: Enter the register address in decimal format, within the min and max range in the register table. Omit leading zeros.
- **Count**: For array value types only (such as `bool[]` or `int16[]`). Enter the number of elements to read, from `1` to `1024`. The driver reads a large count in several requests. Default value `1`.
- **Sheet** (Optional): For `MachineParameter`, `PLC_SYMBOLIC`, and `FILE` only. Enter the machine parameter name, the PLC symbolic path, or the file path on the control.
- **PollingInterval**: Enter how often the tag polls for data, in seconds. Enter `0` to disable polling. Default value `1`
- **Tag Name**: Enter a name for the tag.
- **Description** (Optional): Enter a description for the tag.
- **Tag Formula**: Enter a formula for the tag to process the generated data. You can use two variables: `value` (current tag value) and `timestamp` (current tag UNIX time in milliseconds). The following math functions are available:
  - sin
  - cos
  - sqrt
  - tan
  - power: power(`x`) performs the operation `10^x`.
  - log: log(`x`) is the natural logarithm (the logarithm is in base `e`).
  - exp: exp(`x`) performs the operation `e^x`.
- **Only Publish on Change of Value**: Select the checkbox to publish NATS messages only when the *value* parameter changes. *Change of Value* only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics are not affected by *Change of Value* settings, and still receive a single message.
- **Meta Data**: Define key-value pairs to add to the device output payload.

:::hint{type="info"}
**Note:** If you use special characters in metadata key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a\*\*b and a&\&b creates only one key name (a\_\_b).
:::

