# EtherNet/IP

EtherNet/IP is an industrial network protocol that adapts the Common Industrial Protocol to standard Ethernet. EtherNet/IP is one of the leading industrial protocols in the United States and is widely used in a range of industries including factory, hybrid and process.

[Connection Properties](https://docs.cybus.io/2-0-6/documentation/industry-protocol-details/ethernet-ip/ethernetipconnection)

[Endpoint Properties](https://docs.cybus.io/2-0-6/documentation/industry-protocol-details/ethernet-ip/ethernetipendpoint)

### Input Format on Write

When writing data, a JSON object with the following structure should be sent to a write Endpoint (`/set`):

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'value': '<value>' }
```

{% endcode %}

### Output Format on Write

When writing data, the result of the operation will be published to a `/res` topic with the following structure:

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'timestamp': '<msSinceEpoch>', 'result': '<result>' }
```

{% endcode %}

### Output Format on Read

When data is read from a read Endpoint (`/req`) the following JSON is returned as a response in a `/res` topic:

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'timestamp': '<msSinceEpoch>', 'value': '<value>' }
```

{% endcode %}

### Output Format on Subscribe

When data is read by means of a subscription Endpoint, the following JSON is returned as response:

{% code lineNumbers="true" %}

```yaml
{ 'id': '<correlation id>', 'timestamp': '<msSinceEpoch>', 'oldValue': '<old value>', 'value': '<value>' }
```

{% endcode %}

## Service Commissioning File Example

{% file src="<https://639096190-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfDpOJO2upcq5EpoSahvK%2Fuploads%2Fgit-blob-1efc6457e68ca07e41783c36ffb280c7b5dfa6c4%2FethernetIp-example.yml?alt=media>" %}

{% code title="ethernetIp-example.yml" lineNumbers="true" %}

```yaml
description: >
  Sample EtherNet/IP service commissioning file

metadata:
  name: Sample EtherNet/IP service
  icon: https://www.cybus.io/wp-content/uploads/2017/10/for-whom1.svg
  provider: cybus
  homepage: https://www.cybus.io
  version: 1.0.0

parameters:
  host:
    type: string
    default: 127.0.0.1
  initialReconnectDelay:
    type: integer
    default: 1000
  maxReconnectDelay:
    type: integer
    default: 30000
  factorReconnectDelay:
    type: integer
    default: 2

resources:
  ethernetIpConnection:
    type: Cybus::Connection
    properties:
      protocol: EthernetIp
      connection:
        host: !ref host
        connectionStrategy:
          initialDelay: !ref initialReconnectDelay
          maxDelay: !ref maxReconnectDelay
          incrementFactor: !ref factorReconnectDelay

  sampleSubscription:
    type: Cybus::Endpoint
    properties:
      protocol: EthernetIp
      connection: !ref ethernetIpConnection
      subscribe:
        tagName: dn_count
        programName: SimulationMain

  sampleRead:
    type: Cybus::Endpoint
    properties:
      protocol: EthernetIp
      connection: !ref ethernetIpConnection
      subscribe:
        tagName: dn_count
        programName: SimulationMain

  sampleWrite:
    type: Cybus::Endpoint
    properties:
      protocol: EthernetIp
      connection: !ref ethernetIpConnection
      subscribe:
        tagName: dn_count
        programName: SimulationMain
        tagType: DINT
```

{% endcode %}
