---
title: EtherNet/IP Client
description: Configure an EtherNet/IP client on the ControlCom Edge Server to read tags from Allen-Bradley and Omron PLCs into platform variables.
source: https://documentation.controlcomtech.com/build/edge-server/clients/ethernet-ip
---

# Reading EtherNet/IP Data with ControlCom Edge Server

An EtherNet/IP client connects the Edge Server to an Allen-Bradley or Omron PLC over CIP and reads named tags into platform variables. You configure it from the platform in the device's SDK Configuration editor; the Edge Server picks the configuration up on its next restart.

> **Workflow Stage: Collect**

## Prerequisites

The Edge Server must already be onboarded as a ControlCom Gateway. The [Edge Server getting started guide](https://documentation.controlcomtech.com/build/edge-server/getting-started) covers deployment and onboarding.

Each tag you read needs a variable on the gateway to receive it. Create those first (see [Creating a Variable](https://documentation.controlcomtech.com/build/edge-server/creating-a-variable)); you select each variable by its Topic Property Path when you add a tag below. The tag editor also has a **Create New Variable** button if you prefer to create them as you go.

## Creating an EtherNet/IP Client

1. Open **Devices** under **System** in the sidebar and select the onboarded gateway.
2. Open the **Edge Server** tab. The **SDK Configuration** editor opens on its **Clients** tab.
3. Click **Add Client** and choose **Ethernet/IP** in the **Add New Client** dialog.

The new client opens in a side panel and also appears as a card on the Clients tab; click the card to reopen it later. New clients start disabled.

![Edge Server Clients tab](https://documentation.controlcomtech.com/images/devices/edge-server-clients-screen.png)

*Edge Server tab with no clients yet. Click Add Client to begin*

![Add New Client dialog](https://documentation.controlcomtech.com/images/devices/edge-server-add-client-screen.png)

*Add New Client dialog with Modbus TCP, Modbus RTU, OPC UA, BACnet, and Ethernet/IP options*

The client panel has three tabs: **Connection**, **Settings** and **Tags**.

### Connection

1. Enter a **Client Name**.
2. Select the **PLC Type**: `ControlLogix` (the default), `CompactLogix`, `MicroLogix`, `Micro800`, `Micro850`, `PLC5`, `SLC500` or `Omron`.
3. Enter the **IP Address** of the PLC, such as `192.168.1.100`.
4. Enter the **Port**. Defaults to `44818`, the EtherNet/IP standard.
5. Enter the **Slot Number**, the backplane slot of the processor module. Use `0` for CompactLogix; for ControlLogix, use the slot the processor sits in.
6. Set the **Poll Interval (ms)**, how often each tag is read. Defaults to `1000`.
7. Set the **Timeout (seconds)**, how long to wait for a CIP response before the request is treated as failed. Defaults to `15`.
8. Turn on **Enabled**.

### Settings

The Settings tab holds maintenance actions: **Remove Client** deletes the client from this configuration, **Export Variables** downloads the tag list as a CSV for bulk editing, and **Import Client Variables** loads a tag list from a CSV.

### Tags

A tag is one value read from the PLC. Click **Add Tag**, then select the new entry in the list on the left. **Sort by Tag Path** keeps the list in alphabetical order.

On the **General** tab:

1. Enter the **Tag Path**, the symbolic name of the tag in the PLC program, such as `Tank_1.Temperature`, `Motor[3].Speed` or `Program:MainProgram.Counter`. UDT members and array elements are supported.
2. Select the **Data Type** that matches the PLC tag. Supported CIP types are `BOOL`; the signed integers `SINT`, `INT`, `DINT` and `LINT` (8 to 64 bits); the unsigned integers `USINT`, `UINT`, `UDINT` and `ULINT`; the floats `REAL` and `LREAL`; `STRING`; and the bit fields `BYTE`, `WORD` and `DWORD`.
3. Optionally set a **Count** to read a contiguous array of the chosen type starting at the tag path.
4. Select the **Topic Property Path**, which is the variable that receives the value. The tag's platform type (number, boolean or string) follows the selected variable.
5. Optionally select a **Write Variable** to let the platform write to this tag when a matching command is sent. The default is **No Write Allowed**.

On the **Scaling** tab (number tags only), **Scale** (defaults to `1`) multiplies the raw value, **Offset** (defaults to `0`) is added after scaling, and **Decimals** (defaults to `2`) rounds the result.

On the **Misc** tab, **Send if Stale After Milliseconds** forces a publish when the value has not changed in that time (defaults to `600000`, ten minutes), and **Deadband Percentage** (defaults to `5`, number tags only) suppresses changes smaller than that share of the previous value.

On the **Transforms** tab you can add [Value Transforms](https://documentation.controlcomtech.com/build/edge-server/data-processors#value-transforms) that rewrite the value before it is published.

## Saving

Click **Save Configuration** in the editor header, then confirm with **Save Configuration** in the **Save SDK configuration?** dialog. The configuration is stored on the platform; the gateway applies it on its next restart.

## Deployment

The Edge Server reads its configuration when it starts, so a restart is what puts the new client into service. There are two ways to trigger one.

From the platform, open the gateway's **Details** tab and click **Restart** in the **Send command** panel. The Edge Server restarts and reconnects with the new configuration. [Edge Server Management](https://documentation.controlcomtech.com/platform/devices/edge-server#sdk-commands) describes the full set of SDK commands.

On the gateway itself, restart the container as described in the [Edge Server getting started guide](https://documentation.controlcomtech.com/build/edge-server/getting-started).

![Restarting Device](https://documentation.controlcomtech.com/images/devices/device-details-page.png)

*The Details tab, with the Send command panel used to restart the Edge Server*
