To Duplex or Not to Duplex

To Duplex or Not to Duplex

Duplex is one of those communications terms that sounds more technical than it is. But even though it’s not one of the most technical subjects that have appeared in this forum, it can have a major impact on the performance of your EtherNet/IP control system.

Duplex is a communication system term for a system (not necessarily a control system) with two or more nodes that can communicate in both directions. In half-duplex, nodes transmit alternately: one node sends while all others listen; then another node sends while the first and all other nodes listen. In full-duplex systems, nodes can both send and receive messages simultaneously.

Most humans communicate in half-duplex. We are either listening or we are talking. In a group, there is usually just one speaker while all the others listen. Sometimes there is one speaker that holds the floor too much especially after a few adult beverages, but that is a different communication problem. Some humans have the ability to talk in a large group setting while listening to other nearby conversations simultaneously, but that is pretty rare. There is no communications system equivalent to that.

Prior to Ethernet, the earliest communication systems exclusively used half-duplex. Those early communication circuits were built from discrete transmit and receive parts, and early microprocessors had no ability to do both simultaneously.

Those early systems used a transmit line (Tx), a receiving line (Rx), and a ground to connect the two nodes. Both communication lines were referenced to ground, and that system became the standard we know as RS232.

Soon after that, the ability to connect multiple nodes was introduced (RS485 communications). But even though the processors could simultaneously send and receive using full-duplex, there really was no need in those simple early applications. All those primitive systems used half-duplex, master-slave communications where the master sent a message and one particular slave node received and processed it. The most popular half-duplex communication system in history, Modbus RTU, used this kind of communication.

Early Ethernet systems also used half-duplex communications. The first Ethernet networks implemented a shared media system with a single pair of wires. One device could talk, and all the other devices on the Ethernet network would listen. Message arbitration, the process of one device getting the bus to talk, was very crudely implemented in that era. Whoever wanted to the bus started talking. If two devices started talking, their messages were garbled on the bus. Both devices stopped, waited a random amount of time, and tried again. This became unworkable as the number of nodes and volume of messages increased.

When the Ethernet 10BaseT standard was introduced in the late 1980s, it was the first to offer two pairs of wires: one pair for transmitting and one pair for receiving. Systems now had to cope with a mixture of devices: two pair devices using full-duplex and single pair devices using half-duplex. The solution became for devices to test for full-duplex (auto-negotiation) and if the nodes were unable to communicate using full-duplex, to use half-duplex operation, mimicking the behavior of early Ethernet. Most Ethernet devices automatically set the duplex mode. Some provide an option to set the duplex to use full-duplex, half-duplex, or auto-negotiate.

The problem that our EtherNet/IP, Modbus TCP, and PROFINET IO networks have today is when that auto-negotiation system fails. Sometimes, because of the timing or signal levels after power on, auto-negotiation fails to negotiate to the best possible speed and full-duplex operation. You now have a situation where two devices (usually a switch and a device) in your control system are functioning at a reduced performance level. Even worse, you won’t know it. A lot of the inexpensive switches won’t trap and alarm on this problem. It’s even worse if this happens on a linear segment connecting a string of ten or twenty nodes. You have reduced performance for a whole set of devices.

The only solution to this problem is to buy switches and string devices together in a linear segment that can alarm on this kind of situation. Unfortunately, that isn’t always possible.

Duplex isn’t one of your more technical terms, but not understanding it can blind you to possible problems in your Ethernet control system.