---
title: "Creating an EtherNet/IP Tag"
description: "Configure tags for Logix controllers and Generic CIP devices"
source_url: https://ai-ops.com/docs/tags/creating-ethernet-ip
---

# Creating an EtherNet/IP Tag

After [creating a tag](https://ai-ops.com/docs/tags/creating-getting-started.md) on an EtherNet/IP device, you need to configure the protocol fields that tell Koios which data point to read or write. The fields you see depend on whether the parent device is a **Logix Controller** or a **Generic CIP** device.

You can configure these fields during creation or afterwards on the tag's **Configuration** tab.

## Logix Controller Tags

Logix tags are identified by their name in the controller's tag database. Koios reads and writes tags directly using CIP tag-based addressing.

> [!TIP] Use the tag browser
> On the Configuration tab, click **Browse** to connect to the Logix controller and view its tag database. Select a tag to auto-populate both fields below.

### Logix Tag Name

The full name of the tag as it appears in the controller's tag database.

- **Required**
- Must match the tag name in the controller exactly (case-sensitive)
- Supports structured tag paths for accessing members of UDTs (User-Defined Types) and arrays
- Examples: `SupplyTemp`, `AHU_3.DamperPosition`, `Temperatures[0]`
- Use dot notation for UDT members (e.g. `MyUDT.Temperature`) and bracket notation for arrays (e.g. `Readings[5]`)

### Tag Type

The data type of the Logix tag.

| Type | Description |
|------|-------------|
| **Integer** | Whole number values (DINT, INT, SINT in the controller) |
| **Real** | Floating-point values (REAL in the controller) |
| **Boolean** | True/false values (BOOL in the controller) |
| **String** | Text values (STRING in the controller) |

- **Required**

### Using the Logix Tag Browser

The Logix tag browser connects to the controller and displays its tag database.

1. Open the tag's **Configuration** tab and click **Browse**
2. The browser lists all tags available in the controller
3. Navigate through the tag hierarchy — programs, UDTs, and arrays are expandable
4. Use the scope toggle to switch between controller-scoped and program-scoped tags
5. Select the tag you want — the **Tag Name** and **Tag Type** are auto-populated
6. Click **Apply** to save the selection

The device must be powered on and reachable on the network to browse, but it does not need to be enabled in Koios.

## Generic CIP Tags

Generic CIP tags read data from **assembly instances** — blocks of binary data exposed by CIP-compliant devices. Each tag maps to a specific byte offset and data type within an assembly.

> [!TIP] Use the EDS browser
> If the device has an EDS file uploaded, click **Browse EDS** on the Configuration tab to see a structured view of the device's assemblies and fields. Select a field to auto-populate all four fields below.

### Assembly Instance

The CIP assembly instance number that contains the data point.

- **Required**
- Range: 0 to 65535
- Common values: 100, 101, 106 (varies by device)

Assembly instances are defined by the device manufacturer. Refer to the device's documentation or EDS file for the correct instance numbers.

### Byte Offset

The byte position within the assembly where this data point starts (zero-indexed).

- **Required**
- Minimum: 0

The offset depends on the layout of the assembly data. Fields at the beginning of the assembly start at offset 0, and subsequent fields follow based on the size of earlier fields.

### Data Type

The data type used to interpret the bytes at the specified offset.

| Type | Size | Description |
|------|------|-------------|
| **INT8** | 1 byte | Signed 8-bit integer (-128 to 127) |
| **UINT8** | 1 byte | Unsigned 8-bit integer (0 to 255) |
| **INT16** | 2 bytes | Signed 16-bit integer |
| **UINT16** | 2 bytes | Unsigned 16-bit integer |
| **INT32** | 4 bytes | Signed 32-bit integer |
| **UINT32** | 4 bytes | Unsigned 32-bit integer |
| **FLOAT32** | 4 bytes | 32-bit floating-point number |
| **FLOAT64** | 8 bytes | 64-bit floating-point number |
| **BOOL** | 1 bit | Boolean extracted from a byte (requires Bit Number) |

- **Required**

All multi-byte values use little-endian byte order, which is standard for CIP devices.

### Bit Number

When the data type is set to **BOOL**, this field specifies which bit within the byte at the given offset to read.

- Range: 0 to 7 (bit 0 is the least significant bit)
- **Required** when data type is BOOL

### Using the EDS Browser

If the parent device has an EDS file uploaded, you can browse the device's assemblies and fields instead of entering values manually.

1. Open the tag's **Configuration** tab and click **Browse EDS**
2. The browser shows the device's assemblies parsed from the EDS file
3. Expand an assembly to see its individual fields
4. Select a field — the **Assembly Instance**, **Byte Offset**, and **Data Type** are auto-populated
5. Review the values and click **Save**

The EDS browser reads from the uploaded file, not from the device — you can browse even when the device is offline. If no EDS file is uploaded, the Browse EDS button won't appear; you can still configure tags manually or upload an EDS file from the [device's Configuration tab](https://ai-ops.com/docs/devices/creating-ethernet-ip.md#generic-cip-configuration).

## After Configuration

1. **Save** the tag configuration
2. **Test the tag** — click `Test` to verify Koios can read a value from the device (see [Testing a Tag](https://ai-ops.com/docs/tags/troubleshooting.md#testing-a-tag))
3. **Enable the tag** — flip the enable switch to start collecting data

> [!TIP] Enable the device first
> Tags only collect data when their parent device is also enabled and running.
