Socket Programming
Socket Programming
Original Instructions
Topic Page
Added ControlLogix® 5580 controllers, GuardLogix® 5580 controllers,
CompactLogix™ 5380 controllers, Compact GuardLogix 5380 controllers, Throughout
Compact GuardLogix 5370 controllers, CompactLogix 5480 controllers,
Added Disable the Socket Object With a MSG Instruction. 18
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
Additional Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Chapter 1
Socket Interface Architecture Socket Interface Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Number and Type of Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Typical Sequence of Transactions for a TCP Client . . . . . . . . . . 10
Typical Sequence of Transactions for a TCP Server. . . . . . . . . . . 11
Typical Sequence of Transactions for UDP without
OpenConnection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Typical Sequence of Transactions for UDP with
OpenConnection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Communicate with the Socket Object Via a MSG Instruction . . . . 14
Service Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
MSG Instruction Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Socket Instance Timeouts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Disable the Socket Object With a MSG Instruction . . . . . . . . . . . . . . 18
Programming Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
TCP Connection Loss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ControlLogix Enhanced Redundancy . . . . . . . . . . . . . . . . . . . . . . . 20
EtherNet/IP Module Reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Change Controller Mode between Run and Program . . . . . . . . . 22
Application Messages and TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Application Messages and Inhibited Modules . . . . . . . . . . . . . . . . 23
Partial Reads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Partial Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Performance Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Chapter 2
Socket Object Services Socket Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
MSG Source Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
MSG Source Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
MSG Destination Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
OpenConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
MSG Source Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
MSG Source Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
MSG Destination Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
AcceptConnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
MSG Source Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
MSG Source Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
MSG Destination Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ReadSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Chapter 3
Socket Attributes Access Socket Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Socket Class Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Socket Instance Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Chapter 4
Troubleshoot Socket Applications Diagnostic Webpages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Debugging Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Error Codes for Socket Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Knowledgebase Articles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
This publication describes the socket interface that you can use to program
MSG instructions to communicate between a Logix 5000™ controller via an
EtherNet/IP™ module and Ethernet devices that do not support the
EtherNet/IP application protocol, such as barcode scanners, RFID readers, or
other standard Ethernet devices.
Additional Resources These documents contain additional information concerning related products
from Rockwell Automation.
Resource Description
Ethernet Design Considerations Reference Manual, Provides a general description of the EtherNet/IP protocol
publication ENET-RM002 and how to use an EtherNet/IP network.
Embedded Switch Technology Reference Architectures Provides design recommendations for connecting device-
Reference Manual, publication ENET-RM003 level topologies to larger, switch networks comprised of
Layer 2 access switches.
EtherNet/IP Network Devices User Manual, publication Describes how you can use EtherNet/IP communication
ENET-UM006 modules with your Logix 5000 controller and
communicate with various devices on the Ethernet
network.
Industrial Automation Wiring and Grounding Provides general guidelines for installing a Rockwell
Guidelines, publication 1770-4.1 Automation industrial system.
Product Certifications website rok.auto/certifications. Provides declarations of conformity, certificates, and
other certification details.
Notes:
Topic Page
Socket Interface Architecture 8
Communicate with the Socket Object Via a MSG Instruction 14
Service Timeouts 16
MSG Instruction Timeouts 16
Socket Instance Timeouts 17
Disable the Socket Object With a MSG Instruction 18
Programming Considerations 20
Performance Considerations 25
Before you use the socket interface, make sure that you are familiar with these
concepts:
• Basic TCP/IP, UDP, and socket programming concepts
• How to write socket programs in a programming language, such as C or
Visual Basic
• How to use diagnostic tools, such as a network sniffer
• The application protocols of the devices and applications with which
the Logix 5000 controller communicates
• How to write ladder logic or Structured Text for a Logix 5000 controller
Socket Interface Architecture The socket interface is implemented via the socket object in the EtherNet/IP
module. Logix 5000 controller programs communicate with the socket object
via MSG instructions. MSG requests to the socket object are similar to socket
API calls in most computer operating systems. The socket object services let
you open connections, accept incoming connections, send data, and receive
data.
These options are available for UDP and TCP send and receive services.
You must have a listen socket for each TCP port number that accepts
connections. Multiple TCP server sockets can share a listen socket if the
connections are made to the same port number.
You can partition the available socket instances between UDP and TCP
sockets in these ways:
• Use all instances for client TCP connections.
• Use one instance to listen for incoming TCP connections and then
accept the remaining connections from other devices.
• Perform both TCP client and server operations.
• Perform both TCP and UDP operations.
Once you open a connection on a client socket instance, you cannot use the
same socket instance to accept incoming connections. Similarly, if you accept
connections on a socket instance, you cannot then use the instance to open
outgoing connections. This behavior is consistent with standard socket API
behavior.
This example shows the Logix 5000 controller sending data to a device, and
then the device sending a response. This sequence of transactions is typical.
Depending on the application protocol, the device could instead initiate
sending data to the Logix 5000 controller once the connection is open.
Create Socket
OpenConnection Response
Data = abc
Receive Data
Write Response
The response is returned to the controller as
soon as the data is sent.
Read
Send Data
Data = xyz
Read Response Data = xyz
Create Socket
Port = 49100
AcceptConnection
Open TCP Connection Open Connection
Port=49100
Read
Read Response
Data = abc
Write
Data = xyz
Data = xyz
Receive Data
Write Response
This example shows the Logix 5000 controller sending data to a device, and
then the device sending a response. This sequence of transactions is atypical.
Depending on the application protocol, the device could instead initiate
sending data to the Logix 5000 controller. Also, each Write transaction does
not require an application response or acknowledgment. The application
protocol determines the exact sequence of application transactions.
Create Socket
Port=49100
Write
192.168.1.11?Port=49200
Data = abc
Data = abc
Receive Data from Port 49200
Write Response The response is returned to the controller as
soon as the data is sent.
Read
Data = xyz Send Data to
192.168.1.10, Port 49100
Read Response
192.168.1.11?Port=49200
Data = xyz
Create Socket
Port=49100
Open Connection
192.168.1.11?Port=49200
Write
Data = abc
Data = abc
Receive Data from Port 49200
Write Response The response is returned to the controller as
soon as the data is sent. Send Data To
192.168.1.10, Port 49100
Read
Data = xyz
Read Response
192.168.1.11?Port=49200
Data = xyz
Communicate with the In a Logix 5000 controller program, use a CIP™ Generic MSG instruction to
request socket services.
Socket Object Via a MSG
Instruction IMPORTANT The MSG instruction must be sent to the EtherNet/IP module via backplane.
IMPORTANT If you are using the front Ethernet port on a controller, you must use
unconnected MSG instructions.
The maximum amount of data you can send or receive depends on how you
configure the MSG instruction, as shown in Table 3. The size of the data
excludes the parameters in the ReadSocket and WriteSocket services.
Table 3 - Maximum Packet Sizes
Service Unconnected Size Standard Connection Size Large Connection Size
ReadSocket 484 bytes 484 bytes 3984 bytes
WriteSocket 462 bytes 472 bytes 3972 bytes
If a MSG requests more than the maximum packet size (standard or large), the
module can return a failure status and the MSG instruction can set the .ER bit:
• For TCP sockets, if the application data is larger than the maximum size,
you can issue multiple ReadSocket or WriteSocket services to receive or
send the entire application message.
• For UDP sockets, the size of application data cannot exceed the
maximum sizes for the ReadSocket and WriteSocket services.
Service Timeouts You must specify a timeout parameter in milliseconds for any service that does
not always complete immediately, such as OpenConnection,
AcceptConnection, ReadSocket, and WriteSocket services. The timeout tells
the socket object the maximum amount of time to wait when attempting to
complete the service. While waiting for the service to complete, the MSG
instruction is enabled.
If the requested service does not complete before the timeout period expires,
the socket object returns a response to the service request. See the service
descriptions in Chapter 2 for the content of the response.
IMPORTANT Make the value of the service timeout parameter is shorter than the MSG
instruction timeout. Otherwise, application data could be lost.
MSG Instruction Timeouts The default MSG instruction timeout is 30 seconds. The maximum MSG
timeout is approximately 35 minutes. Specify the MSG instruction timeout by
setting the appropriate member of the MSG tag:
• If the MSG is unconnected, set the UnconnectedTimeout member.
• If the MSG is connected, set the ConnectionRate and
TimeoutMultiplier member.
Socket Instance Timeouts Each socket instance has an inactivity timeout with a default of 5 minutes. If a
socket instance receives no service requests for the amount of time that is
specified by the inactivity timeout, the socket instance is deleted. If you then
try to use the socket instance, the MSG instruction receives the error class or
instance not supported.
You can change the timeout by setting the inactivity time-out attribute via the
Set Attribute service. See Socket Instance Attributes on page 47.
If you put the controller in Program mode and then back into Run mode
before existing socket instances time out, you can receive errors when the
program tries to create socket instances. Eventually the socket instances time
out and you can create more instances.
IMPORTANT Make sure that the inactivity timeout is longer than the longest interval
between socket operations. If the inactivity timeout is too short, socket
instances can time out and result in MSG instruction errors.
Disable the Socket Object The socket object is enabled by default. You can use a CIP Generic MSG
instruction to disable the socket object.
With a MSG Instruction
After you disable the socket object:
• All object-specific services and all instance attributes are unavailable for
writing and reading. The Object Enable attribute is read-only.
• TCP/IP Socket Object is disabled, and a factory reset is needed to
enable it again.
•
IMPORTANT The MSG instruction must be sent to the EtherNet/IP module via backplane.
IMPORTANT If you are using the front Ethernet port on a controller, you must use
unconnected MSG instructions.
Your application program detects the loss of TCP connections and handles
those events appropriately. You can detect connection loss when one of the
following occurs:
• The ReadSocket service returns with an error.
• The WriteSocket service returns an extended error code other than
16#0000_0046. See Error Codes for Socket Services on page 51.
IMPORTANT User code must manage messages so that only one message to a socket
instance is active at a time. For example, the read and write socket
instructions for a given socket should be interlocked so that only one
executes at a time. This is on a per socket basis.
IMPORTANT Socket instances that are created in EtherNet/IP modules are not
crossloaded in an enhanced redundancy system.
If you create socket instances while MSG instructions are still using the old
instance numbers, the new instance numbers can match the old instance
numbers. In this situation, your old MSG instructions can succeed but could
not be communicating with the correct remote device.
Handle this situation by monitoring the status of the EtherNet/IP module via a
GSV instruction. If you lose communication with the EtherNet/IP module,
the Logix 5000 program reinitializes its socket communication.
If the Logix 5000 controller transitions from Run mode to Program mode
while socket requests are active, the transition does not complete until all
outstanding MSG requests complete or time out. If you have long time-out
values, you can experience an unexpectedly long time for the Run-to-Program
transition to complete.
If the controller transitions from Run mode to Program mode, then back to
Run mode again, previous socket instances can still exist on the EtherNet/IP
module. The previous socket instances time out eventually. Depending on the
number of sockets you need, your program can encounter errors during Run-
Program-Run transitions because all available socket instances are in use.
1. Wait for all socket instances to time out before putting the controller in
Run mode.
2. When the Logix 5000 program starts, use the DeleteAllSockets service
to delete any previous instances.
The DeleteAllSockets service deletes all socket instances, not just those
instances that are created by the controller that calls the service.
Partial Reads
It is possible for a read service to return a BufLen that is less than the requested
amount of data. For example, your program can request 100 bytes of data.
Because TCP is a byte stream and not a datagram protocol, you can receive less
than 100 bytes when the read service returns.
When issuing multiple read requests, be careful to adjust the destination tag
that receives the data so that data is not overwritten.
If the read request times out before any data is received, a BufLen of 0 is
returned with success (0) status.
ReadResponse.BufLen);
MSG (ReadMSG0);
end_if;
Partial Writes
If the write service is not able to send the requested data, your program issues
subsequent writes to send the remaining data. Your program also adjusts the
source tag, so that old data is not sent.
if (WriteMSG0.ER) then
/* need to issue another write, with the data that was not
sent */
WriteMSG0.REQ_LEN := 4 + 12 + WriteParams.BufLen;
MSG (WriteMSG0);
end_if;
end_if;
Performance Considerations The socket interface enables a Logix 5000 controller to communicate via an
EtherNet/IP module with Ethernet devices that do not support the
EtherNet/IP application protocol, such as barcode scanners, RFID readers, or
other standard Ethernet devices. The socket interface, via messaging, is not well
suited for real-time control as communication with this method is not
scheduled or deterministic.
There are various factors that can affect the performance of the socket
interface. For examples of some of the factors to consider, see the
Knowledgebase Article 1756-EWEB Performance.
Notes:
Topic Page
Socket Create 28
OpenConnection 30
AcceptConnection 32
ReadSocket 34
WriteSocket 36
DeleteSocket 38
DeleteAllSockets 39
ClearLog 40
JoinMulticastAddress 41
DropMulticastAddress 42
For a socket object, application data has no inherent byte order. The service
receives data in the same byte order as it is sent. However, Logix 5000™
controllers store data in CIP™ byte order (little-endian). For example, if you
issue a write service with one DINT, that DINT is sent over a TCP connection
or in a UDP datagram in CIP byte order. If you issue a read service and your
destination tag for the response contains a DINT, the Logix 5000 controller
assumes that the incoming data is in CIP byte order. Depending on the native
byte order of the application that you are communicating with, you may need
to convert the byte order in your Logix 5000 program or in the application.
With RSLogix 5000® software, version 15 and earlier, choose Custom from the
Service Type pull-down menu and manually complete the Service Code and
Class fields.
Socket Create The Socket Create service creates an instance of the socket object. The service
returns an instance number that you use in the subsequent socket operations.
Call the Socket Create service with instance 0 (Socket object class).
Parameter Value
Service Type Socket Create
Service Code 4b
Class 342
Instance 0
Attribute 0
Choose a tag with a user-defined data type. Use the information in Table 6 to
define the data type.
Specify the size of the user-defined structure for the source element. In this
example, CreateParams is 12 bytes.
The MSG instruction returns the instance number of the socket it created to
the destination element. Specify a DINT tag.
Considerations
Use the instance that is returned by the Socket Create service on subsequent
service requests.
Use a MOV instruction to move the instance to another MSG tag (the
.Instance field).
If you use a local port number that is already in use by the EtherNet/IP™
module, you receive extended error code 16#0000_0030. Avoid using
commonly used ports.
Choose a tag with a user-defined data type. Use the information in Table 7 to
define the data type.
.
The MSG instruction that issues the OpenConnection service has a source
length of 8 (Timeout + AddrLen) plus the number of characters in the
destination address.
Not used. The MSG instruction does not return any data.
Considerations
In some cases, the OpenConnection service can return before the timeout
period without creating a TCP connection. For example, if the destination
device is running, but is not listening for connections on the specified port
number, the OpenConnection service returns with an error before the timeout
period.
For UDP, the information you must specify depends on whether you use the
OpenConnection service:
• If you use the OpenConnection service, you do not have to specify the
IP address and port number each time you send data. If you do not
specify an IP address and port number, you can receive data only from
the previously specified IP address and port number until you call the
OpenConnection service to specify another IP address and port
number.
• If you do not use the OpenConnection service, you must specify the
destination address each time you call the WriteSocket service to send
data. When you call the ReadSocket service, you receive the data and the
address of the sender. You can then use the address of the sender to send
a response via the WriteSocket service.
Choose a tag with a user-defined data type. Use the information in Table 8 to
define the data type.
Considerations
Create a separate socket instance by using the Socket Create service for each
port number that accepts connections. After you create socket instances, call
the AcceptConnection service to wait for an incoming connection request.
You can accept connections on the same port number. Each call to the
AcceptConnection service returns a different instance number to use when
reading and writing data.
ReadSocket The ReadSocket service reads data on a socket. You specify the number of bytes
to receive. The service returns the number of bytes received.
For TCP, the ReadSocket service returns when any data is received, up to the
requested number of bytes. If no data is received before the timeout period, the
service returns a status of success by setting a message instruction Done Bit
(.DN) and a BufLen of 0. The service can return fewer bytes than were
requested. Your application may need to issue multiple read requests to receive
an entire application message.
Parameter Value
Service Type ReadSocket
Service Code 4d
Class 342
Instance See Instance
Attribute 0
Instance
This service uses the instance that is returned from the CreateConnection
service. However, when accepting a connection via the AcceptConnection
service, use the instance that is returned from this AcceptConnection service as
the ReadSocket instance.
WriteSocket The WriteSocket service sends data on a socket. You specify the number of
bytes to send. The service attempts to send the requested number of bytes and
returns the number of bytes sent.
Parameter Value
Service Type WriteSocket
Service Code 4e
Class 342
Instance See Instance
Attribute 0
Instance
This service uses the instance that is returned from the CreateConnection
service. However, when accepting a connection via the AcceptConnection
service, use the instance that is returned from this AcceptConnection service as
the WriteSocket instance.
Choose a tag with a user-defined data type. Use the information in Table 11 on
page 37 to define the data type.
The MSG instruction returns the number of bytes that were written. Choose a
DINT tag.
DeleteSocket The DeleteSocket service deletes a socket instance. For a TCP connection, the
DeleteSocket service also closes the connection before it deletes the instance.
Parameter Value
Service Type DeleteSocket
Service Code 4f
Class 342
Instance from Socket Create
Attribute 0
Specify 0 bytes.
Not used.
Considerations
Delete a socket instance if it is no longer needed. If unused instances are not
deleted and you continue to create additional instances, you can exceed the
maximum number of instances.
DeleteAllSockets The DeleteAllSockets service deletes all currently created socket instances. For
TCP, the DeleteAllSockets service also closes all connections before it deletes
the instances.
Not used.
Not used.
Considerations
IMPORTANT Be careful when using the DeleteAllSockets service when there are multiple
controllers using the socket interface of the EtherNet/IP module. The service
deletes all socket instances that are created by all controllers, not just the
controller that calls the service.
Use the DeleteAllSockets service as the first operation when the program first
begins to operate.
ClearLog The ClearLog service clears the debug log on the TCP/IP Socket Object
webpage. This service does not change the logging options.
IMPORTANT The TCP/IP Socket Object webpage is not visible on ControlLogix 5580,
GuardLogix 5580, CompactLogix 5380, Compact GuardLogix 5380, and
CompactLogix 5480 controllers.
Choose Custom for the service type. ClearLog is not an available option from
the Service Type pull-down menu.
Parameter Value
Service Type Custom
Service Code 52
Class 342
Instance 0
Attribute 0
Not used.
Not used.
JoinMulticastAddress Joining a multicast group lets a socket receive multicast data. When a join is
executed, it sends an IGMP membership packet and enables the hardware
filters to receive the multicast data. A specific address can be joined only once.
Subsequent joins receive an error message until the multicast address is
dropped. Multicast joins are system wide. Two sockets cannot join the same
multicast address simultaneously. When the socket that the join was executed
on is deleted, the multicast address is dropped. Each socket can join one or
more multicast groups.
Specify 8 bytes.
DropMulticastAddress Dropping a multicast address disables a socket from receiving multicast data.
When a drop is executed, it sends an IGMP leave group packet and disables the
hardware filters from receiving the multicast data.
Choose a tag with a user-defined data type. Use the information in Table 13 on
page 43 to define the data type.
Specify 8 bytes.
Not used.
Notes:
Socket Attributes
Topic Page
Access Socket Attributes 45
Socket Class Attributes 46
Socket Instance Attributes 47
Access Socket Attributes You access socket attributes by configuring a CIP™ Generic MSG instruction to
get or set the specific attribute:
• To get a socket value, choose Get Attribute Single from the Service Type
pull-down menu.
Some socket attributes apply to all sockets, and some apply to specific socket
instances:
• For information about all sockets, type 0 in the Instance field. See Socket
Class Attributes.
• For information about a specific socket instance, type the specific socket
instance number in the Instance field. A Socket Create or
AcceptConnection service returns the instance number. See Socket
Instance Attributes on page 47.
Socket Class Attributes Class attributes apply to the socket object, not to specific socket instances.
When you get or set a Class attribute, set the instance to 0
(1) The Socket Object webpage is not visible on ControlLogix® 5580, GuardLogix® 5580, CompactLogix™ 5380, Compact GuardLogix
5380, and CompactLogix 5480 controllers.
If you use the Get Attributes All service to get class attributes, the response
contains all class attributes in Table 14 in the order shown with a total size of
10 bytes.
If you use the Set Attributes All service to set class attributes, the request
contains only the Log Enable class attribute.
Socket Instance Attributes The socket object provides a number of instance attributes that apply to
specific socket instances. To get or set an instance attribute, specify a valid
instance number.
If you use the Get Attributes All service to get instance attributes, the response
contains all attributes in Table 15 in the order that is shown with a total size of
36 bytes.
If you use the Set Attributes All service, the request must include attributes 3,
4, 5, 6 and 7 in that order with a total size of 20 bytes.
Notes:
Topic Page
Diagnostic Webpages 49
Error Codes for Socket Services 51
Knowledgebase Articles 52
Diagnostic Webpages To help debug and troubleshoot applications, the socket interface provides a set
of webpages:
Webpage Description
Socket Object Diagnostics Displays information about each instance:
• Instance number
• Socket type—client, server, or listen
• Local and remote ports and IP addresses
• Send and receive buffer sizes
• Socket up time and inactivity time
• Socket state and last error state
Socket Object Attributes Displays attribute settings for each instance
Socket Object Logs Displays a log of service requests with a maximum of 100 log entries:
• Service requests made to the socket object
• Parameters that are passed for each service request
• Whether the service request was a success or failure
You can enable or disable logging for some services by using the Log Enable class
attribute. See Socket Class Attributes on page 46.
Debugging Tips
Error Codes for If a socket object encounters an error with a service request, the following
occurs:
Socket Services
• Socket object returns an error code.
• MSG instruction sets the .ER bit.
• MSG instruction sets error codes in the Error (.ERR) and Extended
Error (.EXTERR) fields.
This table describes common error codes. For more a comprehensive list of
error codes, see the Knowledgebase Article Logic Sockets Services Error Codes.
A Ethernet sniffer 48
AcceptConnection service 30–31 EtherNet/IP module
access debug 48
reset 20
Knowledgebase 51
MSG configuration 25
socket attributes 43 I
application messages
instance attributes 45
TCP considerations 21
uninhibited module considerations 21 instance, socket 10
architecture, socket interface instruction, MSG
number and type of sockets 10, 11 socket attributes 43
overview 10 socket communication 16–18
TCP client transactions 12 timeouts 18
TCP server transactions 12 interface architecture 10
UDP communication 13–14
attributes
access via MSG instruction 43 J
socket class attributes 44 JoinMulticastAddress service 39–40
socket instance attributes 45
socket object 47
K
B Knowledgebase articles 51
broadcast 11
L
C listen socket, TCP 10
change Logix 5000 controller
controller mode 21 as TCP client 12
socket attribute value 43 as TCP server 12
class attributes 44 logs, socket object 47
ClearLog service 38
client socket, TCP 10 M
codes, error 49
maximum packet size 18
communication
messages
socket object 16–18
UDP 13–14 TCP considerations 21
connection loss 19 uninhibited module considerations 21
mode, controller 21
considerations, programming 19–23
module reset 20
controller mode 21
MSG configuration 25
ControlLogix enhanced redundancy 20
MSG instruction
crossload 20
debugging 48
socket attributes 43
D socket communication 16–18
timeouts 18
datagram 13, 22, 25, 32 multicast 11
debugging 47–51
DeleteAllSockets service 37
DeleteSocket service 36 O
diagnostic web pages 47 OpenConnection service
DropMulticastAddress service 40–41 about 28–29
dropped connection 19 debugging 48
E P
enhanced redundancy 20 packet size 18
error codes 49 partial reads 22
partial writes 22
Notes:
Technical Support Center Find help with how-to videos, FAQs, chat, user forums, and product notification updates. rok.auto/support
Knowledgebase Access Knowledgebase articles. rok.auto/knowledgebase
Local Technical Support Phone Numbers Locate the telephone number for your country. rok.auto/phonesupport
Literature Library Find installation instructions, manuals, brochures, and technical data publications. rok.auto/literature
Product Compatibility and Download Center Download firmware, associated files (such as AOP, EDS, and DTM), and access product rok.auto/pcdc
(PCDC) release notes.
Documentation Feedback
Your comments help us serve your documentation needs better. If you have any suggestions on how to improve our content, complete the
form at rok.auto/docfeedback.
Allen-Bradley, CompactLogix, ControlLogix, expanding human possibility, GuardLogix, Logix 5000, MicroLogix, Rockwell Automation, RSLogix 5000, and Studio 5000 Logix Designer, are
trademarks of Rockwell Automation, Inc.
CIP, ControlNet, and EtherNet/IP is a trademark of ODVA, Inc.
Trademarks not belonging to Rockwell Automation are property of their respective companies.
Rockwell Automation maintains current product environmental compliance information on its website at rok.auto/pec.
Rockwell Otomasyon Ticaret A.Ş. Kar Plaza İş Merkezi E Blok Kat:6 34752, İçerenköy, İstanbul, Tel: +90 (216) 5698400 EEE Yönetmeliğine Uygundur