Table of Contents

Overview

The EasyIP protocol was first defined by Beck IPC GmbH and is now used by many Festo products.

The protocol defines how computers and controllers can send and request data from other computers and controllers in TCP/IP networked environments based on UDP datagrams on port 995.

EasyIP is a point to point protocol where a client sends or requests data and a server acknowledges or responds. If the server cannot handle the data (block to big, wrong operand etc.) an error packet is send to the client.

An EasyIP controller is usually both client and server this makes the network multimaster. Client only devices could for example be diagnostic devices or visualization computers.

Because no logical connections are needed the number of clients / servers in a network has no theoretical limitation. The number of simultaneous packets send by a client or handled by a server have only limitations dictated by hardware performance or implementation limits.

Operand Types

The protocol supports 32 operand types, each with its own address range. Only ONE operand type access within one EasyIP packet is allowed but a block access of consecutive values / addresses is possible (exception: operand type STRING, only ONE string value / address within ONE EasyIP packet)

The maximum data payload size is limited to 256 values (standard size of one value is 16 bit) (exception: operand type STRING, max. value size: 512 bytes (characters))

Typecode Name
dec hex long short Address Range Access Type Access Mode Access
1 0×01 Flagword(Memoryword) FW/MW 0 … 9999 R, W s, b N, B
2 0×02 Input word IW 0 … 255 R(, W) s, b N, B
3 0×03 Output word OW 0 … 255 R, W s, b N, B
4 0×04 Register R 0 … 255 R, W s, b N, B
5 0×05 Timer (Preselect) TP 0 … 255 R, W s, b N, B
11 0x0B Strings STR 0 … 1023 R, W s N
32 0×20 Operand 32 O32 R, W s, b N, B

Address range limitation is ONLY for compatibility with other 3rd party hardware
R … Read
W … Write
s … single address
b … address block
N … normal
B … bit operation

EasyIP Packetlayout

Default

Every EasyIP packet uses the following header

Size in bytes Name
1 Flags Bit 0 information packet (request or response)
Bit 1-2 bit operations (value )
00 … normal
10 … AND
01 … OR
11 … XOR

Bit 6 do not respond
Bit 7 response packet

1 Error Only used in response packets
0 ... no error
1 ... operand type error
2 ... offset error
4 ... size error
16 ... no support
4 Counter Set by client, copied by server
1 Reserved Set to 0
1 Senddata type Type of operand, some types may not be available
2 Senddata size Number of words (bytes for string type)
one word equals 16 bit          
2 Senddata offset Target offset in server
1 Reserved Set to 0
1 Reqdata type Type of operand, some types may not be available
2 Reqdata size Number of words (bytes for string type)
2 Reqdata offset server Offset in server
2 Reqdata offset client Target offset in client

The header is followed by (optional) data in case of SEND or SEND + REQUEST

Size in bytes Name
N*2 Data Data send by client or requested data

Information packet response

When bit 0 in the flag byte is set the packet is an information packet.
The controller requesting information sets the information flag and the 4 byte counter, all other fields should be 0.
The controller receiving the request sets the information flag and the response flag, copies the counter and sets the reqdata size to 38 (= 76 bytes).

The following data in additon to the header is send back:

Size in bytes Name
2 Information type Type of information packet
1 ... packet with controller and operand info 
2 Controller type Type of controller:
1 ... FST
2 ... MWT
3 ... DOS
4 ... RTOS
5 ... CoDeSys
6 ... Festo SBOx
2 Controller revision high
2 Controller revision low
2 EasyIP revision high
2 EasyIP revision low
2 FW = Operand 1 number of supported addresses (16 bit values) in flagword address space
2 IW = Operand 2 number of supported addresses in input address space
2 OW = Operand 3 number of supported addresses in output address space
number of supported addresses
2 STR = Operand 11 number of supported strings, each string can have up to 512 characters
number of supported addresses
2 Operand 32 number of supported addresses

Communicaton Types

Data SEND

Copy data to server’s address space.

Normal flow to SEND data would be:

  1. Client sends data
  2. Server receives data
  3. Data handling
    • If data handled by server send acknowledge packet
      • Normal: Plain data copy to server’s address space
      • Bit operation:
        • AND (i.e. to reset bit 3, you would send AND with value 0xFFF7)
        • OR (i.e to set bit 2, you would send OR with value 4)
        • XOR
    • If data not handled by server send error packet
  4. Client receives answer

Data REQUEST

Fetch data from server.

Normal flow to REQUEST data would be:

  1. Client sends request packet
  2. Server receives request
  3. Data handling
    • If request handled by server send data packet
    • if request not handled by server send error packet
  4. Client receives answer

Data SEND+REQUEST

Copy data to server’s address space AND fetch data from server.

Normal flow to SEND + REQUEST data simultaneous would be:

  1. Client sends data + request packet
  2. Server receives data + request
  3. Data handling
    • If data not handled by server send error packet
    • If request handled by server send data packet
    • If request not handled by server send error packet
  4. Client receives answer

REQUEST INFORMATIONpacket

Fetch server’s information packet.

Endianess (Byte Order)

In computing, endianness is the byte (and sometimes bit) ordering in memory used to represent some kind of data. Typical cases are the order in which integer values are stored as bytes in computer memory (relative to a given memory addressing scheme) and the transmission order over a network or other medium. When specifically talking about bytes, endianness is also referred to simply as byte order.

The EasyIPprotocol uses a LITTLE ENDIAN mechanism.

Hexadecimal Value 0xA4B3C2D1
Memory Address 50 51 52 53
Offset (Index) 0 1 2 3
Little Endian D1 C2 B3 A4
Big Endian A4 B3 C2 D1